[Kaiming]Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification
@article{he2015delving,
title={Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification},
author={He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian},
pages={1026--1034},
year={2015}}
概
本文介绍了一种PReLU的激活函数和Kaiming的参数初始化方法.
主要内容
PReLU
其中\(a_i\)是作为网络的参数进行训练的.
等价于
特别的, 可以一层的节点都用同一个\(a\).
Kaiming 初始化
Forward case
在卷积层中时, \(\mathbf{x}_l\)是\(k\times k \times c\)的展开, 故\(\mathrm{x}_l\in \mathbb{R}^{k^2c}\), 而\(\mathbf{y}_l \in \mathbb{R}^{d}\), \(W_l \in \mathbb{R^{d \times k^2c}}\)(每一行都可以视作一个kernel), 并记\(n=k^2c\).
则
假设\(w_l\)与\(x_l\)(注意没粗体, 表示\(\mathbf{w}_l, \mathbf{x}_l\)中的某个元素)相互独立, 且\(w_l\)采样自一个均值为0的对称分布之中.
则
除非\(E[x_l]=0\), \(Var[y_l] = n_lVar[w_l]Var[x_l]\), 但对于ReLu, 或者 PReLU来说这个性质是不成立的.
如果我们令\(b_{l-1}=0\), 易证
其中\(f\)是ReLU, 若\(f\)是PReLU,
下面用ReLU分析, PReLU是类似的.
故
自然我们希望
Backward case
\(\Delta \mathbf{x}_l\)表示损失函数观念与\(\mathbf{x}_l\)的导数, 这里的\(\mathbf{y}_l\)与之前提到的\(\mathbf{y}_l\)有出入, 这里需要用到卷积的梯度回传, 三言两语讲不清, \(\hat{W}_l\)是\(W_l\)的一个重排.
因为\(\mathbf{x}_l=f(\mathbf{y}_{l-1})\), 所以
假设\(f'(y_l)\)与\(\Delta x_{l+1}\)相互独立, 所以
若\(f\)为ReLU:
若\(f\)为PReLU:
下面以\(f\)为ReLU为例, PReLU类似
这里\(\hat{n}_l=k^2d\)为\(\mathbf{y}_l\)的长度.
和前向的一样, 我们希望\(Var[\Delta x_l]\)一样, 需要
是实际中,我们前向后向可以任选一个(因为误差不会累积).