nlp-keypoints
  • 前言
  • 中文NER掠影
    • overview
    • LatticeLSTM
    • WC-LSTM
    • SoftLexicon
    • FLAT
    • LEBERT
    • 中文NER总结
  • Embedding知识板块
    • Word2Vec
    • Transformer
    • Bert
    • XLNet
    • Albert
    • Roberta
  • ML/DL基础板块
    • 特征工程
    • 初始化
    • 激活函数
    • 正则化
    • Dropout
    • 损失函数
    • 优化方法
    • Attention
    • CNN
    • LSTM
    • CRF
    • Jieba分词原理
    • 其他统计学习
  • 知识图谱板块
    • Brat标注
    • NER
    • NRE
    • 远程监督
    • 事件图谱/事理图谱
  • 文本分类知识板块
    • FastText
    • TextCNN
    • DPCNN
  • 相似匹配板块
    • Ranking Loss
    • 匹配模型
  • 树模型知识板块
    • 决策树考点
    • Bagging vs Boosting
    • GBDT考点
    • Xgboost
  • 面试复盘整理
    • MM科技
    • V哥面的知识图谱
    • HS
    • HSJY
    • HM医疗
    • 平安科技
    • M科技
由 GitBook 提供支持
在本页
  • 1. Xavier初始化(2010年)
  • 1.1 参数初始化的意义
  • 1.2 Glorot条件
  • 1.3 Xavier初始化的缺点
  • 2. Kaiming初始化(2015年)
  • 2.1 Kaiming原理

这有帮助吗?

  1. ML/DL基础板块

初始化

上一页特征工程下一页激活函数

最后更新于5年前

这有帮助吗?

精品Blog:

1. Xavier初始化(2010年)

参考资料:

论文原文:

1.1 参数初始化的意义

参数初始化的目的是为了让神经网络在训练过程中学习到有用的信息,这意味着参数梯度不应该为0。而我们知道在全连接的神经网络中,参数梯度和反向传播得到的状态梯度以及入激活值有关:

  • 激活值饱和会导致该层状态梯度信息为0,然后导致下面所有层的参数梯度为0;

  • 入激活值为0会导致对应参数梯度为0。

所以如果要保证参数梯度不等于0,那么参数初始化应该使得各层激活值不会出现饱和现象且激活值不为0。

1.2 Glorot条件

在Glorot提出的Xavier初始化的文章中,给出了参数初始化的必要条件,其认为:

优秀的初始化应该使得各层的激活值和状态梯度的方差在传播过程中的方差保持一致:

∀(i,j),Var(hi)=Var(hj)∀(i,j),Var(∂cos t∂zi)=Var(∂cos t∂zj)\begin{align} \forall(i,j),& Var(h^i)=Var(h^j) \\\\ \forall(i,j),& Var(\frac{\partial cos \space t}{\partial z^i}) = Var(\frac{\partial cos \space t}{\partial z^j}) \end{align}∀(i,j),∀(i,j),​Var(hi)=Var(hj)Var(∂zi∂cos t​)=Var(∂zj∂cos t​)​​

其中:

hih^ihi表示第i层的激活值

∂cos t∂zi\frac{\partial cos \space t}{\partial z^i}∂zi∂cos t​表示第i层反向传播的梯度

那么,根据Glorot条件,一顿推导,可以得到满足Glorot条件的初始化的形式,应该是如下分布:

W∼U[−6ni+ni+1,6ni+ni+1]W \thicksim U\bigg[ -\frac{\sqrt 6}{\sqrt{n_i+n_{i+1}}},\frac{\sqrt 6}{\sqrt{n_i+n_{i+1}}} \bigg]W∼U[−ni​+ni+1​​6​​,ni​+ni+1​​6​​]

1.3 Xavier初始化的缺点

因为Xavier的推导过程是基于几个假设的:

  • 一个是激活函数是线性的,这并不适用于ReLU激活函数;

  • 另一个是激活值关于原点对称,这个不适用于sigmoid函数和ReLU函数。所以作者并没有对sogmoid网络应用Xavier初始化。

也就是说,Xavier初始化适用于tanh和Softsign这种关于原点对称的激活函数

2. Kaiming初始化(2015年)

实际上,对于深层神经网络来说,线性激活函数是没有价值,神经网络需要非线性激活函数来构建复杂的非线性系统。今天的神经网络普遍使用relu激活函数。所以Kaiming大神就针对Relu提出Kaiming初始化。

2.1 Kaiming原理

因为Relu在处理输入状态时,只有一半的激活,另一半是抑制不激活的,那么,在计算方差时,假设均值为0的Data通过Relu激活后,会在Output产生期望的偏移,这便不满足Xavier中的推导过程了。

全部推导过程参见原论文的第2章

最终得到最新的rescale系数:2n\sqrt{\frac{2}{n}}n2​​,同时,这里Kaiming初始化不同于Xavier初始化的均匀分布,而是正态分布。

也就是说,假如对于某一层的输入神经元的size是512,那么,对于该层的神经元的初始化应该就是:

Normalized random weights×2512Normalized \space random \space weights \times \sqrt{\frac{2}{512}}Normalized random weights×5122​​

参考资料:

论文原文:

https://towardsdatascience.com/how-to-initialize-a-neural-network-27564cfb5ffc
https://blog.csdn.net/weixin_35479108/article/details/90694800
Understanding the difficulty of training deep feedforward neural networks
https://www.jianshu.com/p/f2d800388d1c
Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification