关于神经网络权值初始化的讲究

用神经网络来学习时,权值的初始化会会影响网络的学习速度,不好的初始化权值会使神经网络学习速度在学习过程中较快的下面可以举个例进入饱和期,速度很慢,下面可以举个例子说明这点


这是一个三层网络,一层输出层,一层隐层,一层输入层,输出层两个节点,隐层三个节点,输入层n个节点,假设我们采用梯度下降法调整权值,假设神经节点所用激活函数为梯度函数 1/(1+exp(-z)),设输入输入向量(x1,x2,..xn),每个分量假设为1,我们考察隐层那个绿色神经节点,则绿色节点输入值z=w1*x1+w2*x2+.....wn*xn=w1+w2+w3+..wn

假设我们用均值为0,方差为1的高斯随机变量初始化w1,w2,...2n,,假设这个神经节点的偏置也用均值为0,方差为1的高斯随机变量初始化那么一开始输入这个分量全为1的输入向量,那么z就服从均值为0方差为n+1高斯分布,假设n很大,比如说500,那么z方差就很大,它的分布图如下:


可以看出这个高斯分布很宽,z有很大的概率落在|Z|较大的范围上,也就是说z很有可能是一个绝对值较大的值,那么这样是如何影响到学习速度的呢,这里就要回到反向传播算法上了。

假设这个样本输入网络,所得误差C,,我们要求出C对绿色神经节点上某个权值的偏导数,比如说对w1的偏导数,这个东西可以衡量对w1权值的更新速度

设绿色神经元的输入为z,

那么

 

两个红色神经节节点的输入为z1,z2,

运用反向传播算法可得


可以看出会影响C对z的偏导数大小,也就会影响到C对w1的偏导数大小,主意:a对z的偏导数即为激活函数1/(1+exp(-z))在z这一点的导数,可以考察激活函数的形状


这个激活函数为sigmoid函数,此函数在z>>1或者z<<-1时导数很小,接近于0,那么返回到之前我们所求的的很大概率是一个绝对值较大的值,这样a对z的偏导数将会很小,最终导致w1,w2...wn,梯度下降更新权值速度变慢,也就是学习速度变慢,这个问题有办法解决吗,有一种方法可以解决,比如说我们初始化w1,w2,..wn权值为均值为0,方差为

的高斯随机变量时,初始化偏置为均值0,方差为1的高斯随机变量时,z服从均值为0,方差为2的高斯随机分布,这个z的方差很小,z很有可能是一个绝对值较小的值,比如说0.4,这样的,而sigmoid函数在靠近0的位置有较大导数,比较陡,C对z的偏导数就会比较大,这样学习速度自然也就相对较高了。这个例子就说明了权值初始化对网络学习速度的影响,看来权值初始化还是神经网络学习中一个有讲究的步骤。

当中绿色节点与第一个输出层节点的连接权值为w,与第二个输出层节点连接权值为w0



你可能感兴趣的:(机器学习)