He K, Zhang X, Ren S, et al. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification[C]. international conference on computer vision, 2015: 1026-1034.

@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

\[f(y_i) =
\left \{ \begin{array}{ll}
y_i, & y_i >0, \\
a_i y_i, & y_i \le 0.
\end{array} \right.
\]

其中\(a_i\)是作为网络的参数进行训练的.

等价于

\[f(y_i)=\max(0, y_i) + a_i \min (0,y_i).
\]

特别的, 可以一层的节点都用同一个\(a\).

Kaiming 初始化

Forward case

\[\mathbf{y}_l=W_l\mathbf{x}_l+\mathbf{b}_l,
\]

在卷积层中时, \(\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\).

\[\mathbf{x}_l=f(\mathbf{y}_{l-1}),
\]

则

\[c_l = d_{l-1}.
\]

假设\(w_l\)与\(x_l\)(注意没粗体, 表示\(\mathbf{w}_l, \mathbf{x}_l\)中的某个元素)相互独立, 且\(w_l\)采样自一个均值为0的对称分布之中.

则

\[Var[y_l] = n_l Var [w_lx_l] = n_lVar[w_l]E[x_l^2],
\]

除非\(E[x_l]=0\), \(Var[y_l] = n_lVar[w_l]Var[x_l]\), 但对于ReLu, 或者 PReLU来说这个性质是不成立的.

如果我们令\(b_{l-1}=0\), 易证

\[E[x_l^2] = \frac{1}{2} Var[y_{l-1}],
\]

其中\(f\)是ReLU, 若\(f\)是PReLU,

\[E[x_l^2] = \frac{1+a^2}{2} Var[y_{l-1}].
\]

下面用ReLU分析, PReLU是类似的.

故

\[Var[y_l] = \frac{1}{2} n_l ar[w_l]Var[y_{l-1}],
\]

自然我们希望

\[Var[y_i]=Var[y_j] \Rightarrow \frac{1}{2}n_l Var[w_l]=1, \forall l.
\]

Backward case

\[\tag{13}
\Delta \mathbf{x}_l = \hat{W}_l \Delta \mathbf{y}_l,
\]

\(\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})\), 所以

\[\Delta y_l = f'(y_l) \Delta x_{l+1}.
\]

假设\(f'(y_l)\)与\(\Delta x_{l+1}\)相互独立, 所以

\[E[\Delta y_l]=E[f'(y_l)] E[\Delta x_{l+1}] = 0,
\]

若\(f\)为ReLU:

\[E[(\Delta y_l)^2] = Var[\Delta y_l] = \frac{1}{2}Var[\Delta x_{l+1}].
\]

若\(f\)为PReLU:

\[E[(\Delta y_l)^2] = Var[\Delta y_l] = \frac{1+a^2}{2}Var[\Delta x_{l+1}].
\]

下面以\(f\)为ReLU为例, PReLU类似

\[Var[\Delta x_l] = \hat{n}_l Var[w_l] Var[\Delta y_l] = \frac{1}{2} \hat{n}_l Var[w_l] Var[\Delta x_{l+1}],
\]

这里\(\hat{n}_l=k^2d\)为\(\mathbf{y}_l\)的长度.

和前向的一样, 我们希望\(Var[\Delta x_l]\)一样, 需要

\[\frac{1}{2}\hat{n}_l Var[w_l]=1, \forall l.
\]

是实际中,我们前向后向可以任选一个(因为误差不会累积).

[Kaiming]Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification的更多相关文章

  1. 微软亚洲实验室一篇超过人类识别率的论文:Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification ImageNet Classification

    在该文章的两大创新点:一个是PReLU,一个是权值初始化的方法.下面我们分别一一来看. PReLU(paramter ReLU) 所谓的PRelu,即在 ReLU激活函数的基础上加入了一个参数,看一个 ...

  2. PReLU——Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

    1. 摘要 在 \(ReLU\) 的基础上作者提出了 \(PReLU\),在几乎没有增加额外参数的前提下既可以提升模型的拟合能力,又能减小过拟合风险. 针对 \(ReLU/PReLU\) 的矫正非线性 ...

  3. AlexNet论文翻译-ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks 深度卷积神经网络的ImageNet分类 Alex Krizhevsky ...

  4. 1 - ImageNet Classification with Deep Convolutional Neural Network (阅读翻译)

    ImageNet Classification with Deep Convolutional Neural Network 利用深度卷积神经网络进行ImageNet分类 Abstract We tr ...

  5. 《ImageNet Classification with Deep Convolutional Neural Networks》 剖析

    <ImageNet Classification with Deep Convolutional Neural Networks> 剖析 CNN 领域的经典之作, 作者训练了一个面向数量为 ...

  6. C++ Low level performance optimize 2

    C++ Low level performance optimize 2 上一篇 文章讨论了一些底层代码的优化技巧,本文继续讨论一些相关的内容. 首先,上一篇文章讨论cache missing的重要性 ...

  7. C++ Low level performance optimize

    C++ Low level performance optimize 1.  May I have 1 bit ? 下面两段代码,哪一个占用空间更少,那个速度更快?思考10秒再继续往下看:) //v1 ...

  8. [notes] ImageNet Classification with Deep Convolutional Neual Network

    Paper: ImageNet Classification with Deep Convolutional Neual Network Achievements: The model address ...

  9. ImageNet Classification with Deep Convolutional Neural Networks(译文)转载

    ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geo ...

随机推荐

  1. iOS 客户端获取七牛上传token

    一.官方参考文档: 1.上传策略http://developer.qiniu.com/article/developer/security/put-policy.html 2.上传凭证(即uptoke ...

  2. Android 小知识

    1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environmen ...

  3. Python实战之MySQL数据库操作

    1. 要想使Python可以操作MySQL数据库,首先需要安装MySQL-python包,在CentOS上可以使用一下命令来安装 $ sudo yum install MySQL-python 2. ...

  4. Copy elision in C++

    Copy elision (or Copy omission) is a compiler optimization technique that avoids unnecessary copying ...

  5. 侵入式&非侵入式

    侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如:Struts框架 非侵入式设计 引入了框架,对现有的类结构没有影响. 例如:Hibernate框架 / Spring ...

  6. Windows下80端口被占用的解决方法(SQL Server)

    查找80端口被谁占用的方法 进入命令提示行(WIN+R 输入 CMD),输入命令 netstat -ano|findstr 80 (显示包含:80的网络连接) ,就可以看到本机所有端口的使用情况,一般 ...

  7. IDEA 使用rest client测试

    一.进入 rest 控制台 idea 导航栏 ==> Tools ==> HTTP Client ==> Test RESTFUL Web Service 如图: 一般来说,idea ...

  8. JQuery 和 CSS 等选择器:

    JQuery 选择器: CSS 选择器:

  9. C#.NET编程小考30题错题纠错

    1)以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现 ...

  10. QT QApplication干了啥?

    ------------恢复内容开始------------ QCoreApplicationPrivate 会取得current thread; 在windows平台创建TLS变量,记录线程信息,并 ...