一:概述
当你想训练好一个神经网络时,你需要做好三件事情:一个合适的网络结构,一个合适的训练算法,一个合适的训练技巧:
合适的网络结构:包括网络结构和激活函数,你可以选择更深的卷积网络,然后引入残差连接。可以选择relu做为激活函数,也可以选择tanh,swish等。
合适的训练算法:通常采用SGD,也可以引入动量和自适应学习速率,也许可以取得更好的效果。
合适的训练技巧:合理的初始化,对于较深的网络引入残差连接,归一化等操作。
二:SGD
三:SGD with Momentum
动量梯度下降法的一个本质,就是它们能够最小化碗状函数,
Why momentum?
Momentum项相当于速度,因为β稍小于1,表现出一些摩擦力,所以球不会无限加速下去,所以不像梯度下降法,每一步都独立于之前的步骤,你的球可以向下滚,获得动量,可以从碗向下加速获得动量。
有两个超参数,学习率a以及参数\beta,\beta控制着指数加权平均数。\beta最常用的值是0.9
四: Adagrad
1.其实就是给SGD加了一个分母。
AdaGrad算法就是将每一个参数的每一次迭代的梯度取平方累加后在开方,用