[Reading] Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification (2015/2)

1. 概述

  文章的主要贡献有:

  • 提出了一种带参数的 ReLU,称为 Parametric Rectified Linear Unit(PReLU),其参数可以在训练过程中学习,有利于针对具体任务学到相匹配的激活函数。PReLU 只需极少的额外参数就可以显著提高模型性能。
  • 提出了一种针对 rectifier 非线性的初始化方式,以训练更深和更宽的网络。
  • 最终得到模型在 ImageNet 2012 上达到了 4.94% 的错误率,首次超过了人类水平,具有里程碑的意义。

2. PReLU

2.1. 定义

  ReLU 是一种在深度学习中广泛使用的激活函数,相比传统的 S 形函数,ReLU 有助于加速收敛并获得更好的性能,其定义为

f(yi)={yi,ifyi>00,ifyi0

其中 f 表示非线性的激活函数,yi 是第 i 个通道的输入。

  ReLU 存在的一个问题是当输入小于零时梯度为零,反向传播时权重也就无法得到更新。为了解决这个问题,Leaky ReLU(LReLU) 在输出小于等于零时,也给与了较小的梯度,即

f(yi)={yi,ifyi>00.01yi,ifyi0

  文章进一步泛化了 LReLU 的概念,将输入小于时的斜率设置为一个可学习的变量,称为 PReLU,定义为

f(yi)={yi,ifyi>0aiyi,ifyi0

其中 ai 表示第 i 个通道的参数,即每个通道都有自己的参数,参数值通过学习得到,这样就可以在具体的任务中学习到专用的激活函数。上式也可以写为

f(yi)=max(0,yi)+aimin(0,yi)

ai=0 时,PReLU 就变成了 ReLU;当 ai 是一个很小的定值时,PReLU 就变成了 LReLU。PReLU 和 ReLU 的对比如 Figure 1 所示。

Figure 1
Figure 1

  虽然 PReLU 引入了额外的参数,但引入的额外参数总量非常少,每层的每个通道只有一个额外参数,这种 PReLU 是逐通道的(channel-wise)。文章还给出了通道共享(channel-shared)的变种,即

f(yi)=max(0,yi)+amin(0,yi)

注意其中的 a 没有下标,即一层中的所有通道共享一个 a,这样每层只会有一个额外参数。

2.2. 优化

  PReLU 中的参数 a 是在训练过程中通过反向传播学到的。对于某一层的第 i 个通道,ai 的梯度为

Eai=yiEf(yi)f(yi)ai

其中 E 为目标函数,Ef(yi) 是从更深一层传递过来的梯度,yi 表示对特征图的所有位置求和,f(yi)ai 是激活函数的梯度,为

f(yi)ai={0,ifyi>0yiifyi0

  对于 channel-shared 的 PReLU,式 (2) 变为

Eai=iyiEf(yi)f(yi)a

其中 i 表示对所有通道求和。

  参数更新的方法为

Δai:=μΔai+ϵEai

其中 μ 为动量,ϵ 为学习率。文章并没有使用正则化,因为正则化会让 ai 倾向于零,导致 PReLU 倾向于 ReLU。实验中,即便不使用正则化,ai 也很少大于 1。另外文章没有限制 ai 的取值范围,学习得到的激活函数可能是非单调的(如 ai<0)。文章初始化 ai=0.25

2.3. 比较实验

  文章使用 Table 1 所示的 14 层网络测试了不同激活函数的性能,结果如 Table 2 所示。

Table 1
Table 1
Table 2
Table 2

  由 Table 2 可见,两种 PReLU 的性能都要优于 ReLU,其中 channel-shared PReLU 较 baseline 的 ReLU 误差降低了 1.1%,而参数只增加了 13 个,PReLU 凭借极少的额外参数显著地提升了性能。

  Table 1 中还展示了各层学到的 PReLU 的系数,可见第一个卷积层的系数较大,此时 PReLU 对小于零的输入也会保留相当大的比例,因为第一层通常是检测边缘或纹理这些底层特征,卷积得到的正负响应都被保留下来,保留了更多信息。此外,对于 channel-wise 的 PReLU,越深的卷积层的系数越小,此时 PReLU 的非线性越来越强,具有更强的区别性。

3. 权重初始化

  对于卷积网络,通常会使用高斯分布对权重进行随机初始化,但这种方法在训练较深的网络时难以收敛。VGG 通过先训练一个较浅的网络来初始化较深的网络,但这样会耗费额外的时间,且容易收敛到较差的局部最优。之后出现的 Xavier 初始化方法假设激活值是线性的,不符合 ReLU 和 PReLU 的情况。

  针对使用 rectifier 非线性的网络,文章通过研究每一层响应的方差,提出了一种新的权重初始化方法,使得训练非常深(如 30 层)的网络变为可能。

3.1. 前向传播

  假设网络的第 l 个卷积层使用 dk×k 的过滤器,对于 k×k×c 的输入,将其变形为一个 nl×1 的向量 xlnl=k2c,网络输出的响应为

yl=Wlxl+bl

其中 Wld×nl 的矩阵,Wl 的每一行表示一个过滤器的权重。b 为偏置向量。响应 yl 是一个 d×1 的向量。

  文章使用相同分布独立地初始化 Wl 中的每个元素,并假设 xl 中每个元素相互独立且来自相同分布,且 xlWl 也是相互独立的。

  考虑 yl 中的第 i 个元素 yl(i),即第 i 个滤波器的输出,有

yl(i)=nln=1wl(i,n)xl(n)

其中 i 可以是任意通道,为了方便书写,将其省略,上式写为

yl=nln=1w(n)lx(n)l

其中 wl 为单个过滤器的权重,尺寸为 1×nl。等号两边取方差,有

Var[yl]=Var[nln=1w(n)lx(n)l]=nln=1Var[w(n)lx(n)l]w(n)lx(n)l

由于 w(n)l 都来自相同的分布,且 x(n)l 也都来自相同的分布,于是有

Var[yl]=nlVar[wlxl]

  假设 wl 均值为零,即 E[wl]=0。而当使用 ReLU 时,xl 是前一层 ReLU 的输出,不具有零均值。于是

Var[wlxl]=E[(wlxl)2]E[wlxl]2=E[w2l]E[x2l]E[wl]2E[xl]2=(E[w2l]E[wl]2)E[x2l]0E[xl]2=Var[Wl]E[x2l]

代入式 (6),得到

Var[yl]=nlVar[wl]E[xl]2

  假设 wl1 的分布关于零对称,且 bl1=0,则 yl1 的分布也关于零对称且均值为零,于是

E[x2l]=E[max(0,yl1)2]=12E[y2l1]yl1=12(E[y2l1]E[yl1]2)yl10E[yl1]=0=12Var[yl1]

带入式 (7),得到

Var[yl]=12nlVar[wl]Var[yl1]

考虑 L 层的情况,有

Var[yL]=Var[y1](Ll=212nlVar[wl])

  上式建立了 Var[yL]Var[y1] 的关系,我们希望避免各层响应的方差随层数的增加而指数增加或衰减,一个理想的情况是令

Ll=212nlVar[wl]=1,l

此时 Var[yL]Var[y1] 具有相同的方差,对应权重的初始化方法为均值为 0,标准差为 2/nl 的高斯分布,并初始化 b=0

  对于第一层,其输入为图像数据而不是前一层 ReLU 的输出,应有 n1Var[w1]=1,但就算按式 (10) 加上 12 的系数也影响不大,为了简便,同一使用式 (10) 进行初始化。

3.2. 反向传播

  对于反向传播,有

Δxl=ˆWlΔyl

其中 ΔxΔy 分别为梯度 ExEyΔy 表示 d 个通道的 k×k 个像素,变形为 k2d×1 的向量。记 ˆn=k2dˆW 是一个 c׈n 的矩阵。x 是一个 c×1 的向量,表示一个像素的梯度。假设 wlΔyl 相互独立,当 wl 使用关于零对称的分布初始化时,Δxl 对所有 l 都有零均值。

  反向传播中,还有

Δyl=f(yl)Δxl+1

其中 ff 的导数。对于 ReLU,f(yl) 等概率地取值为 01。假设 f(yl)Δxl+1 相互独立,对上式等号两边取期望,以及平方后取期望,分别得到

E[Δyl]=E[f(yl)Δxl+1]=E[f(yl)]E[Δxl+1]=12E[Δxl+1]=0

E[(Δyl)2]=E(f(yl)2Δx2l+1)=12E[Δx2l+1]=12Var[Δxl+1]

Var[Δyl]=E[(Δyl)2]E[Δyl]2=12Var[Δxl+1]

  结合式 (11),类似于前向传播的情况,有

Var[Δxl]=^nlVar[wl]Var[Δyl]=12^nlVar[wl]Var[Δxl+1]

考虑 L 层的情况,有

Var[Δx2]=Var[ΔxL+1](Ll=212ˆnlVar[wl])

  为了不让梯度随着层数的增加而指数增加或衰减,令

12ˆnlVar[wl]=1,l

(14) 对应权重的初始化方法为均值为 0,标准差为 2/ˆnl 的高斯分布。

  类似地,第一层的输入为图像数据,不需要计算 Δxl,为了简便起见,仍使用式 (14) 进行初始化,一层上额外的 12 系数影响不大。

  式 (14) 和式 (10) 形式类似,区别在于式 (14)ˆnl=k2ldl,而式 (10)nl=k2lcl=k2ldl1,二者都可以保证收敛。例如使用式 (14) 时,有 Var[wl]=2ˆnl,代入式 (9),得到

Var[yL]=Var[y1](Ll=212nl2ˆnl)=Var[y1](Ll=2dl1dl)=Var[y1]d1dL=Var[y1]c2dL

可见此时响应的方差只变化了一个常数比例,没有指数增加或衰减,也可以达到效果。

  对于使用 PReLU 的网络,式 (10) 变为

12(1+a2)nlVar[wl]=1,l

(14) 变为

12(1+a2)ˆnlVar[wl]=1,l

a=0 时,PReLU 变为 ReLU,以上两式也分别变回式 (10) 和式 (14)

3.3. 性能比较

  文章将所提出的初始化方法(He)与 Xavier 初始化进行了对比。Figure 2 展示了一个 22 层网络的训练误差,可见两种初始化方法都可以收敛,但 He 初始化的收敛速度更快,两种方法收敛后的性能相近。

  Figure 3 展示了一个 20 层网络的训练误差,此时 Xavier 初始化已经无法学习了,但 He 初始化仍可以收敛。

Figure 2
Figure 2
Figure 3
Figure 3

4. 实验结果

4.1. 网络架构

  文章给出了一系列网络架构如 Table 3 所示。其中 Model A 修改自 VGG-19,Model B 在 Model A 的基础上进一步加深,Model C 则在 Model B 的基础上进一步加宽。

Table 3
Table 3

4.2. ReLU 和 PReLU 性能比较

  文章给出了 ReLU 和 PReLU 性能比较如 Table 4 所示,可见对于不同的尺寸,使用 PReLU 网络的性能均高于 ReLU。

Table 4
Table 4

4.3. 模型性能

  文章给出了各模型的性能对比,如 Table 5、6、7 所示。

Table 5, 6, 7
Table 5, 6, 7

  注意 Table 7 中最后一行的 PReLU 网络达到了 4.94% 的 top-5 误差,而人类误差为 5.1%,此时网络性能已经超过了人类水平。进一步分析可知,模型擅长细粒度的识别,例如识别数据集中的 120 种狗;人类虽然能很轻松地识别狗,但却较难识别狗的具体种类。相比之下,人类更擅长结合上下文和其他知识来辅助识别。

  文章也指出,虽然模型在 ImageNet 图像识别的任务上超过了人类水平,但并不意味着在一般的目标识别任务上,计算机视觉超过了人类视觉水平,但文章的成果展示了算法的巨大潜力。