解析深度学习神经网络权重初始化

以全连接模型为例:输入数据为a[784]的数组,模型共2层神经元,第一层100个,第二层即输出层为10个神经元,则第一层的权重有[784,100]个,截距有[100]个,第二层有[100,10]个权重,截距[10]个,代码用W1表示第一层权重矩阵,B1表示截距行向量,W2表示第二层权重矩阵,B2表示截距行向量,设置每次输入101批数据,则输入数据矩阵为[101,784],用X表示,输入标签为[101,10],用Y表示。
形状如下:
X: [101,784],每一行为一批数据
Y:[101,10]
W1: [784,100], 每一列为单个神经元的权重
B1: [100]
W2: [100,10]
B2[10]
第一层输出:
FC1=relu(XW1+B1),B1进行了行广播
FC1: [101,100]
第二层输出:
FC2=softmax(FC1
W2+B2)
FC2: [101,10]
loss=FC2-Y
1.权重初始化为0:
分析:FC2: [101,10]的行向量全部一样,W(t+1)=W-k▲,▲为矩阵中每个元素的偏导数,这样进行梯度下降优化,权重矩阵最终稳定为均匀分布,且loss无法降下去,实际效果如下:
在这里插入图片描述

2,权重给随机值
分析,数值分散,无法收敛,损失降不下去,分布直方图如下
在这里插入图片描述

3.权重在0附近的小范围内给随机值。
如果神经层数较少,效果还不错(-0.1到0.1),如果层数较多,到后面层数的神经元输出逼近偏移值,与全0初始化类似,数值没有差异性,无法收敛,最后稳定成均匀分布,在2层神经元时,效果如下:
在这里插入图片描述
范围公式(-1/sqart(n),1/sqart(n))

3,权重在较大值附近的小范围内随机
分析,初始值较大,由于激活函数的斜率在-1到1之间,初始值过大(90到100),对应偏导数逼近0,无法收敛,效果如下。
在这里插入图片描述
初始化(100到100.01)效果如下:
在这里插入图片描述

4,无限定标准正态分布
效果可以,但由于范围不限定,会有少部分权重初始化值很大,偏导数趋近0,最好的是截断正态分布,标准差与激活函数有关,tanh或者sigmoid的标准差给1/sqrt(n),relu用sqrt(2/n)

猜你喜欢

转载自blog.csdn.net/qq_33345917/article/details/85017518