概述
本轮课程主要学习了网络的优化,和最初的想法略有不同,以为会学习关于网络设计相关的知识,结果学到的是一些训练时候网络的技巧。
包括batch和动量,学习率的调整,损失函数以及标准化。
1.梯度下降法的局限
这部分主要介绍了在梯度下降过程中,梯度为0导致训练不下去的情况下驻点的问题。
其中,一种为鞍点,可以继续下降,一种为局部最小值。
通过泰勒展式,可以发现可以借助Hessian
来判断点为局部最小值还是鞍点。
判断方法为计算Hessian
的特征值,也就是是否为正定矩阵。实际训练过程并不适用,计算量过大。
在saddle point中,Hessian可以告诉我们梯度update的方向。
在实际训练过程中,两种点都不常见,但相对来说,鞍点更为常见。
Batch与动量Momentum
每次训练都割成很多份数据,就是很多个batch,每次训练都要把所有的batch都练完,才完成一步(一个epoch)。
小的batch size(nosiy update)会带来比较好的training结果。在两个数据集上,的实践证明了这一点。
所以为什么会更好呢?
相当于存在备份,当一个batch梯度下降卡在平台时,另外一个不会卡住,这样有助于更快速的完成梯度下降寻优。
同样,实验显示,对于testing也有较好结果
感觉这里为什么的解释还有点牵强。
batch的总结:
引入动量来跳出驻点
自动调整学习率adaptive learning rate
从adam到RMSProp再到adam优化
损失函数
在分类问题中使用了交叉熵的损失函数代替均方根