优化器总结
机器学习中,有很多优化方法来试图寻找模型的最优解。比如神经网络中可以采取最基本的梯度下降法。
梯度下降法(Gradient Descent)
梯度下降法是最基本的一类优化器,目前主要分为三种梯度下降法:标准梯度下降法(GD, Gradient Descent),随机梯度下降法(SGD, Stochastic Gradient Descent)及批量梯度下降法(BGD, Batch Gradient Descent)。
1. 标准梯度下降法(GD)
- 假设要学习训练的模型参数为 W W ,代价函数为
,则代价函数关于模型参数的偏导数即相关梯度为 ΔJ(W) Δ J ( W ) ,学习率为 ηt η t ,则使用梯度下降法更新参数为:
Wt+1=Wt−ηtΔJ(Wt) W t + 1 = W t − η t Δ J ( W t )其中, Wt W t 表示 t t 时刻的模型参数。
- 从表达式来看,模型参数的更新调整,与代价函数关于模型参数的梯度有关,即沿着梯度的方向不断减小模型参数,从而最小化代价函数。
- 基本策略可以理解为”在有限视距内寻找最快路径下山“,因此每走一步,参考当前位置最陡的方向(即梯度)进而迈出下一步。可以形象的表示为:

评价:标准梯度下降法主要有两个缺点:
- 训练速度慢:每走一步都要要计算调整下一步的方向,下山的速度变慢。在应用于大型数据集中,每输入一个样本都要更新一次参数,且每次迭代都要遍历所有的样本。会使得训练过程及其缓慢,需要花费很长时间才能得到收敛解。
- 容易陷入局部最优解:由于是在有限视距内寻找下山的反向。当陷入平坦的洼地,会误以为到达了山地的最低点,从而不会继续往下走。所谓的局部最优解就是鞍点。落入鞍点,梯度为0,使得模型参数不在继续更新。
2. 批量梯度下降法(BGD)
- 假设批量训练样本总数为
,每次输入和输出的样本分别为 X(i),Y(i) X ( i ) , Y ( i ) ,模型参数为 W W ,代价函数为
,每输入一个样本 i i 代价函数关于
的梯度为 ΔJi(Wt,X(i),Y(i)) Δ J i ( W t , X ( i ) , Y ( i ) ) ,学习率为 ηt η t ,则使用批量梯度下降法更新参数表达式为:
Wt+1=Wt−ηt∑i=1nΔJi(Wt,X(i),Y(i)) W t + 1 = W t − η t ∑ i = 1 n Δ J i ( W t , X ( i ) , Y ( i ) )其中, Wt W t 表示 t t 时刻的模型参数。
- 从表达式来看,模型参数的调整更新与全部输入样本的代价函数的和(即批量/全局误差)有关。即每次权值调整发生在批量样本输入之后,而不是每输入一个样本就更新一次模型参数。这样就会大大加快训练速度。
- 基本策略可以理解为,在下山之前掌握了附近的地势情况,选择总体平均梯度最小的方向下山。
评价:
- 批量梯度下降法比标准梯度下降法训练时间短,且每次下降的方向都很正确。
3. 随机梯度下降法(SGD)
- 对比批量梯度下降法,假设从一批训练样本
中随机选取一个样本 is i s 。模型参数为 W W ,代价函数为
,梯度为 ΔJ(W) Δ J ( W ) ,学习率为 ηt η t ,则使用随机梯度下降法更新参数表达式为:
Wt+1=Wt−ηtgt W t + 1 = W t − η t g t其中, gt=ΔJis(Wt;X(is);X(is)), is∈{ 1,2,...,n} g t = Δ J i s ( W t ; X ( i s ) ; X ( i s ) ) , i s ∈ { 1 , 2 , . . . , n } 表示随机选择的一个梯度方向, Wt W t 表示 t t 时刻的模型参数。