added gradient_descent algorithm.