【深度学习(一)】神经网络的初始化

本系列的文章为科研期间的知识面整理,内容在时间前后上并没有联系,可以视作是独立的板块

本篇为开篇之作,主要讲述在神经网络中的初始化问题。一般在神经网络中,我们将偏置初始化为0,原因在于该因素对于网络中的梯度流动并无影响。实际上神经网络中,我们需要考虑的是如何对神经网络中的权重进行初始化。

提出问题

我们知道大部分的神经网络都是使用梯度下降法来进行优化的,因此初始点的选择往往会对整个训练过程的收敛速度和精确程度造成极大的影响。
在这里插入图片描述
另一方面,为了规避在训练过程中,正向计算和反向梯度的爆炸(explod)或者消失(vanish),我们需要对权重的初始化进行一定的放缩,从而规避上述问题。

传统的初始化方法

在研究初始化问题之前,对于神经网络的初始化问题,一般有以下的两种讨论(不一定正确):

全部置0初始化

这是学习神经网络时候,最开始经常遇到的问题:为什么不能将神经网络中的参数全部置为0?(小孩子才做选择,我们大人直接全部置为0不好吗)
这种做法最明显的缺陷在于:由于整个神经网络中的参数都是初始化为0,因此在正向的计算时,所有的状态值、激活值的结果都是0;同时在反向计算时,所有的梯度也都是0。那么对于整个神经网络训练过程中的梯度流动而言,就相当于是梯度消失了,也就是没办法进行任何有效的训练。

采用正态分布的随机采样

这是一种在研究初始化问题之前,经常使用的方法。
该方法的缺陷在于,由于矩阵乘法的影响,在经过每一个线性层的时候,都会发生相同方向的方差放大或者缩小,因而会带来梯度爆炸梯度消失的问题。

经典的初始化方法

在2010年时,Xavier Glorot, Yoshua Bengio等人介绍了一种经典的Xavier初始化方法;在2016年时,Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun等人根据残差网络,并在xavier方法的基础上进行了改进,得到了Kaiming初始化

Xavier初始化

适用的网络
  • 输入的每个特征方差相同
  • 激活函数对称——每层的期望值为0
  • 激活函数在0处的导数为1
  • 初始时,状态值落在线性区域内,即导数为1
假设
  • 输入向量、向量矩阵和偏置向量相互独立
  • 权重矩阵的期望值为0
  • 输入向量的期望值为0
  • 偏置初始化为0
基本思想
  • 优秀的初始化的必要条件

    • 各层的激活值方差相同(激活函数的输出)
    • 各层的状态梯度方差相同(loss函数对于某一层的线性部分的输出的梯度)
  • 为确保输入向量和输出向量的方差相同,对权重矩阵进行放缩

    • 激活值的方差相同——该层权重的方差为入度的倒数
    • 状态梯度的方差相同——该层权重的方差为出度的倒数
  • 正向传播和反向传播对称,取两者维度的调和平均

优点
  • 初始时的激活值、反向梯度的方差相同
  • 状态梯度的方差比起原初始化,大了一个数量级(即取值较大,利于训练收敛)
缺陷
  • 未考虑非线性激活函数,对于非线性的神经网络作用不大
  • 激活函数需要关于原点对称,常用的sigmoid函数、ReLU函数不适用

Kaiming初始化

本质:针对ReLU激活函数的初始化
  • 证明了入度、出度取其一即可,无需取调和平均
  • 根据公式推导ReLU激活函数的初始化
基本思想
  • 优秀的初始化的必要条件
    • 各层状态值的方差相同(激活函数的输出)
    • 各层的激活值的梯度方差相同
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值