梯度下降求最小值Python
时间: 2024-09-24 09:09:19 浏览: 45
梯度下降是一种优化算法,常用于机器学习和深度学习中,目的是找到函数的局部最小值。在Python中,我们可以利用numpy库或者直接在TensorFlow、PyTorch等深度学习框架中来实现梯度下降。
基本步骤如下:
1. **初始化**:选择一个初始点作为搜索起点。
2. **计算梯度**:对于目标函数,计算当前位置的梯度,即函数变化最快的方向。
3. **更新**:按照负梯度方向(因为我们要找的是最小值,所以走的是相反方向),做一定的步长更新当前点的位置。
4. **迭代**:重复以上过程,直到达到预设的停止条件,如达到特定次数的迭代、梯度大小小于某个阈值或损失函数变化很小。
在Python中,例如使用梯度下降求解线性回归模型的权重参数,可以这样做:
```python
import numpy as np
def gradient_descent(X, y, weights, learning_rate, num_iterations):
m = X.shape[0]
for _ in range(num_iterations):
predictions = np.dot(X, weights)
errors = predictions - y
gradients = (1/m) * np.dot(X.T, errors)
weights -= learning_rate * gradients
return weights
# 假设你有数据X, y, 初始权重weights=np.zeros(2),学习率learning_rate=0.01,迭代次数num_iterations=1000
```
阅读全文