@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 imes k imes c)的展开, 故(mathrm{x}_lin mathbb{R}^{k^2c}), 而(mathbf{y}_l in mathbb{R}^{d}), (W_l in mathbb{R^{d imes 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])一样, 需要
是实际中,我们前向后向可以任选一个(因为误差不会累积).