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. 日常Java 2021/10/28

    Java lterator Java lterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList和HashSet等集合.lterator是Java迭代器最简单的 ...

  2. Ubuntu Linux安装QT5之旅

    1. QT 版本选择 如何选择QT版本,参考如下介绍 https://www.cnblogs.com/chinasoft/p/15226293.html 2.  在此以5.15.0解说 下载QT 版本 ...

  3. 大数据学习day16------第三阶段-----scala04--------1. 模式匹配和样例类 2 Akka通信框架

    1. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 1.1 模式匹 ...

  4. 容器之分类与各种测试(四)——multimap

    multiset和multimap的具体区别在于,前者的key值就是自己存储的value,后者的key与value是分开的不相关的. 例程 #include<stdexcept> #inc ...

  5. Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  6. 【Java 8】 Reduce方法

    一:reduce rudece方法:从一个流中生成一个值 三个重载方法: Optional<T> reduce(BinaryOperator<T> accumulator); ...

  7. 解决git push报错error: failed to push some refs to 的问题

    这个问题发生的背景一般是: 想把自己本地的某个项目关联到远程仓库并推送上去,接着他会做如下操作: 本地项目->远程创建仓库->本地关联远程->推送最新代码 最后一个步骤发生问题: 那 ...

  8. eclipse.ini顺序

    -vmargs需放在-Dfile.encoding=UTF-8之前,否则会出现乱码 举例: -startup plugins/org.eclipse.equinox.launcher_1.3.0.v2 ...

  9. BS版本的TCP程序

    // 使用Socket对象中的方法getInputStream,获取到网络字节输入流InputStream对象 InputStream is = socket.getInputStream();// ...

  10. ctfshow 红包题 武穆遗书

    偶然见看到这道题,就下载了看了看.确实是我自己的逆向能力不够,逆不动.但是我似乎找到了非预期... 下载程序,ida打开,发现不对.后来发现是加了upx壳,拿软件去一下.再次ida打开. 其中buff ...