欢迎光临散文网 会员登陆 & 注册

14 数值稳定性 + 模型初始化和激活函数【动手学深度学习v2】

2023-07-15 17:11 作者:月芜SA  | 我要投稿

14数值稳定性、模型初始化和激活函数

网络层数较多时,向量每次进行求导计算都会产生新的矩阵,根据链式法则,网络中将会产生大量的矩阵相乘计算,导致梯度爆炸和梯度消失

当梯度比1大时,会产生巨大的梯度,造成梯度爆炸,反之相则会造成梯度消失

注:diag是指取矩阵对角元素。MLP(Multi-Layer Perceptron,MLP):多层感知机。

使用ReLU作为激活函数会导致梯度爆炸,sigmod激活函数会导致梯度消失


优化训练方法,防止产生梯度爆炸或消失。例如在叠加梯度时使用加法而不是乘法。


此外, 可以通过类似生成随机变量使每一层的元素值都相似,主要用均值和方差这两个特点控制相似度,同时,对反向传播的梯度值也进行相似的归一化。

注:图中t是指层数,i是指元素变量,Var是方差,E是期望。

详述权重初始化方法:

注:h为该层输出值,即下一层的输入值。w为该层权重。二者为独立分布

正向方差约束条件:

反向均值即方差约束条件:

知识补充:期望和方差计算

总结正反向传播数据约束条件,发现两条件难以同时满足(不同层数的维度往往不一样),所以提出较为折中的的Xavier初始:

由式可知,Xavier初始可以控制数据方差根据输入及输出数据的维度进行调整。

在以上条件的约束下,可以想见,若在层间插入线性激活函数,而不改变数据方差和期望的话,线性激活函数必须是y=x。(或者说,从控制数据稳定性方面看,最为理想的激活函数就是y=x)



模型初始化和激活函数 P2 - 21:52


推广到常用的激活函数,使用泰勒展开来辅助分析各函数对数据分布性质的影响。

可以看出,在x=0附近(在实际网络中,各层权重数值也往往集中在x=0附近),tanh(x)与relu(x)比较接近y=x的理想激活函数,表现较好。

sigmoid(x)函数则需要一定的调整,来达到较好的数值稳定性。

以上分析也从数值稳定性的角度出发,解释了为什么在实际应用中tanh(x)与relu(x)激活函数的表现更好。


总结:

合理的权重初始值和激活函数的选取可以提升数值稳定性。


补充知识:

nan,inf错误是由梯度爆炸导致的常见错误。

除了正态分布、均值分布外,参数符合其他什么分布对结果不会有太大的影响(前提是均值、方差等要有约束)














14 数值稳定性 + 模型初始化和激活函数【动手学深度学习v2】的评论 (共 条)

分享到微博请遵守国家法律