梯度下降 python
时间: 2023-10-13 14:25:55 浏览: 79
python实现梯度下降算法
梯度下降(Gradient Descent)是一种优化算法,可以用于优化模型参数,使得损失函数最小化。其核心思想是在每一次迭代中,通过计算损失函数对模型参数的梯度来更新参数值,以达到使损失函数最小化的目的。
下面是一个简单的梯度下降的Python代码示例:
```python
import numpy as np
# 定义损失函数
def loss_function(x):
return x**2 + 2*x + 1
# 定义梯度函数
def gradient_function(x):
return 2*x + 2
# 定义梯度下降函数
def gradient_descent(x, learning_rate, num_iterations):
for i in range(num_iterations):
gradient = gradient_function(x)
x = x - learning_rate * gradient
loss = loss_function(x)
print("Iteration {}: x = {}, loss = {}".format(i, x, loss))
return x
# 测试梯度下降函数
x = 10
learning_rate = 0.1
num_iterations = 20
result = gradient_descent(x, learning_rate, num_iterations)
print("Result: x = {}, loss = {}".format(result, loss_function(result)))
```
在上面的代码中,我们定义了一个简单的二次函数作为我们的损失函数,然后定义了其对应的梯度函数。接着,我们实现了梯度下降函数,其中x表示初始的模型参数,learning_rate表示学习率,num_iterations表示迭代次数。
最后,我们测试了梯度下降函数,并输出了优化后的模型参数以及对应的损失函数值。
需要注意的是,梯度下降算法的性能取决于学习率的选择和迭代次数的设定。如果学习率过大,可能会导致算法发散;如果学习率过小,可能会导致算法收敛速度过慢。因此,在实际应用中需要进行不同学习率和迭代次数的实验,以获得最优的梯度下降算法参数。
阅读全文