【机器学习笔记Ⅰ】4 梯度下降

发布于:2025-07-08 ⋅ 阅读:(20) ⋅ 点赞:(0)

梯度下降(Gradient Descent)详解

梯度下降是机器学习中最核心的优化算法,用于通过迭代调整模型参数(如权重 ( w ) 和偏置 ( b )),最小化代价函数(如均方误差、交叉熵)。它的核心思想是:
“沿着代价函数梯度(导数)的反方向逐步更新参数,直到找到最小值。”


1. 核心概念

(1) 梯度(Gradient)

  • 数学意义:多元函数的偏导数向量,指向函数值上升最快的方向。
    • 例如,代价函数 ( J(w, b) ) 的梯度为 ( \nabla J = \left[ \frac{\partial J}{\partial w}, \frac{\partial J}{\partial b} \right] )。
  • 优化意义:梯度的反方向(( -\nabla J ))是函数值下降最快的方向。

(2) 参数更新公式


2. 梯度下降的步骤

  1. 初始化参数:随机设定初始值 ( w ) 和 ( b )。
  2. 计算梯度:在当前参数下计算代价函数的梯度。
  3. 更新参数:沿梯度反方向调整参数。
  4. 重复迭代:直到梯度接近零(收敛)或达到最大迭代次数。

3. 梯度下降的类型

(1) 批量梯度下降(Batch Gradient Descent)

  • 每次迭代使用全部训练数据计算梯度。
  • 优点:稳定收敛到全局最优(凸函数时)。
  • 缺点:计算慢,不适合大数据集。

(2) 随机梯度下降(Stochastic Gradient Descent, SGD)

  • 每次迭代随机选一个样本计算梯度。
  • 优点:速度快,适合在线学习。
  • 缺点:波动大,可能无法收敛到最优解。

(3) 小批量梯度下降(Mini-Batch Gradient Descent)

  • 折中方案:每次使用一小批(如32、64个)样本计算梯度。
  • 深度学习标配:平衡效率与稳定性。

4. 关键问题与调参

(1) 学习率 ( \alpha )的选择

  • 太大:可能跳过最优解(发散)。
  • 太小:收敛速度慢。
  • 自适应学习率:如Adam、Adagrad等优化算法动态调整 ( \alpha )。

(2) 局部最优 vs 全局最优

  • 凸函数(如线性回归):梯度下降总能找到全局最优。
  • 非凸函数(如神经网络):可能陷入局部最优,但实际中局部最优通常也能接受。

(3) 特征缩放

  • 如果特征量纲差异大(如年龄 vs 收入),需先归一化/标准化,否则梯度下降会震荡。

5. 代码示例(Python实现线性回归)

import numpy as np

# 生成数据
X = np.array([1, 2, 3, 4])  # 特征
y = np.array([2, 4, 6, 8])  # 目标值 (y = 2x)

# 初始化参数
w = 0.0  # 权重
b = 0.0  # 偏置
alpha = 0.01  # 学习率
epochs = 100  # 迭代次数

# 梯度下降
for epoch in range(epochs):
    # 计算预测值 y_pred = w * X + b
    y_pred = w * X + b
    
    # 计算梯度 (MSE的导数)
    dw = (2/len(X)) * np.sum((y_pred - y) * X)  # dJ/dw
    db = (2/len(X)) * np.sum(y_pred - y)         # dJ/db
    
    # 更新参数
    w = w - alpha * dw
    b = b - alpha * db
    
    # 打印损失
    if epoch % 10 == 0:
        loss = np.mean((y_pred - y)**2)
        print(f"Epoch {epoch}, Loss: {loss:.4f}, w: {w:.4f}, b: {b:.4f}")

# 输出最终参数
print(f"Final w: {w}, b: {b}")  # 应接近 w=2, b=0

6. 应用场景

  • 线性回归:最小化均方误差(MSE)。
  • 逻辑回归:最小化交叉熵损失。
  • 神经网络:反向传播(Backpropagation)的核心依赖梯度下降。

7. 总结

关键点 说明
目标 通过迭代优化参数,最小化代价函数。
核心公式 ( w_{\text{new}} = w_{\text{old}} - \alpha \cdot \frac{\partial J}{\partial w} )
学习率 ( \alpha ) 需谨慎选择,过大导致发散,过小导致收敛慢。
类型 批量(稳定但慢)、随机(快但波动)、小批量(平衡)。
注意事项 特征缩放、学习率调整、防止过拟合。