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. adhere, adjust, adjacent

    adhere to stick,不是to here. 在古英语里,stick是twig(细树枝).fasten(想必是用twig来固定).后引申为粘住.stick还有stab, pierce的意思,想 ...

  2. 大数据学习day29-----spark09-------1. 练习: 统计店铺按月份的销售额和累计到该月的总销售额(SQL, DSL,RDD) 2. 分组topN的实现(row_number(), rank(), dense_rank()方法的区别)3. spark自定义函数-UDF

    1. 练习 数据: (1)需求1:统计有过连续3天以上销售的店铺有哪些,并且计算出连续三天以上的销售额 第一步:将每天的金额求和(同一天可能会有多个订单) SELECT sid,dt,SUM(mone ...

  3. 【Reverse】每日必逆0x00

    附件:https://files.buuoj.cn/files/aa4f6c7e8d5171d520b95420ee570e79/a9d22a0e-928d-4bb4-8525-e38c9481469 ...

  4. 爬虫系列:存储 CSV 文件

    上一期:爬虫系列:存储媒体文件,讲解了如果通过爬虫下载媒体文件,以及下载媒体文件相关代码讲解. 本期将讲解如果将数据保存到 CSV 文件. 逗号分隔值(Comma-Separated Values,C ...

  5. Kotlin 学习(2)

    属性和字段 1.声明属性 Kotlin中可以使用var关键字声明可变属性,或者用val关键字声明只读属性,属性的类型在后面,变量名在前面,中间加冒号和空格. public class Address ...

  6. c学习 - 第三章:数据类型、运算符与表达式

    数据类型 基本类型 整型 短整型(short int) 基本整型(int) 长整型(long int) 字符型(char) 浮点型 单精度(float) 双精度(double) 长双精度(long d ...

  7. LocalDate计算两个日期相差天数

    import org.apache.commons.lang.StringUtils; import java.time.LocalDate; import java.time.ZoneId; imp ...

  8. 【Linux】【Commands】基础概念及常用基础命令

    命令的语法通用格式: ------------------------------------------------ #COMMAND OPTIONS ARGUMENTS 发起命令:请求内核将某个二 ...

  9. Java Log4j 配置文件

    ### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.lo ...

  10. 搭建mybatis开发环境

    1.创建工程 <groupId>com.hope</groupId>     <artifactId>day01_eesy_01mybatis</artifa ...