本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!
改善深层神经网络:超参数调试、正则化以及优化(二)- 优化算法
- 一、Mini-batch 梯度下降(Mini-batch gradient descent)
- 二、理解mini-batch梯度下降法(understanding mini-batch gradient descent)
- 三、指数加权平均数(Exponentially weighted averages)
- 四、理解指数加权平均数(Understanding exponentially weighted averages)
- 五、指数加权平均的偏差修正(Bias correction in exponentially weighted averages)
- 六、动量梯度下降法(Gradient descent with Momentum)
- 七、RMSprop
- 八、Adam 优化算法(Adam optimization algorithm)
- 九、学习率衰减(Learning rate decay)
- 十、局部最优的问题(The problem of local optima)
第一版 2022-05-23 初稿
一、Mini-batch 梯度下降(Mini-batch gradient descent)
优化算法能够让神经网络运行得更快。
X的维数是(nx,m),Y的维数是(1,m),向量化能够相对较快的处理所有m个样本,m足够大处理速度仍慢,此时先让梯度下降法处理一部分,算法速度会更快。
可以把训练集分割为小一点的子集训练,这些子集被取名为mini-batch。x(1)到x(1000)取出来,称为X{1},以此类推。
(i)表示训练集里的值,(l)表示神经网络的层数,{t}表示不同的mini-batch。
首先对输入X{t}执行前向传播,接着计算Z[1]、A[1]到A[l]。
接着计算损失成本函数J,如图使用正则化。
然后反向传播计算J{t}的梯度,接着更新加权值。
上述为“一代(1 epoch)”的训练,一代意味着只是一次遍历了训练集。想要多次遍历训练集,还需为另一个while循环设另一个for循环,可以一直遍历训练集,直到最后能收敛到一个合适精度。
二、理解mini-batch梯度下降法(understanding mini-batch gradient descent)
batch梯度下降法,每次迭代遍历整个训练集,可以预期每次迭代成本都会下降,如图左,若J在某次迭代增加了,那必是出问题的。
mini-batch梯度下降法,不是每次迭代都是下降的,但走势向下,如图右。噪声产生的原因在于也许X{1}和Y{1}是比较容易计算的mini-batch,因此成本会低一些。每个mini-batch的计算难度不确定,因此出现这些摆动。
极端情况下,mini-batch大小等于整个训练集大小,得到batch梯度