1. 摘要

本文尝试解释为什么在深度的神经网络中随机初始化会让梯度下降表现很差,并且在此基础上来帮助设计更好的算法。

作者发现 sigmoid 函数不适合深度网络,在这种情况下,随机初始化参数会让较深的隐藏层陷入到饱和区域。

作者提出了一个新的参数初始化方法,称之为 Xavier 初始化,来帮助深度网络更快地收敛。

2. 激活函数的作用以及训练过程中的饱和现象

2.1. 三种激活函数

\[Tanh(x)=\frac{1-e^{-x}}{1+e^{-x}}\]
\[Sigmoid(x)=\frac{1}{1+e^{-x}}\]
\[Softsign(x)=\frac{x}{1+|x|}\]

2.2. Sigmoid 函数

通过观察训练过程中每一个隐藏层激活值的均值和方差,我们可以发现第 4 层的激活值很快就进入到了饱和区域,非常接近于 0。由于 Sigmoid 函数在接近于 0 的时候梯度很小,这样的话反向传播过程就会学习得很慢,虽然最终网络会慢慢离开饱和区域,但往往学到的解也不是最优的。

2.3. Tanh 函数和 Softsign 函数

由于 Tanh 函数和 Softsign 函数接近于 0 的时候梯度近似线性,所以它们不会遇到像 Sigmoid 上面的情况。但是,采用 Tanh 作为激活函数时,从第一层到第四层的激活值却也会在训练过程中依次进入饱和区域。而采用 Softsign 的话,所有层都逐渐进入饱和区域,但这个过程会更慢一点。

在训练完成后,我们可以发现以 Tanh 作为激活函数,最终每层的激活值大多落在饱和区域和 0 附近;以 Softsign 作为激活函数,最终每层的激活值大多落在 (-0.6, -0.8) 和 (0.6, 0.8) 区间。

3. 梯度以及它们的传播

3.1. 损失函数

作者发现采用似然损失比用二次的均方误差要好,因为采用似然损失不容易陷入到平缓区域,不会让训练过程变得很慢。如下图所示,可以看到采用二次损失的损失函数有很多平缓区域。

3.2. Xavier 初始化

针对一个对称的激活函数,并且其在原点处的导数为 1,那么我们有:

根据以上定义,可以得到:

假设初始时我们位于线性区域,权重之间互相独立,并且输入的特征具有一样的方差 \(Var[x]\),第 \(i\) 层具有 \(n_i\) 个神经元,那么有:

可参考 Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification 对比进行分析。

在前向过程中,为了保持信息,让每一层都具有一样的方差,即:

那么我们可以得到:

同样,考虑梯度的反向传播,我们可以得到:

为了保证每一层梯度的方差一致,也即:

我们有:

若同时考虑到前向传播的反向传播的约束,我们想要:

对此,我们用下面的方法来初始化参数

其中,\(U\) 代表均匀分布,其方差为

\[\frac{(b-a)^2}{12} = \frac{2}{n_j+n_{j+1}}\]

正好符合我们的预期。

可以看到,在前向传播过程中,旧的初始化方法,越靠后的层激活值越容易陷入到 0 区域,而采用新的初始化方法后,每一层的激活值分布基本相同。

在反向传播过程中,旧的初始化方法,越靠前的层梯度值越容易陷入到 0 区域,而采用新的初始化方法后,每一层的梯度分布基本相同。

5. 实验结果

获取更多精彩,请关注「seniusen」!

Xavier——Understanding the difficulty of training deep feedforward neural networks的更多相关文章

  1. [Xavier] Understanding the difficulty of training deep feedforward neural networks

    目录 概 主要内容 Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural netwo ...

  2. Understanding the difficulty of training deep feedforward neural networks

    本文作者为:Xavier Glorot与Yoshua Bengio. 本文干了点什么呢? 第一步:探索了不同的激活函数对网络的影响(包括:sigmoid函数,双曲正切函数和softsign y = x ...

  3. Deep learning_CNN_Review:A Survey of the Recent Architectures of Deep Convolutional Neural Networks——2019

    CNN综述文章 的翻译 [2019 CVPR] A Survey of the Recent Architectures of Deep Convolutional Neural Networks 翻 ...

  4. Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解深度卷积神经网络中的有效感受野 ...

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

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

  6. Image Scaling using Deep Convolutional Neural Networks

    Image Scaling using Deep Convolutional Neural Networks This past summer I interned at Flipboard in P ...

  7. (转) Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance

    Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance 2018-1 ...

  8. 中文版 ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC ...

  9. 深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks

    本文主要参考Ensemble Methods for Deep Learning Neural Networks一文. 1. 前言 神经网络具有很高的方差,不易复现出结果,而且模型的结果对初始化参数异 ...

随机推荐

  1. fiddler的inspectors传入的参数乱码

    问题描述:如图Q1所示.传入的参数存在中文乱码问题. 本机:win7 系统,解决方法如下 1.windows按钮+R 2.输入regedit  +回车+是 3.HKEY_CURRENT_USER\So ...

  2. USB耳机声卡-音频输入/输出控制器:DP108替代兼容CM108

    DP108是一款完全替代CM108的高度集成的单芯片USB音频解决方案芯片.方便的USB即插即用的兼容性,用户可以快速创建易用性,高质量和便携式USB音频产品基于高度集成的单芯片解决方案.所有重要的模 ...

  3. PAT乙级1005

    1005 继续(3n+1)猜想 (25 分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程 ...

  4. maven错误The JAVA_HOME environment variable is not defined correctly

    晚上,当我准备将好的spring boot通过mvn clean package 打包成jar文件上传到linux服务器时,却在打包过程中出现了错误: C:\>mvn -version The ...

  5. [2012山东ACM省赛] Pick apples (贪心,全然背包,枚举)

    Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描写叙述 Once ago, there is a mystery yard which ...

  6. 填移动端坑系列一——如何让h5页面完美整屏显示

    原创哟,转载请附上本文连接(http://www.cnblogs.com/AliceX-J/p/6707908.html),作者 印前 后续更简单 前言: 最近让做一个h5的活动专题,便让我浩浩荡荡进 ...

  7. jQuery 基础与运用

    1.  jquery引入以及入口函数 引入方式 <!--方式一:下载到本地,引入路径--> <script src="jquery-3.1.1.min.js"&g ...

  8. 部署MongoDB复制集(副本集)

    环境 操作系统:Ubuntu 18.04 MongoDB: 4.0.3 服务器 首先部署3台服务器,1台主节点 + 2台从节点 3台服务器的内容ip分别是: 10.140.0.5 (主节点) 10.1 ...

  9. 简单的firebird插入速度测试

    Firebird3.0 插入1万条Guid,不带事务:5500ms 插入1万条Guid,带事务:2300ms mssql2008 插入1万条Guid,不带事务:1400ms 插入1万条Guid,带事务 ...

  10. JavaWeb基础—上传与下载

    1.上传(不能使用BaseServlet): 上传的作用,略 上传的要求(对表单和Servlet都有要求): 1.必须使用表单,而不能是超链接,method="post" 文件明显 ...