请结合代码示例来讲解梯度下降法的使用方法
时间: 2024-09-27 16:05:12 浏览: 29
梯度下降法是一种优化算法,广泛用于机器学习中的模型训练,特别是对于需要最小化成本函数的情况,如线性回归、神经网络等。它通过沿着目标函数曲面的负梯度方向不断迭代更新参数,逐渐找到全局最小值。
以简单的线性回归为例,假设我们有数据点 `(x_i, y_i)`,目标函数是预测值 `y` 与真实值 `yi` 的均方误差 (MSE):
\[ J(\theta) = \frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x_i) - y_i)^2 \]
其中,\( h_\theta(x) = \theta_0 + \theta_1x \),\( \theta = [\theta_0, \theta_1] \) 是我们要找的权重参数。
梯度下降的步骤如下:
```python
import numpy as np
# 初始化参数
theta = np.zeros(2)
learning_rate = 0.01
iterations = 1500
for i in range(iterations):
# 假设我们有一个X矩阵,每一行是一个特征向量
X = ... # [x_1, x_2, ..., x_m]
# 计算预测值
h = np.dot(X, theta)
# 计算损失函数的一阶导数,即梯度
gradient = (-1/m) * np.dot(X.T, (h - y))
# 更新参数
theta -= learning_rate * gradient
print("最终参数:", theta)
```
在这个过程中,每次迭代都会减小目标函数的梯度方向,直到达到收敛条件(例如梯度的绝对值小于某个阈值或达到最大迭代次数)。
阅读全文