梯度消失与梯度爆炸

梯度消失与梯度爆炸:

当神经网络的层数较多时,模型的数值稳定性容易变差

假设一个层数为L的多层感知机的第lH(l)的权重参数为W(l),输出层H(L)的权重参数为W(L)。为了便于讨论,不考虑偏差参数,且设所有隐藏层的激活函数为恒等映射(identity mapping)\varphi (x)=x。给定输入X,多层感知机的第l层的输出H(l)=XW(1)W(2)...W(l)。此时,如果层数l较大,H(l)的计算可能会出现衰减或爆炸。举个例子,假设输入和所有层的权重参数都是标量,如权重参数为0.2和5,多层感知机的第30层输出为输入X分别与0.230≈1×10−21(消失)和530≈9×1020(爆炸)的乘积。当层数较多时,梯度的计算也容易出现消失或爆炸。

随机初始化参数:

在深度神经网络中通常随机初始化参数。

如三层神经网络加入中间的隐藏层中的所有单元格的参数都是相同的,那么正向传播和反向传播的得出来的数值都是相同的,这样的话,在中间的隐藏层中的所有单元格中,实际上只有一个单元格发挥了作用。所以在深度神经网络中通常要使用随机初始化参数来使得中间层的参数不一样。

初始化方法:

1)pytorch默认初始化方法:

随机初始化模型参数的方法有很多。在线性回归的简洁实现中,我们使用torch.nn.init.normal_()使模型net的权重参数采用正态分布的随机初始化方式。不过,PyTorch中nn.Module的模块参数都采取了较为合理的初始化策略(不同类型的layer具体采样的哪一种初始化方法的可参考源代码),因此一般不用我们考虑。

2)Xavier随机初始化:

还有一种比较常用的随机初始化方法叫作Xavier随机初始化。 假设某全连接层的输入个数为a,输出个数为b,Xavier随机初始化将使该层中权重参数的每个元素都随机采样于均匀分布:

U(-\sqrt{\frac{6}{a+b}},\sqrt{\frac{6}{a+b}})

它的设计主要考虑到,模型参数初始化后,每层输出的方差不该受该层输入个数影响,且每层梯度的方差也不该受该层输出个数影响。

协变量偏移:

举个例子:训练模型的时候用真实的猫和狗的图片进行训练,预测的时候用卡通的猫和狗的图片来预测。

标签偏移:

举个例子:根据数据分类一个人得的是流感1还是流感2

但训练集只有流感1

而测试集有流感1和流感2两种

概念偏移:

举个例子:softdrink在美国不同的地区有着不同意思,在构建机器翻译模型的时候,会用到这些。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值