正态分布,初始化w、b

正态分布,初始化w、b_第1张图片
正态分布

如果均值=0, 方差=1, 标准正太分布

智商, 均值= 100, 标准差= 15

均值: mean, average   x_bar = sum(xi, i = 1 ....n) / n,  一组数据它的中心趋势的衡量

标准差: standard deviation,  sigma = sqrt(sum((xi - x_bar)^2, (i=1, .... n)) / (n-1))

方差: 标准差^2 = 方差

X = (x1, x2, x3, x3, x5) = 1, 2, 3, 4, 5

x_bar = (1+2+3+4+5)/5= 15/5 =3

sqrt(((1-3)^2 + (2-3)^2 + (3-3)^2 + (4-3)^2 + (5-3)^2) / (5 - 1))

= sqrt( 4 + 1 + 0 + 1+ 4) / 4))

= sqrt(2.5)

= 1.58

 方差 = 1.58^2 = 2.5

假设如下神经网络

正态分布,初始化w、b_第2张图片

输入x: 一半是0, 一半是1, 一共1000个输入层

结果: 一半消失了, 剩下的500个1, 加上b, 分布: 标准差: sqrt(501) = 22.4

正态分布,初始化w、b_第3张图片
以0为均值、22.4为方差的图像

z很多都远远大于1, 或者远远小于-1, 根据sigmoid函数

正态分布,初始化w、b_第4张图片

 输出的值都接近0和1, 当权重变化时, 更新量很小, 对于更新后面的层, 更新量很小,学习很慢,

使隐藏层饱和了, 跟之前我们说的输出层饱和问题相似, 对于输出层,我们用改进的cost函数,比如cross-entropy, 但是对于隐藏层, 我们无法通过cost函数来改进

更好的方法来初始化权重?

从正态分布均值=0, 标准差差等于 1/sqrt(n_in:输入层神经元个数的开放)

重复500个1, 500个0作为输入时, z分布的标准差变成了sqrt(3/2) = 1.22

证明: 标准差 = 1 / sqrt(n_in) => 方差 = 1 / n_in

n_in = 1000, 方差 = 1/ 1000

不等于0的x有500, z的方差500*(1/1000) + b = 1/2 + 1 = 3/2

z的标准差变成了 sqrt(3/2)

正态分布,初始化w、b_第5张图片

大部分z在1和-1之间, 神经元没有饱和, 学习过程不会被减慢。

你可能感兴趣的:(正态分布,初始化w、b)