《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》论文阅读笔记

论文原文:http://arxiv.org/abs/1502.01852

论文主要讨论了以ReLU为激活函数的网络的缺陷并提出了改进的激活函数PReLU与新的Kaiming初始化方法

1. PReLU

《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》论文阅读笔记_第1张图片

  1. 前向传播

    • 通道独立: f ( y i ) = max ⁡ ( 0 , y i ) + a i min ⁡ ( 0 , y i ) f\left(y_{i}\right)=\max \left(0, y_{i}\right)+a_{i} \min \left(0, y_{i}\right) f(yi)=max(0,yi)+aimin(0,yi)
    • 通道共享: f ( y i ) = max ⁡ ( 0 , y i ) + a min ⁡ ( 0 , y i ) f\left(y_{i}\right)=\max \left(0, y_{i}\right)+a \min \left(0, y_{i}\right) f(yi)=max(0,yi)+amin(0,yi)

    区别在于通道共享的PReLU对于每个通道都使用相同的 a a a,而通道独立的PReLU对于每个通道 i i i都使用不同的 a i a_{i} ai,这些参数都是与网络同时训练得到

  2. 反向传播
    ∂ E ∂ a i = ∑ y i ∂ E ∂ f ( y i ) ∂ f ( y i ) ∂ a i \frac{\partial \mathcal{E}}{\partial a_{i}}=\sum_{y_{i}} \frac{\partial \mathcal{E}}{\partial f\left(y_{i}\right)} \frac{\partial f\left(y_{i}\right)}{\partial a_{i}} aiE=yif(yi)Eaif(yi)

∂ f ( y i ) ∂ a i = { 0 ,  if  y i > 0 y i ,  if  y i ≤ 0 \frac{\partial f\left(y_{i}\right)}{\partial a_{i}}=\left\{\begin{array}{ll}{0,} & {\text { if } y_{i}>0} \\ {y_{i},} & {\text { if } y_{i} \leq 0}\end{array}\right. aif(yi)={0,yi, if yi>0 if yi0

  1. 实验结果

    《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》论文阅读笔记_第2张图片

    • 在ImageNet上仅改变激活函数能得到1.2的提升

    • 越低层的a越远离0而越高层的a越接近0,说明模型在低层时保留了更多的信息,而在高层时提取更多非线性特征

      《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》论文阅读笔记_第3张图片

2. Kaiming初始化

  1. 使用ReLU的网络相比使用sigmoid的网络能更快的收敛,但不良的初始化会导致模型难以训练。

  2. 传统的网络使用高斯分布进行初始化,在训练深层网络时难以收敛(需要使用预训练模型或辅助分类器),Xavier初始化基于激活函数是线性的这一假设,不适用于ReLU及其变体

  3. kaiming初始化过程

    • 对于前向传播: y l = W l x l + b l \mathbf{y}_{l}=\mathbf{W}_{l} \mathbf{x}_{l}+\mathbf{b}_{l} yl=Wlxl+bl

      • x l {x}_{l} xl k 2 c × 1 k^{2} c\times1 k2c×1
      • W l {W}_{l} Wl d × k 2 c d\times k^{2} c d×k2c
      • b l {b}_{l} bl d × 1 d\times 1 d×1

      其中 k k k为输入图像大小, c c c为通道数, d d d为核个数

    • 初始化 w l w_{l} wl x l x_{l} xl都是独立同分布的,则有
      Var ⁡ [ y l ] = n l Var ⁡ [ w l x l ] = n l Var ⁡ [ w l ] E [ x l 2 ] \operatorname{Var}\left[y_{l}\right]=n_{l} \operatorname{Var}\left[w_{l} x_{l}\right]=n_{l} \operatorname{Var}\left[w_{l}\right] E\left[x_{l}^{2}\right] Var[yl]=nlVar[wlxl]=nlVar[wl]E[xl2]
      只有在 x l {x}_{l} xl0均值的情况下才有 E [ x l 2 ] = Var ⁡ [ x l ] E\left[x_{l}^{2}\right] = \operatorname{Var}\left[x_{l}\right] E[xl2]=Var[xl],而ReLU激活后 x l = max ⁡ ( 0 , y l − 1 ) x_{l}=\max \left(0, y_{l-1}\right) xl=max(0,yl1)不满足0均值,因此将与Xavier中的情况不符

    • 如果 w l − 1 {w}_{l-1} wl1是关于0的对称分布, b l − 1 = 0 {b}_{l-1}=0 bl1=0,那么** y l − 1 {y}_{l-1} yl1是在0附近的均值为0的对称分布**,当激活函数为ReLU时,有 E [ x l 2 ] = 1 2 Var ⁡ [ y l − 1 ] E\left[x_{l}^{2}\right]=\frac{1}{2} \operatorname{Var}\left[y_{l-1}\right] E[xl2]=21Var[yl1],带入上式得到
      Var ⁡ [ y l ] = 1 2 n l Var ⁡ [ w l ] Var ⁡ [ y l − 1 ] \operatorname{Var}\left[y_{l}\right]=\frac{1}{2} n_{l} \operatorname{Var}\left[w_{l}\right] \operatorname{Var}\left[y_{l-1}\right] Var[yl]=21nlVar[wl]Var[yl1]

    • 若有多层网络,则公式变为
      Var ⁡ [ y L ] = Var ⁡ [ y 1 ] ( ∏ l = 2 L 1 2 n l Var ⁡ [ w l ] ) \operatorname{Var}\left[y_{L}\right]=\operatorname{Var}\left[y_{1}\right]\left(\prod_{l=2}^{L} \frac{1}{2} n_{l} \operatorname{Var}\left[w_{l}\right]\right) Var[yL]=Var[y1](l=2L21nlVar[wl])

    • 要使输入输出的方差不变,就需要对于每一层都有
      1 2 n l Var ⁡ [ w l ] = 1 , ∀ l \frac{1}{2} n_{l} \operatorname{Var}\left[w_{l}\right]=1, \quad \forall l 21nlVar[wl]=1,l

    • 这就能得出对于每一层只要设置 w l w_{l} wl方差为 2 / n l \sqrt{2 / n_{l}} 2/nl 的高斯分布即可

  4. 讨论

    • 使用高斯分布时训练深层网络会出现梯度消失现象

    • 变量的方差会从头到尾保持,如果输入没有标准化,方差的量级将会变得很大导致softmax overflow

    • 使用PReLU后,初始化公式变为 1 2 ( 1 + a 2 ) n l Var ⁡ [ w l ] = 1 \frac{1}{2}\left(1+a^{2}\right) n_{l} \operatorname{Var}\left[w_{l}\right]=1 21(1+a2)nlVar[wl]=1

    • 与Xavier初始化的比较

      • Xavier只考虑 n l Var ⁡ [ w l ] = 1 n_{l} \operatorname{Var}\left[w_{l}\right]=1 nlVar[wl]=1,设置方差为 1 / n l \sqrt{1 / n_{l}} 1/nl

      • Kaiming考虑 1 2 n l Var ⁡ [ w l ] = 1 \frac{1}{2} n_{l} \operatorname{Var}\left[w_{l}\right]=1 21nlVar[wl]=1,设置方差为 2 / n l \sqrt{2 / n_{l}} 2/nl

      • 两种初始化都能使浅层网络收敛,但Kaiming能使深层网络收敛并且速度更快

        《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》论文阅读笔记_第4张图片

      《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》论文阅读笔记_第5张图片

你可能感兴趣的:(论文阅读,Kaiming,神经网络,参数初始化,PReLU)