本文为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=WlXl+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(WlXl)=Var∑i=1nl(wixi)=nlVar(wlxl)
设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(wlxl)=E(wl2xl2)−(E(wlxl))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)=21E(yl−12)=21Var(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)=nlVar(wl)21Var(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=2L21nlVar[wl])
设12nlVar[wl]=1,∀l\frac{1}{2}n_lVar[w_l]=1,\forall l21nlVar[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)21Var(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]=21Var[Δ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 l21nl^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效果有所提升,但不明显。