伯禹学习平台第一次打卡

作为一个已经学过深度学习的学生,参加这次学习平台主要是为了能够巩固一下基础,并且学习一下pytorch的使用。因而本博客不会过多记录学习平台中的内容,而是平台以外的扩展内容,作为学习平台的课外补充。

  • 模型初始化

        对于大多数初学者来说,都会选择随机初始化的方法初始化模型参数。但是,正如3.15.2.2中提到的那样,还有一种比较常用的方法是Xavier初始化,实际上,初始化方式对神经网络的稳定性和训练结果的影响都很大。本小节将扩展记录最为常用的Xavier以及Kaiming初始化。

1、Xavier 初始化

        Xavier初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文《Understanding the difficulty of training deep feedforward neural networks》。Xavier初始化的主要目的是,希望在训练过程中,每一层输出的方差都尽量相等。以这个目标作为驱动,反推初始权重应该满足怎样的分布,才能达到这个目标。

        文章使用使用tanh作为激活函数,对于tanh,当x处于0附近时,其导数/斜率接近与1,可以近似将其看成一个线性函数,即f(x)=x。

        假设所有的输入数据x满足均值为0,方差为的分布,我们再将参数w以均值为0,方差为的方式进行初始化。我们假设第一层是卷积层,卷积层共有n个参数(n=channel*kernel_h*kernel_w),于是为了计算出一个线性部分的结果,我们有:

其中,忽略偏置b。

 假设输入x和权重w独立同分布,我们可以得出z服从均值为0,方差为的分布,即

 

  为了更好地表达,我们将层号写在变量的上标处,

 

  我们将卷积层和全连接层统一考虑成n个参数的一层,于是接着就有:

   

  如果我们是一个k层的网络(这里主要值卷积层+全连接层的总和数),我们就有

 

  继续展开,最终可以得到

 

       从上式可以看出,后面的连乘是非常危险的,假如说总是大于1,那么随着层数越深,数值的方差会越来越大;如果乘积小于1,那么随着层数越深,数值的方差会越来越小。

       我们再回头看看这个公式,

 

  如果,那么我们就能保证每层输入与输出的方差保持一致,那么应该满足:

 

  即对应任意第i层,要想保证输入与输出的方差保持一致,需要满足:

 

那么对于反向传播,道理是一样的。

 

假设我们还是一个k层的网络,现在我们得到了第k层的梯度,那么对于第k-1层输入的梯度,有

 

  从上式可以看出K-1层一个数值的梯度,相当于上一层的n个参数的乘加。这个n个参数的计算方式和之前方式一样,只是表示了输出端的数据维度,在此先不去赘述了。

 

  于是我们假设每一层的参数服从均值为0,方差为某值的分布,那么有如下公式:

 

       对于这个k层网络,我们又可以推导出一个的公式:

 

       上式中连乘是非常危险的,前面说过,在此不在赘述(这就会造成梯度爆炸与梯度消失的问题,梯度爆炸与梯度消失可以参考这两篇文章)。我们想要做到数值稳定,使得反向传播前后的数值服从一个稳定的分布,即

 

那么需要满足如下条件:

 

 

  如果仔细看一下前向传播与反向传播的两个公式,我们就会发现两个n实际上不是同一个n。对于全连接来说,前向操作时,n表示了输入的维度,而后向操作时,n表示了输出的维度。而输出的维度也可以等于下一层的输入维度。所以两个公式实际上可以写作:

 

 

       于是为了均衡考量,最终我们的权重方差应满足:

 

 

  下面就是对这个方差的具体使用了。论文提出使用均匀分布进行初始化,我们设定权重要初始化的范围是[-a,a]。而均匀分布的方差为:

由此可以求得

 

上面就是xavier初始化方法,即把参数初始化成下面范围内的均匀分布。

  • Kaiming 初始化

      残差网络的作者在这篇论文中提出了ReLU网络的初始化方法:Kaming初始化。Xavier初始化方法适用的激活函数有限:关于0对称;线性。而ReLU激活函数并不满足这些条件,实验也可以验证Xavier初始化确实不适用于ReLU激活函数。

在Xavier论文中,作者给出的Glorot条件是:正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变。这在本文中稍作变换:正向传播时,状态值的方差保持不变;反向传播时,关于激活值的梯度的方差保持不变。
网络的表达式:

2.1 前向过程:

由公式(1)可知:

假设

又激活函数是ReLU,所以激活值的期望E(hi−1)E(hi−1)不为0。于是上式可以写成

把公式(5)代入公式(4)可以得到

为了让正向传播时状态值的方差不变,有

2.2 反向过程

为了让反向传播时关于激活值的梯度的方差不变,有

这篇论文中Kaiming初始化方法为:均值为0方差为(8)或者(15)的高斯分布。

 

参考资料:

https://www.cnblogs.com/hejunlin1992/p/8723816.html

https://blog.csdn.net/VictoriaW/article/details/73166752

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值