本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. Mini-batch decent方法
1.1. Batch vs. mini-batch
Batch:利用矢量化编程的方法,对整个训练集运用梯度下降法。梯度每下降一小步,都要处理整个训练集。这样的效率比较慢。
Mini-batch:将训练集拆分为更小的训练集,成为小批量训练集(mini-batch)
Mini-batch t: X{t},Y{t}
对每个mini-batch都进行一次完整的前向和反向传播过程,当对所有的mini-batch都进行了前向和反向过程后,我们称完成了对训练集的一次遍历**(epoch)**。
Batch gradient descent,原则上cost应该是单调下降(除非learning rate太大了);Mini-batch gradient descent,整体趋势下降,但是局部是振荡的。
1.2. Choosing mini-batch size
- 如果mini-batch size=m: 等价于batch gradient descent,一般可以收敛到全局最小值点;
- 如果mini-batch size=1:等价于stochastic gradient descent,不一定收敛到全局最小值点,一般会在该点处振荡。
如果训练集较小(<2000),就使用batch gradient descent;否则,可以选择64到512之间(2的幂数)的mini-batch size。确保可以放入CPU/GPU的内存中
2. 指数加权平均方法(exponentially weighted averages)

图2.1 指数加权平均例子-寻找温度趋势
v0v1v2v3⋮=0=0.9v0+0.1θ1=0.9v1+0.1θ2=0.9v2+0.1θ3(2-1)
第t天的指数平均值的通项公式:
vt=βvt−1+(1−β)θt=(1−β)(θt+βθt−1+⋯+βkθt−k+⋯+βt−1θ1)(2-2)
近似公式:
vt≈1−β1 days′ temperature(2-3)
如图2.2所示,当β增大时,曲线向右平移(绿线);β减小时,曲线振荡加剧(黄线),

图2.2 β大小对曲线形状的影响
### 2.1. Bias Correction(偏差修正)
原因:$v_0=0$导致初始阶段的点估计不准
解决方法:用$\frac{v_t}{1-\beta^t}$代替$v_t$
3. Gradient descent with momentum(动量梯度下降)
背景问题:当目标函数的等高线为图3.1所示时,梯度下降的过程中可能会发生振荡:

图3.1 梯度下降振荡的例子>
Momentum:
On iteration t:
Compute $dw,db$ on current mini-batch.
vdwvdbwb=βvdw+(1−β)dw=βvdb+(1−β)db:=w−αvdw;:=b−αvdb(3-1)
采用前面提到的指数加权平均可以使梯度的下降过程更平滑。
一般β取0.9就好,而且实际中一般不用修正偏差,因为迭代几步后偏差就自动减小很多了。
4. RMSprop(Root Mean Square prop,均方根传递)
On iteration t:
Compute dw,db on current mini-batch.
sdwsdbwb=βsdw+(1−β)dw2=βsdb+(1−β)db2:=w−αsdwdw;:=b−αsdbdb(4-1)
垂直方向除以一个较大的数,水平方向除以一个较小的数(假设b是垂直方向,w是水平方向)。为了防止分母出现零的情况,可以在分母加上一个小的ϵ
5. Adam优化算法
Adam的本质是将动量和RMSprop结合起来。
vdw=0,sdw=0.vdb=0,sdb=0.
On iteration t:
Compute dw,db on current mini-batch.
vdwvdbsdwsdbVdwcorrectedSdwcorrectedwb=β1vdw+(1−β1)dw=β1vdb+(1−β1)db=β2sdw+(1−β2)dw2=β2sdb+(1−β2)db2=vdw/(1−β1t),Vdbcorrected=vdb/(1−β1t)=sdw/(1−β2t),Sdbcorrected=sdb/(1−β2t):=w−αSdwcorrectedVdwcorrected;:=b−αSdbcorrectedVdbcorrected(5-1)
超参数:
α:人工调整
β1:0.9,(dw)
β2:0.999,(dw2)
ϵ:10−8
6. 学习率衰减(learning rate decay)

图6.1 固定学习率导致不能完全收敛的示意图
解决方法:让学习率$\alpha$逐渐下降。
下降的形式:
- α=1+decay−rate ∗ epoch−num1
- α=0.95epoch−num⋅α0
- α=epoch−numkα0
- ...