1. 什么是优化算法?
在机器学习中优化算法(Optimization Algorithm) 的任务是找到模型参数(如权重、偏置等),使得损失函数(例如均方误差、交叉熵等)最小化。损失函数度量的是模型预测值与真实标签之间的误差。优化算法通过不断调整模型的参数,使损失函数达到全局或局部最小值。
在神经网络中,优化算法需要通过反向传播(Backpropagation)计算每个参数对损失函数的导数(即梯度),并根据这些梯度更新模型的参数。
2. 基于梯度的优化算法
这些算法是深度学习中最常用的优化方法,通过计算梯度来找到损失函数最小的方向。
a. 梯度下降(Gradient Descent)
梯度下降是最基本的优化算法,核心思想是:朝着使损失函数减少的方向更新参数,直到达到最小值。
- 更新规则:
θ = θ − α ⋅ ∇ θ J ( θ ) \theta = \theta - \alpha \cdot \nabla_\theta J(\theta) θ=θ−α⋅∇θJ(θ)
其中:- θ \theta θ 是模型的参数。
- α \alpha α 是学习率,控制每次更新的步长。
- ∇ θ J ( θ ) \nabla_\theta J(\theta) ∇θJ(θ) 是损失函数 J ( θ ) J(\theta) J(θ) 对参数 θ \theta θ 的梯度。
b. 随机梯度下降(Stochastic Gradient Descent, SGD)
梯度下降的一个问题是,当数据集很大时,计算所有样本的梯度会很耗时。随机梯度下降(SGD) 是对梯度下降的改进,每次迭代只使用一个数据点来计算梯度,从而大大加快了参数更新。
c. 小批量梯度下降(Mini-batch Gradient Descent)
这是梯度下降和随机梯度下降的折中版本。它通过对一小部分数据(称为mini-batch)进行梯度计算和更新,这样既加快了计算速度,又保持了一定的稳定性。
d. 动量法(Momentum)
SGD 更新参数时每次依赖于当前梯度的方向,但有时可能会在方向上震荡。动量法通过加入“动量”项,积累过去几次梯度的方向,使得优化算法能够更快速地朝着最优解的方向前进。
- 更新规则:
v t = β v t − 1 + α ∇ θ J ( θ ) v_t = \beta v_{t-1} + \alpha \nabla_\theta J(\theta) vt=βvt−1+α∇θJ(θ)
θ = θ − v t \theta = \theta - v_t θ=θ−v