类神经网络训练(一)

LOCAL MINIMA VS SADDLE POINT

我们在做Optimization的时候,有时随着参数的不断更新,Training的Loss不会再下降,这个Loss并不优秀,那是什么原因导致这个Loss不再下降呢?常常是因为计算的Gradient为0,这个时候梯度下降没有办法再更新参数了,对应的loss也就不会下降了。

类神经网络训练(一)_第1张图片

 当gradient为0,也就是critical point的时候,可以有以下两种情况:

类神经网络训练(一)_第2张图片

1、LOCAL MINIMA(局部最小值): 看图可知,四周都比较高,当前所在的位置已经是局部最低的点,往四周任何方向走 Loss都会比较高,无路可走。

2、SADDLE POINT(鞍点): 看图可知,左右方向是比红点高,但是前后方向比红点低,该红点既不是Local Minima,也不是Local Maxima,如果是卡在Saddle point,旁边还是有其他路可以逃离saddle point,以此让Loss更低。

接下来从数学推导来可以判别一个点是局部最小值还是鞍点:

首先用Tayler Series Appoximation泰勒级数展开把Loss写出来如下图所示:

当我们我们遇到Critical point,意味着Gradient为0,所以第二项可以去掉。只与第三项H(Hessian Matrix)有关。我们可以第三项来判断,在θ′附近的error surface(误差曲面),到底长什么样。知道error surface,我们就可以判断θ′是属于局部最小值点还是鞍点。

类神经网络训练(一)_第3张图片

这样一来,根据Hessian矩阵:

(1)如果其所有特征值都是正的,就说明是Local Minima(局部最小值点)。

(2)如果其所有特征值都是负的,就说明是Local Maxima(局部最大值点)。

(3)如果其所有特征值有正有负,就说明是Saddle Point(鞍点)。

逃离SADDLE POINT:

如果发现位于Saddle Point,我们就可以逃离该点。Hessian Matirx它不只可以帮助我们判断是否位于Saddle Point,它还指出了我们参数可以Update的方向。

类神经网络训练(一)_第4张图片

当位于Saddle Point,我们只需要找出小于0的特征值以及对应的特征向量u,用u+θ′得到新的θ,这样这个θ的Loss一定比原来更低。

 BATCH VS MOMENTUM

我们常常使用Batch(批次)进行Optimization,我们将数据分成好多份Bacth,每次用一个Batch计算Loss和Gradient,如图所示。

类神经网络训练(一)_第5张图片

1 update = go through one batch.

1 epoch = go through all batch.

Shuffle 意味着重新分配Batch。

SMALL BATCH VS LARGE BATCH(N=20)

Small Bacth,BatchSize =1, 每个Example都更新,一个epoch更新20次;

Large Batch,BacthSize=20,20个Examples过完后一起更新,一个epoch就更新1次;

由于计算机带有并行运算的能力,Large Batch花费的时间不一定比Small Batch 花费的时间长。

类神经网络训练(一)_第6张图片

 类神经网络训练(一)_第7张图片

通过比较可以发现,在Batch大小在1000以内时,每一次更新时间相差不BatchSize相对较大的时候,每一个Epoch的更新次数就会减少,因此一个Epoch所耗费的时间更少。

除此之外,Small Batch往往有更好的性能,在训练模型上有更好的表现,"Noisy"的更新对训练模型有帮助。

类神经网络训练(一)_第8张图片

MOMENTUM(动量)以此来对抗一些LOCAL MINIMA和SADDLE POINT

类神经网络训练(一)_第9张图片

实际上M就是之前所有GradieWeighted Sum。也就是它不仅考虑当下的Gradient也考虑之前所有的Gradients。

你可能感兴趣的:(神经网络,人工智能,深度学习)