RMSProp
之前介绍了Adagrad方法,就是根据当前梯度来决定学习率的大小。
当函数模型比较复杂扭曲时,仅根据当前梯度是不够的,可能还要参考之前的梯度大小。
RMSProp就是这样一种方法,它的公式如下
公式中的α是自己设定的参数。
局部极小点的问题
在梯度下降的过程中可能会最终停在鞍点或局部极小点的问题。
实际上,在复杂模型中出现局部极小点的概率是比较低的,因为局部极小点要求在每一维上都是局部极小。
动量法也可以解决这一问题。
momentum
动量法就是在当前梯度方向上加上上一次的下降方向。
就像小球的滚动具有惯性一样,梯度下降不会停留在鞍点或局部极小点,而是会继续前进,在λ参数设置合适的情况下,更容易下降到全局极小点。
将上述两种方法结合起来,就是Adam。
early stopping
训练数据损失函数的极小点与测试数据可能会有不同,这也是测试数据准确率低的原因之一。所以我们可以选择根据验证数据的极小点来确定下降停止的位置。
regularization
正则化的常用方法主要有两种,正则项分别为1范数和二范数。
通过公式推导,可以看出两种正则化都是减小权重,不过1范数的正则化是减小一个常数,2范数的正则化是减小一定比例。
dropout
dropout的做法,是在每次训练时随机丢弃p%的节点,如下图所示。在测试时则使用完整的网络。
在这样做以后所以训练出来的weight都要乘以(1-p)%。
这样做的直观解释,就是负重训练,训练时负重测试时脱去负重准确率就大大提升。
另外一种解释是,这样做相当于训练了多个不同结构的网络,最后对他们取平均,这样一来可以有效降低bias。