深度拾遗(08) - 权重初始化

初始化有三点个要求,

一个是不能有对称性,好比全为0.这样的反向传播对每个单元学习到的结果都同样。没有区分度学习不到东西。网络

另外一个要求是避免落入激活函数饱和区,致使梯度学习太慢。dom

第三点对于深度网络中的每一层,它们的输出方差应该尽可能相同,知足学习到的目标分布和原始分布一致(那咱们将其都转换到均值0方差1)。函数

知足第一点,用随机化,使用高斯分布,均匀分布都行。学习

知足第二点,让它的均值0方差1便可,不会跳跃到饱和区(sigmoid最明显,所以后来用ReLU了)。spa

知足第三点,采用Xavier初始化方法,输出输入方差一致。.net

详细说一下blog

Xavier

咱们假设输入输出的单元,均值0方差1。get

对于一个线性激活函数来讲,n个输入单元一个偏置b
class

它的方差计算方法

由于咱们假设均值为0,有

同时w的产生和输入的x天然是没什么关系,独立分布。

前向传播,反向传播的方差计算相似,所以知足下面便可。

具体来讲,对于sigmoid , \(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{1}{n^{[l-1]}})\)

ReLU, \(W^{[l]}=np.random.randn(shape)*np.sqrt(\frac{2}{n^{[l-1]}})\)


1
2
3

相关文章
相关标签/搜索