深度学习参数初始化(weights initializer)策略

  1. 参数初始化的几个基本条件
    什么样的初始化参数才是最好的呢?这里直接引入几个参 数初始化的要求:

Glorot条件:优秀的初始化应该保证以下两个条件:

(1)各个层的激活值h(输出值)的方差要保持一致
(2)各个层对状态Z的梯度的方差要保持一致

  1. 关于方差的三个客观事实
    既然要保持上面的两个方差在各个网络层中不改变,那 也就是它实际上是会改变的,关于为什么会改变的公式推导,这里不详细说明了,直接引入三个基本的客观事实(两有关一无关):

(1)各个层激活值h(输出值)的方差与网络的层数有关

(2)关于状态Z的梯度的方差与网络的层数有关

(3)各个层参数W的梯度的方差与层数无关
参考论文:http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf

  1. 参数初始化的几点要求
    (1)参数不能全部初始化为0,也不能全部初始化同一个值,为什么,请参见“对称失效”;

(2)最好保证参数初始化的均值为0,正负交错,正负参数大致上数量相等;

(3)初始化参数不能太大或者是太小,参数太小会导致特征在每层间逐渐缩小而难以产生作用,参数太大会导致数据在逐层间传递时逐渐放大而导致梯度消失发散,不能训练

(4)如果有可能满足Glorot条件也是不错的

上面的几点要求中,(1)(2)(3)基本上是硬性要求,这也就衍生出了一系列的参数初始化方法,什么正态标准化等诸如此类的标准化方法。

  1. 常见的参数初始化方法
    (1)正态化的Glorot初始化——glorot_normal
    (2)标准化的Glorot初始化——glorot_uniform
    (3)Glorot初始化器的缺点

    因为Xavier的推导过程是基于几个假设的,其中一个是激活函数是线性的,这并不适用于ReLU,sigmoid等非线性激活函数;另一个是激活值关于0对称,这个不适用于sigmoid函数和ReLU函数它们不是关于0对称的。

  2. Batch Normalization

BN是将输入的数据分布变成高斯分布,这样可以保证每一层神经网络的输入保持相同分布。

优点

随着网络层数的增加,分布逐渐发生偏移,之所以收敛慢,是因为整体分布往非线性函数取值区间的上下限靠近。这会导致反向传播时梯度消失。BN就是通过规范化的手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值0方差1的标准正态分布,使得激活输入值落入非线性函数中比较敏感的区域。可以让梯度变大,学习收敛速度快,能大大加快收敛速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值