梯度与梯度下降python
时间: 2023-09-02 11:11:38 浏览: 84
梯度是函数在某一点处的导数(即斜率),它表示函数在该点处的变化率和方向。在机器学习中,我们通常需要最小化某个误差函数,而梯度下降是一种常用的优化算法,用于寻找误差函数的最小值。具体来说,梯度下降算法通过计算误差函数的梯度,并沿着梯度相反的方向不断更新模型参数,从而逐步逼近误差函数的最小值。
以下是使用Python实现梯度下降的示例代码:
```python
import numpy as np
# 定义误差函数
def loss_function(x, y, w):
y_pred = np.dot(x, w)
return np.mean(np.square(y - y_pred))
# 定义梯度函数
def gradient(x, y, w):
y_pred = np.dot(x, w)
grad = -2 * np.dot(x.T, y - y_pred) / len(x)
return grad
# 初始化参数
x = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([3, 7, 11])
w = np.array([0, 0])
# 设置学习率和迭代次数
learning_rate = 0.01
epochs = 1000
# 迭代更新参数
for i in range(epochs):
grad = gradient(x, y, w)
w -= learning_rate * grad
if i % 100 == 0:
loss = loss_function(x, y, w)
print('epoch %d, loss %.4f' % (i, loss))
print('w:', w)
```
在上述代码中,我们首先定义了误差函数和梯度函数,然后初始化模型参数、学习率和迭代次数。接着,在每次迭代中,我们计算当前模型参数的梯度,并根据学习率更新模型参数。最后,我们输出最终的模型参数。
阅读全文