• [Kaiming]Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification


    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 { egin{array}{ll} y_i, & y_i >0, \ a_i y_i, & y_i le 0. end{array} ight. ]

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

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

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

    Kaiming 初始化

    Forward case

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

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

    [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

    [ ag{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. ]

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

  • 相关阅读:
    git常用命令
    thinkjs框架发布上线PM2管理,静态资源访问配置
    登陆服务器提示“You need to run "nvm install N/A" to install it before using it.”
    CentOS 7.x 用shell增加、删除端口
    CentOS 7.X 安全手记
    Centos 7.x nginx隐藏版本号
    centos7磁盘挂载及取消
    CentOS 7.4上网速度慢,修改DNS!
    Centos7.4 安装Docker
    Nodejs 使用log4js日志
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/12760160.html
Copyright © 2020-2023  润新知