参数初始化

1. 前向传播与反向传播

参考:https://medium.com/usf-msds/deep-learning-best-practices-1-weight-initialization-14e5c0295b94

           https://www.cnblogs.com/shine-lee/p/11809979.html

           https://www.cnblogs.com/shiyublog/p/10542682.html

所以,激活函数的偏导、权重矩阵、当前层的输入(前一层的输出),这些项的取值均会对偏导数产生影响,偏导数为这些因子项共同作用的结果,特别地:

2. 梯度消失与梯度爆炸的原理

梯度为偏导数构成的向量。

损失函数收敛至极小值时,梯度为0(接近0),损失函数不再下降。我们不希望在抵达极小值前,梯度就为0了,也不希望下降过程过于震荡,甚至不收敛。梯度消失与梯度爆炸分别对应这2种现象,

  1. 梯度消失(vanishing gradients):指的是在训练过程中,梯度(偏导)过早接近于0的现象,导致(部分)参数一直不再更新,整体上表现得像损失函数收敛了,实际上网络尚未得到充分的训练。

  2. 梯度爆炸(exploding gradients):指的是在训练过程中,梯度(偏导)过大甚至为NAN(not a number)的现象,导致损失剧烈震荡,甚至发散(divergence)。

由上一节的分析可知,在梯度(偏导)计算中,主要的影响因素来自激活函数的偏导、当前层的输入(前一层的输出)、以及权重的数值等,这些因子连续相乘,带来的影响是指数级的。训练阶段,权重在不断调整,每一层的输入输出也在不断变化,梯度消失和梯度爆炸可能发生在训练的一开始、也可能发生在训练的过程中

因子项中当前层的输入仅出现一次,下面着重看一下激活函数和权重的影响。

2.1 激活函数的影响

2.2 权重矩阵的影响

2.3 不良初始化

至此,一些权重不良初始化导致的问题就不难解释了,

  • 过小,导致梯度消失

  • 过大,导致梯度爆炸

  • 全常数初始化,即所有权重WW都相同,则z(2)=W1xz(2)=W1x相同,导致后面每一层的输入和输出均相同,即aa和zz相同,回到反向传播的公式,每层的偏导相同,进一步导致每层的权重会向相同的方向同步更新,如果学习率只有一个,则每层更新后的权重仍然相同,每层的效果等价于一个神经元,这无疑极大限制了网络的能力。

    反向传播中的偏导计算

  • 特别地,全0初始化,根据上式,如果激活函数g(0)=0g(0)=0,如ReLU,则初始状态所有激活函数的输入zz和输出aa都为0,反向传播时所有的梯度为0,权重不会更新,一直保持为0;如果激活函数g(0)≠0g(0)≠0,则初始状态激活层的输入为0,但输出a≠0a≠0,则权重会从最后一层开始逐层向前更新,改变全0的状态,但是每层权重的更新方向仍相同,同上。

3. 权重初始化方法

参考:https://www.cnblogs.com/shine-lee/p/11908610.html

weight initialization

Keras 各层权重随机初始值的方法:https://keras.io/zh/initializers/

3.1 Xavier Initialization

  • Xavier Glorot & Yoshua Bengio: http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
  • 适用条件:使用关于0的对称并且值域是(-1,1)的激活函数
  • Xavier初始化将一个层的权值设置为从随机均匀分布中取值,这个分布是有界的

                             

  • nᵢ是输入该层的网络连接的数量(fan-in),nᵢ+₁是从该层输出的网络连接的数量(fan-out)
  • Xavier初始化能够维持激活的方差和反向传播的梯度
  • 在他们的实验中,Xavier初始化使5层网络在各层之间保持几乎相同的参数梯度,相反,使用正态分布初始化会导致某些层的梯度趋于0
  • 为了进一步阐明这一点,作者还演示了使用Xavier初始化的网络在CIFAR-10图像分类任务中取得了更快的收敛速度和更高的精度

3.2 Kaiming Initialization

当使用关于0的对称并且值域是(-1,1)的激活函数式时,我们希望每层的激活输出均值为0,平均标准差为1左右,这是我们自己的方法和Xavier都能做到的,但如果使用的是ReLU激活函数呢? 以同样的方式缩放初始权重值是否有效?

  • Kaiming He et:propose their own initialization scheme
  • 该方案专为使用这类非对称、非线性激活的激活函数网络而设计
  • 在2015年的论文中证明,如果采用以下输入权值初始化策略,深度网络(例如22层的CNN)会更早地收敛:
  • 用从标准正态分布创建一个张量;
  • 将每个随机选择的数乘以√2/√n,其中n为fan-in ;
  • Bias矩阵为0

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满腹的小不甘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值