20201010_深入理解BP神经网络_论文讲解_观看覃丰乘课程笔记

视屏录制于2016年底(12月份)

一、题目:understanding the difficulty of training deep feedforward neural networks(理解深度前馈神经网络训练的难点)

二、截取论文片段

(1) Our objective here is to understand better why standrad gradient decent from random initialization is doing so poorly with deep neural networks.

我们的目标是更好地理解为什么随机初始化的标准梯度下降对深度神经网络的影响如此之差。

(2) We find that the logistic sigmoid activation is unsuited for deep networks with random initialization because of its means value, which can dirve especially the top hidden layer into saturaion.

我们发现sigmoid激活函数由于其均值而不适用于具有随机初始化的深层网络,这尤其会使最上层的隐藏层陷入饱和状态。

(3) We varied the type of non-linear activation fuction in the hidden layers: the sigmoid 1/(1+e^{(-x)}), the hyperbolic tangent tanh(x), and a newly proposed activation fuction (Bergstra et al., 2009) called the softsign, x/(1+\left | x \right |).

我们在隐藏层中改变了激活函数的类型:sigmoid激活函数,双曲正切激活函数,和一个最新被推荐的激活函数softsign激活函数。

(4) Note that the best depth was always five for shapeset-3\times 2, except for the sigmoid, for which it was four.

(对于本文用到的图片数据集来说)最好的层数是5层,对于sigmoid激活函数来说最好的层数是4层。

注:

1.这里可以看得出来sigmoid函数的层数不能太深

2.为什么不能达到十层,一百层等更多的隐藏层呢?这里涉及到梯度消失的问题,在激活函数趋于两侧的部分导数是趋于0(小于1)的,此时把这种学习信号一层层传递下去的话就会使学习信号逐层递减,基本达到第四、五层时,学习信号就很趋于0了,所以把神经网络加到更多的层数也没有什么意义,后面的隐藏层已经学不到任何东西了。

3.梯度不能总是大于1,这样会导致梯度爆炸的问题,梯度大于1向后传播的时候这个信号就会越来越大,越往后传学习信号越大,极端情况,到了最后接近于无限大。

4.什么时候需要建立几十层,几百层的网络呢? 待解决。

(5) We initialized the biases to be 0 and the weights W_{ij} at eack layer with the following commonly used heuristic: 

                                                                           W_{ij} ~  U[-\frac{1}{\sqrt{n}},\frac{1}{\sqrt{n}}]          (1)
where  U[-a,a]  is the uniform distribution in the interval (-a,a) and n is the size of the previous layer (the number of column of W).

我们把偏置值设置为0,权值W的初始化使用下面的公式(n代表前一层的神经元的个数)

(6)

层数和迭代次数和饱和之间的关系图

                                                                   Figure 2: Mean and standard deviation  

the depth- five model never escaped this regime during training.

(针对这个图,这个图里表示到第四层,显然这个第四层在迭代到后面的代数的时候是可以逃离饱和状态的)深度五模型在训练期间从未逃脱过这种控制(不能逃脱饱和)

注:

这个系统表现不好的原因有:

1.层数太多了

2.激活函数选择的不够好(选择tanh或者softsign可能会更好一些)

3.初始值选择的不够好

(7) We hypothesize that this behavior is due to the combination of random initialization and the fact that an hidden unit output of 0 corresponds to a saturated sigmoid. Note that deep networks with sigmoids but initialized from unsupervised pre-training (e.g. from RBMs) do not suffer from this saturation behavior.

我们假设这种行为是由于随机初始化和隐藏单元输出0(根据上面(5)中的公式表明是趋于0的)对应于sigmoid函数饱和这一事实所致。 请注意,具有S形但从无监督的预训练(例如从RBM 受限的玻尔兹曼机)初始化的深层网络不会受到这种饱和行为的影响。

注:

从这句话我们得出用受限的玻尔兹曼机对网络的预训练是有好处的,得到一个比较好的初值

(8) In the case of symmetric activation functions like the hyperbolic tangent and the softsign, sitting around 0 is good because it allows gradients to flow backwards. However, pushing the sigmoid outputs to 0 would bring them into a saturation regime which would prevent gradients to flow backward and prevent the lower layers from learning useful features. Eventually but slowly, the lower layers move toward more useful features and the top hidden layer then moves out of the saturation regime. Note however that, even after this, the network moves into a solution that is of poorer quality (also in terms of generalization)

对于双曲正切tanh和sotfsign这样的对称激活函数,在0左右是好的,因为它允许梯度向后传播。 但是,将sigmoid输出0会使它们进入饱和状态,这将防止梯度倒流并阻止下层学习有用的功能。 最终但缓慢地,较低的层向更有用的特征移动,而顶部的隐藏层随后移出饱和状态。 请注意,即使是这样,网络仍会进入质量较差的解决方案(从通用性考虑)

(9)

tanh和softsign激活函数对比图

Figure 3: Top:98 percentiles (markers alone) and standard deviation (solid lines with markers) 

这个图的初始化用的仍然是上面(5)中的公式求得的,这两个激活函数都达到的5层。激活的范围是-1到1,每个图上面一个个分离的点是98分位线,连续的线代表了标准差,从上面两个对比图可以看出,softsign激活函数更加不容易进入饱和状态,是较tanh更好的激活函数。softsign函数是个比较好的激活函数。

 (10)

tanh和softsign激活函数对比图

由上图可以看出,双曲正切tanh大部分的值分布在0的附近,在-1和1也有很高的分布,在0附近不是一个很好的区域,在-1和1附近(饱和处)也不是一个很好的区域。softsign函数基本上没有饱和,在饱和的区域基本上都是0,在中间的线性区域的值也不是很多,大部分的值分布在(-0.6,-0.8)(0.6,0.8)两个区间内,也就是非线性区域的值比较多。综上,softsign函数是一个比较好的激活函数。

(11)论文中给出了一种比较好的初始化方式:正则化初始化

W ~ U[-\frac{\sqrt{6}}{\sqrt{n_{j}+_{j+1}}},\frac{\sqrt{6}}{\sqrt{n_{j}+_{j+1}}}]

前面提到的初始化方式不是最好的,这里的正则化初始化方式 效果更好。

(12)

用正则化初始化权值的效果对比图

正则化初始化和标准初始化的对比图

从图上可以看到用正则化初始化的图学习梯度分布更好,不仅在0的附近,在其他位置也有较高的分布。而标准的就会主要在0附近分布的比较多。

(13)

  • The more classical neural networks with sigmoid or hyperbolic tangent units and standard initialization fare rather poorly, converging more slowly and appar- ently towards ultimately poorer local minima.

  • The softsign networks seem to be more robust to the initialization procedure than the tanh networks, pre- sumably because of their gentler non-linearity.

  • sigmoid或双曲正切tanh激活函数配合标准初始化的较经典的神经网络的性能相当差,收敛速度较慢,并且明显朝着最终较差的局部最小值收敛。
  • 用softsign激活函数的网络似乎比tanh网络对初始化过程更健壮(注:这里没有强调正则初始化的好处,而且肯定softsign激活函数比tanh和sigmoid都要好,尤其是在初始化过程),大概是因为它们的非线性更温和。

(14)

不同激活函数,是否正则初始化的效果对比图

由图可知,对于tanh正则初始化大大增加了网络的收敛性。在初始化相同的前提下softsign激活函数表现更好。对于softsign激活函数,无论是正则初始化还是标准初始化效果都差不多。效果最好的是经过预训练的网络。

三、作者用到的数据集

1.由三角形、平行四边形、椭圆等形状组成的无限的数据集。经过训练会判断给出的图片中有几个图形,每个图形分别是什么形状

2.由小图片组成的数据集,小图片中有一些实物,经过训练可以判断出图片中的实物是什么

四、三个激活函数的图像

sigmoid激活函数图像

 sigmoid自变量的取值范围是从负无穷到正无穷,输出范围是0到1,自变量趋于负无穷为0,自变量趋于负无穷为1。

tanh和softsign激活函数

sigmoid自变量的取值范围是从负无穷到正无穷,输出范围是-1到1,自变量趋于负无穷为-1,自变量趋于负无穷为1。

五、在训练过程中我们要避免激活函数趋于饱和,饱和就是指自变量过于趋于两侧,对应sigmoid函数输出无限趋于0或者1,对应tanh函数和softsign函数输出无限趋于-1或者1,这样会使网络无法得到训练,不能达到网络学习的目的。在激活函数的中间位置也不是很好的位置,sigmoid,tanh,softsign三个函数自变量0对应的位置(这段线段趋于线性),取值最好的位置是图像中非线性的位置。

六、

论文总结:

1.sigmoid激活函数比tanh和softsign激活函数要差一些。

2.这三个激活函数(sigmoid,tanh,softsign)里,softsign激活函数对于初始化是学习效果最好的。

3.对于tanh正则初始化大大增加了网络的收敛性。

4.对于softsign激活函数,无论是正则初始化还是标准初始化效果都差不多。

5.效果最好的是经过预训练的网络。

点击下载论文 网盘密码:1koe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值