- 梯度下降、随机梯度下降、小批量随机梯度下降
- 动量法
- Adagrad
- RMSProp
- Adadelta
- Adam
假设损失函数 f:Rn→R 是连续可导的, 且 x∈Rn, 对于给定绝对值足够小的数 ϵ,根据泰勒展开公式,我们得到以下的近似
f(x+ϵ)≈f(x)+ϵT∇xf(x).
这里 ∇xf(x) 是函数 f 在 x 处的梯度。我们可以找一个常数 η>0,使得 ∣∣η∇xf(x)∣∣ 足够小,那么可以将 ϵ 替换为 −η∇xf(x)得到
f(x−η∇xf(x))≈f(x)−η∣∣∇xf(x)∣∣2.
如果梯度的模 ∣∣∇xf(x)∣∣≠0,那么
f(x−η∇xf(x))≲f(x).
x←x−η∇xf(x))
便可能使得 f(x) 的值被降低来达到最小化损失函数的目的。假设我们有 m 个样本 D={(xi,yi)}im, 可以定义了一个损失函数 f(θ)=m1i=1∑m∣∣g(xi;θ)−yi∣∣2, 这里 g:Rn→Rc, 当 c=1 对应于回归任务, 当 c>1 对应于 c 分类任务. g 可以是一个神经网络模型, 也可以是一个简单的的线性映射。为了最小化 f(θ), 我们可以使用 SGD 优化方法:
- 设置学习率 η, 且初始化参数 θ
- 计算梯度 ∇f(θ)
- 更新参数 θ, 即 θ←θ−η∇f(θ)).
- 直至满足中止条件, 结束迭代, 获得最终的参数值 θ^.
当 m 很大时,批量梯度下降效率很低,在实际的应用中一般使用小批量梯度下降优化方法。学习率 η 对优化过程也十分重要,过大的学习率可能使得迭代无法收敛, 过小的学习率可能会导致训练速度过慢且陷入训练的平台期而无法获得理想的结果。