课程地址:https://www.coursera.org/learn/neural-networks

老师主页:http://www.cs.toronto.edu/~hinton

备注:笔记内容和图片均参考老师课件。

这节课主要介绍了几种优化的方法,这里回顾下。

神经网络中更新权重的方法为梯度下降,简单来说,梯度下降可以分为以下两种

Full-batch gradient descent

这种梯度下降算法就是每次计算全量的梯度然后进行更新,这样有两个问题,一是数据量太大的时候计算太慢,二是如果数据重复很多,那么就会带来不必要的计算,于是这样就有了Stochastic gradient descent

Stochastic gradient descent

和Full-batch gradient descent相对,Stochastic gradient descent每次只取一部分数据,然后计算其梯度,于是这样又会产生一种极端情况——每次只取一个数据,这种叫做“online”,老师说由于计算能力的问题,这种算法效果不如mini-batch(每次取少量数据)效果好,所以一般情况下都使用mini-batch。

接下来介绍几种加速mini-batch训练的方法,两种比较常用的方法,平移以及伸缩变换这里就略过了。

The momentum method

这种算法和一般的梯度下降更新公式不同之处在于前一次的变换量$ \Delta w(t-1)$会影响下一次的变化量$ \Delta w(t)$

如果$\epsilon \frac{\partial E(t)}{\partial w}$是常数,对上式两边取极限可得

这说明,如果$\alpha \to 1$,那么$\Delta w(\infty)$的绝对值会非常大。

A separate,adaptive learning rate for each connection

这种算法的思想在于每个权重更新的学习率应该不同,所以这里设置了$g_{ij}$

Rmsprop

从直观上来看,如果误差比较大,那么更新的速度也应该比较大,如果误差比较小,那么更新的速度也应该比较小,但一般的梯度下降法学习速率是一个常数,这个算法的做的相当于正规化,使得无论误差多少,更新的速度都比较适中。