深度学习相关概念:权重初始化

  • 1.全零初始化(×)
  • 2.随机初始化
    • 2.1 高斯分布/均匀分布
      • 2.1.1权重较小—N(0,0.01)\pmb{\mathcal{N}(0,0.01)}N(0,0.01)​N(0,0.01)​​N(0,0.01)
      • 2.1.1权重较大—N(0,1)\pmb{\mathcal{N}(0,1)}N(0,1)​N(0,1)​​N(0,1)
      • 2.1.3存在问题:
    • 2.2 Xavier初始化
      • 2.2.1 原理
      • 2.2.2 N(0,1/N)\pmb{\mathcal{N}(0,1 / N)}N(0,1/N)​N(0,1/N)​​N(0,1/N)高斯分布
      • 2.2.3 Xavier初始化局限性
    • 2.3 He 初始化(MSRA)
  • 3.权重初始化总结

  权重初始化(weight initialization)又称参数初始化,在深度学习模型训练过程的本质是对weight(即参数 W)进行更新,但是在最开始训练的时候是无法更新的,这需要每个参数有相应的初始值。在进行权重初始化后,神经网络就可以对权重参数w不停地迭代更新,以达到较好的性能。

1.全零初始化(×)

  全零初始化是我们要避免的,它无法训练网络。因为全零初始化后,神经网络训练时,在反向传播时梯度相同,参数更新大学也一样,最后会出现输出层两个权值相同,隐层神经元参数相同,也就是说神经网络失去了特征学习的能力。通俗点说,把神经网络比作你在爬山,但身处直线形的山谷中,两边是对称的山峰。如果全零初始化,由于对称性,你所在之处的梯度只能沿着山谷的方向,不会指向山峰;你走了一步之后,情况依然不变。结果就是你只能收敛到山谷中的一个极大值,而走不到山峰上去。

2.随机初始化

2.1 高斯分布/均匀分布

  实验网络结构:10个隐层,1个输出层,每个隐层包含500个神经元,使用的双曲正切激活函数(tanh)。

2.1.1权重较小—N(0,0.01)\pmb{\mathcal{N}(0,0.01)}N(0,0.01)​N(0,0.01)​​N(0,0.01)

  除了前两层,后续所有层的激活值为0;此时,输入信息传递不到输出层;最终,网络得不到训练。小权重高斯初始化(小型网络中很常见),然而当网络越来越深的时候,会出现梯度消失的情况。

2.1.1权重较大—N(0,1)\pmb{\mathcal{N}(0,1)}N(0,1)​N(0,1)​​N(0,1)


  几乎所有的神经元都饱和了(不是-1就是1);前向传播时,神经元要么被抑制(0),要么被饱和(1)。此时,神经元局部梯度都是零,网络没有反向梯度流(梯度消失);最终,所有的参数得不到更新。

2.1.3存在问题:

  随机初始化其实很难的,尝试太小的值,信息传不过去(2.1.1中权重分布都在0),值太大的时候梯度信息传递过去了,他们又进入了饱和区,梯度缺变成了0(2.1.2中权重不是1就是-1),虽然能让我的梯度传过来的每个成员的这个算的结果不一样,得出来的更新全值不一样但是很多时候能更新的机会都没有。在2.1.1的前项传播中,信息流消失;在2.1.2的反向传播中的梯度消失了,网络是没法训练的。

  那到底怎么应该初始化呢?

  有效的初始化方法:使网络各层的激活值和局部梯度方差在传播过程中尽量保持一致;以保持网络中正向和反向数据流动。

2.2 Xavier初始化

2.2.1 原理

  假设一个神经元, 其输入为 z1,z2,⋯zNz_{1}, z_{2}, \cdots z_{N}z1​,z2​,⋯zN​, 这 NNN 个输入是独立同分布的; 其权值为 w1,……,wNw_{1}, \ldots \ldots, w_{N}w1​,……,wN​, 它们也是独立同分布的,且 www 与 zzz 是独立的; 其激活函数为 fff; 其最终输出 yyy 的表达式:
y=f(w1∗z1+⋯+wN∗zN)y=f\left(w_{1} * z_{1}+\cdots+w_{N} * z_{N}\right) y=f(w1​∗z1​+⋯+wN​∗zN​)
  基本思想: 使网络各层的激活值和局部梯度的方差在传 播过程中尽量保持一致, 即寻找 www 的分布使得输 出 y\mathrm{y}y 与输入 zzz 的方差一致.

  假设 f\pmb{f}f​f​​f 为双曲正切函数, w1,⋯,wN\pmb{w_{1}, \cdots, w_{N}}w1​,⋯,wN​​w1​,⋯,wN​​​w1​,⋯,wN​ 独立同分布, z1,⋯,zN\pmb{z_{1}, \cdots, z_{N}}z1​,⋯,zN​​z1​,⋯,zN​​​z1​,⋯,zN​ 独立同 分布, 随机变量w与 zzz 独立, 且均值都为 0 , 则有:
Var⁡(y)=Var⁡(∑i=1Nwizi)=∑i=1NVar⁡(wizi)=∑iN[E(wi)]2Var⁡(zi)+[E(zi)]2Var⁡(wi)+Var⁡(wi)Var⁡(zi)=∑iNVar⁡(wi)Var⁡(zi)=NVar⁡(wi)Var⁡(zi)\begin{aligned} \operatorname{Var}(y) &=\operatorname{Var}\left(\sum_{i=1}^{N} w_{i} z_{i}\right)=\sum_{i=1}^{N} \operatorname{Var}\left(w_{i} z_{i}\right) \\ &=\sum_{i}^{N}\left[E\left(w_{i}\right)\right]^{2} \operatorname{Var}\left(\mathrm{z}_{i}\right)+\left[E\left(z_{i}\right)\right]^{2} \operatorname{Var}\left(w_{i}\right)+\operatorname{Var}\left(w_{i}\right) \operatorname{Var}\left(z_{i}\right) \\ &=\sum_{i}^{N} \operatorname{Var}\left(w_{i}\right) \operatorname{Var}\left(z_{i}\right) \\ &=N\operatorname{Var}\left(\mathrm{w}_{i}\right) \operatorname{Var}\left(z_{i}\right) \end{aligned} Var(y)​=Var(i=1∑N​wi​zi​)=i=1∑N​Var(wi​zi​)=i∑N​[E(wi​)]2Var(zi​)+[E(zi​)]2Var(wi​)+Var(wi​)Var(zi​)=i∑N​Var(wi​)Var(zi​)=NVar(wi​)Var(zi​)​
  当且仅当var⁡(w)=1/N\pmb{\operatorname{var}(w)=1 / N}var(w)=1/N​var(w)=1/N​​var(w)=1/N 时, y\pmb{y}y​y​​y 的方差与 z\pmb{z}zzz 的方差一致。因此我们可以采用N(0,1/N)\pmb{\mathcal{N}(0,1 / N)}N(0,1/N)​N(0,1/N)​​N(0,1/N)的高斯分布,为输入神经元个数。

2.2.2 N(0,1/N)\pmb{\mathcal{N}(0,1 / N)}N(0,1/N)​N(0,1/N)​​N(0,1/N)高斯分布

  Xavier初始化可以帮助减少梯度消失的问题,使得信号在神经网络中可以传递得更深,在经过多层神经元后保持在合理的范围。每层神经元激活值的方差基本相同。符合正态分布,这样前向的信息流可以传递,反向传播梯度也可以更新。

2.2.3 Xavier初始化局限性

  Xavier初始化能够很好的 tanh 激活函数。但是对于目前最常用的 ReLU 激活函数,Xavier初始化表现的很差。

  在较浅的层中效果还不错,但是随着神经网络层数的增加,权重趋势却是越来越接近0。

  那如何解决ReLU激活函数的初始化?

  采用恺明初始化(He 初始化)

2.3 He 初始化(MSRA)

  He 初始化(MSRA)与Xavier初始化不同在哪里?

  Xavier初始化采用的是N(0,1/N)\pmb{\mathcal{N}(0,1 / N)}N(0,1/N)​N(0,1/N)​​N(0,1/N)高斯分布,He 初始化(MSRA)采用的是N(0,2/N)\pmb{\mathcal{N}(0,2 / N)}N(0,2/N)​N(0,2/N)​​N(0,2/N)高斯分布。

  He 初始化(MSRA)原理

  在ReLU网络中,假定每一层有一半的神经元被激活,另一半为0(x负半轴中是不激活的),所以要保持variance不变,只需要在Xavier的基础上再除以2:

3.权重初始化总结

  1. 好的初始化方法可以防止前向传播过程中的信息消失,也可以解决反向传递过程中的梯度消失。

  2. 激活函数选择双曲正切或者Sigmoid时,建议使用Xaizer初始化方法

  3. 激活函数选择ReLU或Leakly ReLU时,推荐使用He初始化方法

深度学习相关概念:权重初始化相关推荐

  1. 深度学习之权重初始化

    四种权重初始化方法: 把w初始化为0 对w随机初始化 Xavier initialization He initialization 把w初始化为0: 缺点: 因为如果把w初始化为0,那么每一层的神经 ...

  2. 深度学习相关概念:梯度下降

    深度学习相关概念:梯度下降法.动量法与自适应梯度 1. 梯度下降概念 2. 梯度下降的目的 3. 梯度下降的原理 4. 梯度计算 5. 梯度下降算法的类别及计算效率 5.1 批量梯度下降(BGD) 5 ...

  3. 深度学习相关概念:过拟合与欠拟合

    深度学习相关概念:过拟合与欠拟合 1.过拟合与欠拟合 2.应对过拟合 2.1最优方案 2.1次优方案 2.1.1L2正则化 2.1.2Dropout 随机失活 3.应对欠拟合 3.1解决方案:   在 ...

  4. 深度学习相关概念:感知器

    深度学习相关概念:交叉熵损失 摘要 背景 应用于深度学习的感知器. 数学定义 训练感知器 误差 学习率 摘要   如今,Keras.TensorFlow 或 PyTorch 等框架提供了对大多数深度学 ...

  5. 深度学习相关概念:交叉熵损失

    深度学习相关概念:交叉熵损失 交叉熵损失详解 1.激活函数与损失函数 1.1激活函数: 1.2损失函数: 2.对数损失函数(常用于二分类问题): 3.交叉熵.熵.相对熵三者之间的关系 4.交叉熵损失函 ...

  6. 深度学习的Xavier初始化方法

    在tensorflow中,有一个初始化函数:tf.contrib.layers.variance_scaling_initializer.Tensorflow 官网的介绍为: variance_sca ...

  7. 深度学习的权重衰减是什么_权重衰减和L2正则化是一个意思吗?它们只是在某些条件下等价...

    权重衰减== L2正则化? 神经网络是很好的函数逼近器和特征提取器,但有时它们的权值过于专门化而导致过度拟合.这就是正则化概念出现的地方,我们将讨论这一概念,以及被错误地认为相同的两种主要权重正则化技 ...

  8. 深度学习的权重衰减是什么_【深度学习理论】一文搞透Dropout、L1L2正则化/权重衰减...

    前言 本文主要内容--一文搞透深度学习中的正则化概念,常用正则化方法介绍,重点介绍Dropout的概念和代码实现.L1-norm/L2-norm的概念.L1/L2正则化的概念和代码实现- 要是文章看完 ...

  9. 深度学习--权值初始化

    什么是权值初始化 在神经网络的前向传播的过程中,需要设置输入到输出的权重. 为什么要权值初始化 正确的权值初始化可以促进模型的快速收敛,不正确的权值初始化可能使得模型在前向传播是发生发生信息消失,或在 ...

最新文章

  1. mysql 开启慢查询命令【转】
  2. mysql中begin end中变量定义_DECLARE只能用于BEGIN…END的开头部分定义局部变量,其作用范围只能在该BEGIN…END中。_学小易找答案...
  3. sqlserver/mysql按天,按小时,按分钟统计连续时间段数据
  4. 杭电oj 1001 c++版本
  5. 深圳 | 腾讯AI Lab招聘CVCG研究员及实习生
  6. 案例学习BlazeDS+Spring之五InSync03强类型
  7. WAPI在校园网应用中的证书安装
  8. 电视剧 | 黑镜S5E3 瑞秋洁柯小艾希莉
  9. 计算机视觉文献综述选题,机器视觉文献综述.doc
  10. 调查 问卷 设计 注意 - Web
  11. 【倒计时1天】PPP全球数字资产投资峰会-中国区北京首站之金融科技区块链支持可持续发展...
  12. 读书笔记-指数基金投资指南
  13. 网络核心之分组交换与电路交换
  14. appium测试代码nullpoint
  15. http请求返回302处理方案
  16. POE万兆上联网管POE交换机的特点
  17. 再续:~英语 1038个词根 217个后缀!
  18. git的使用推送代码到华为云、码云gitee、github
  19. 教你用PS制作创意分割海报,让海报更有新意
  20. openshift Certified Helm Charts 实践

热门文章

  1. 用苹果手机计算机程序二,两台iPhone怎么互传软件 苹果手机互传应用的3个小技巧...
  2. (开源免费)Python-Gui/PyQt-PySide精美动态登录模板
  3. 如何启用Ubuntu 18.04的鼠标键
  4. 神兵利器——使用LINQ to SQL检索和操作数据库
  5. 【Vue】后台管理系统
  6. 【操作系统】进程间的通信——管道
  7. eclipse问题(!MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.e)
  8. 0415学习笔记:3决策树
  9. 考研数学汤家凤 暑期答疑合集
  10. MSP430 G2553 单片机 口袋板 日历 时钟 闹钟 万年历 电子时钟 秒表显示