1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 何凯明初权重始化

何凯明初权重始化

时间:2021-07-04 07:57:00

相关推荐

何凯明初权重始化

本文为Xavier的姊妹篇,论文名称:Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification,一篇期刊。论文的贡献有两个:

因为Xavier限制激活函数为线性的,因此并不适用Relu激活函数,因为提出一种新的初始化方式。提出基于LRelu的激活函数,PRelu。

1 初始化

参照了Xavier论文的思想,该论文的思想是前向传播时保证每层激活函数的输入的方差相等,反向传播时保证每层的激活函数输出值的梯度相等,与Xavier正好相反。

1.1 前向传播

设yl=WlXl+bly_l=W_lX_l+b_lyl​=Wl​Xl​+bl​和xl+1=f(yl)x_{l+1}=f(y_l)xl+1​=f(yl​)

令n=k2cn=k^2cn=k2c

WlW_lWl​:d×nd\times nd×n

XlX_lXl​:n×1n\times 1n×1

blb_lbl​:d×1d\times1d×1

yly_lyl​:d×1d\times 1d×1

假设:Wl、xlW_l、x_lWl​、xl​各自独立同分布相互独立,E(Wl)=0E(W_l)=0E(Wl​)=0,偏置为零。

Var(yl)=Var(WlXl)=Var∑i=1nl(wixi)=nlVar(wlxl)Var(y_l)=Var(W_lX_l)=Var\sum _{i=1}^{n_l}(w_ix_i)=n_lVar(w_lx_l)Var(yl​)=Var(Wl​Xl​)=Var∑i=1nl​​(wi​xi​)=nl​Var(wl​xl​)

设wl、xlw_l、x_lwl​、xl​分别为Wl、XlW_l、X_lWl​、Xl​中的一个元素,nl=k2cn_l=k^2cnl​=k2c。

Var(wlxl)=E(wl2xl2)−(E(wlxl))2=Var(wl)E(xl2)Var(w_lx_l)=E(w^2_lx^2_l)-(E(w_lx_l))^2=Var(w_l)E(x^2_l)Var(wl​xl​)=E(wl2​xl2​)−(E(wl​xl​))2=Var(wl​)E(xl2​)

设激活函数为Relu,所以E(xl)≠0E(x_l)\neq0E(xl​)​=0,即E(xl2)≠Var(xl)E(x^2_l)\neq Var(x_l)E(xl2​)​=Var(xl​)。

E(xl2)=12E(yl−12)=12Var(yl−1)E(x^2_l)=\frac{1}{2}E(y^2_{l-1})=\frac{1}{2}Var(y_{l-1})E(xl2​)=21​E(yl−12​)=21​Var(yl−1​)

设激活函数为Relu,xl=max(0,yl−1)x_{l}=max(0, y_{l-1})xl​=max(0,yl−1​)。

因此,对于Relu:

Var(yl)=nlVar(wl)12Var(yl−1)Var(y_l)=n_lVar(w_l)\frac{1}{2}Var(y_{l-1})Var(yl​)=nl​Var(wl​)21​Var(yl−1​)

Var[yL]=Var[y1](∏l=2L12nlVar[wl])Var[y_L]=Var[y_1](\prod_{l=2}^L\frac{1}{2}n_lVar[w_l])Var[yL​]=Var[y1​](∏l=2L​21​nl​Var[wl​])

设12nlVar[wl]=1,∀l\frac{1}{2}n_lVar[w_l]=1,\forall l21​nl​Var[wl​]=1,∀l

对于PRelu:

Var(yl)=(1+α2)Var(wl)12Var(yl−1)Var(y_l)=(1+\alpha^2)Var(w_l)\frac{1}{2}Var(y_{l-1})Var(yl​)=(1+α2)Var(wl​)21​Var(yl−1​)

当l=1l=1l=1时,Var(yl)Var(y_l)Var(yl​)的结果应该去掉12\frac{1}{2}21​,因为第一层的输入并没有经过激活函数,但是也可以写成这种形式,因为单层的改变不会使整体以指数形式增加或减少。

1.2 反向传播

Δxl=Wl^Δyl\Delta {x_l}=\hat{W_l}\Delta {y_l}Δxl​=Wl​^​Δyl​

Δxl、Δyl\Delta{x_l}、\Delta{y_l}Δxl​、Δyl​分别表示为∂Cost∂xl\frac{\partial {Cost}}{\partial {x_l}}∂xl​∂Cost​和∂Cost∂yl\frac{\partial {Cost}}{\partial {y_l}}∂yl​∂Cost​,设n^=k2d\hat{n}=k^2dn^=k2d,形状分别为c×1、n^×1c\times1、\hat n\times1c×1、n^×1,W^\hat{W}W^的形状为c×n^c\times \hat nc×n^。

假设wlw_lwl​沿原点对称分布,则E(Δxl)=0。wl与ylE(\Delta x_l)=0。w_l与y_lE(Δxl​)=0。wl​与yl​相互独立。

又由xl=f(yl−1)x_l=f(y_{l-1})xl​=f(yl−1​)得:Δyl=f′(yl)Δxl+1\Delta y_l=f'(y_l)\Delta x_{l_+1}Δyl​=f′(yl​)Δxl+​1​

E[Δ(yl)2]=Var[Δyl]=12Var[Δxl+1]E[\Delta (y_l)^2]=Var[\Delta y_l]=\frac{1}{2}Var[\Delta x_{l+1}]E[Δ(yl​)2]=Var[Δyl​]=21​Var[Δxl+1​]

只需要计算到Δx2\Delta x_2Δx2​就可以,x1x_1x1​表示输入的图像,并没有参数所以不需要计算导数

令12nl^Var[wl]=1,∀l\frac{1}{2}\hat{n_l}Var[w_l]=1, \forall l21​nl​^​Var[wl​]=1,∀l,

当l=1l=1l=1时,此式应该去掉12\frac{1}{2}21​,理由同前向传播。

结论:反向传播的结果与前向传播不同之处在于:n=k2cl,n^=k2dl=k2cl−1n=k^2c_l,\hat n=k^2d_l=k^2c_{l-1}n=k2cl​,n^=k2dl​=k2cl−1​,使用哪种初始化方式都可以。

2 PRelu激活函数

当i表示层数时,每层一个参数,此时的额外耗费可以忽略不计。当i表示像素索引时,每个像素一个参数。

使用该激活函数相对Relu效果有所提升,但不明显。

3 总结

在pytorch实现中,两种初始化方式都可以使用均匀分布或正太分布。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。