常见的参数初始化方法

根据网络结构选择

GRAM-Schmidt
高熵分布
超参搜索
uniform
Gaussian

均值和方差不偏移:

Xavier: 针对sigmoid & tanh
He/Kaiming: 针对relu

我们常见的几种初始化方法是按照“正态分布随机初始化——对应为normal”和按照“均匀分布随机初始化——对应为uniform”,这里就不再多说了,这里介绍几种遇见较少的初始化方法。

1、Glorot初始化方法— Xavier

(1)正态化的Glorot初始化——glorot_normal Glorot
正态分布初始化器,也称为 Xavier 正态分布初始化器。它从以 0 为中心,标准差为 stddev = sqrt(2 / (fan_in + fan_out)) 的截断正态分布中抽取样本, 其中 fan_in 是权值张量中的输入单位的数量, fan_out 是权值张量中的输出单位的数量。

在keras和tensorflow均有实现,以keras为例:
keras.initializers.glorot_normal(seed=None)

(2)标准化的Glorot初始化——glorot_uniform
Glorot 均匀分布初始化器,也称为 Xavier 均匀分布初始化器。
它从 [-limit,limit] 中的均匀分布中抽取样本, 其中 limit 是 sqrt(6 / (fan_in + fan_out)), fan_in 是权值张量中的输入单位的数量, fan_out
是权值张量中的输出单位的数量。

以keras为例:
keras.initializers.glorot_uniform(seed=None)

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

2、Kaiming初始化

Kaiming初始化,也称之为he初始化,也称之为msra初始化,出自大神 何凯明只手。即

Kaiming initializer=he initializer=msra initializer

因为前面讲了Glorot初始化不适合relu激活函数,所以 残差网络的作者何凯明在这篇论文中提出了ReLU网络的初始化方法:Kaming初始化。
作者的推导过程针对的其实是卷积网络的前向和反向过程。而为了和Xavier初始化方法保持一致,这里我们还是讨论全连接网络结构。
关于期望、方差的性质,我们已经在Xavier初始化一节介绍过了,这里不再重复。

在Xavier论文中,作者给出的Glorot条件是:
正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变。
这在本文中稍作变换: 正向传播时,状态值的方差保持不变;反向传播时,关于激活值的梯度的方差保持不变。

(1)正态化的kaiming初始化——he_normal
He 正态分布初始化器。
它从以 0 为中心,标准差为 stddev = sqrt(2 / fan_in) 的截断正态分布中抽取样本, 其中 fan_in是权值张量中的输入单位的数量,在keras中的实现为:
keras.initializers.he_normal(seed=None)
(2)标准化化的kaiming初始化——he_uniform
He 均匀方差缩放初始化器。
它从 [-limit,limit] 中的均匀分布中抽取样本, 其中 limit 是 sqrt(6 / fan_in), 其中 fan_in 是权值张量中的输入单位的数量。
keras.initializers.he_uniform(seed=None)

3、lecun初始化—出自大神Lecun之手。

(1)标准化化的kaiming初始化——lecun_uniform
LeCun 均匀初始化器。 它从 [-limit,limit]中的均匀分布中抽取样本, 其中 limit 是 sqrt(3 / fan_in), fan_in 是权值张量中的输入单位的数量。
keras.initializers.lecun_uniform(seed=None)

(2)正态化的kaiming初始化——lecun_normal
LeCun 正态分布初始化器。 它从以 0 为中心,标准差为 stddev = sqrt(1 / fan_in) 的截断正态分布中抽取样本, 其中 fan_in是权值张量中的输入单位的数量。
keras.initializers.lecun_normal(seed=None)

4、Batch Normalization

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

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

Scale and Shift作用
γ和βγ和β是学习到的参数,他们可以让标准正态分布变得更高/更胖和向左右偏移。

三、参数初始化方法的总结

在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值