深度学习:权重参数相关知识(深度学习入门:基于Python的理论与实现 (斋藤康毅)))

时间:2024-10-28 21:52:54

在神经网络的学习中,权重的初始值特别重要,经常关系到神经网络的学习能否成功。
第一点,权重初始值不能设置为0,严格说权重初始值不能设为同样的值,是因为在误差反向传播法中,所有权重值都会进行相同的更新(参考我的博客:“深度学习:简单计算图的反向传播传递导数计算”中乘法节点反向传播的规则),所以为了防止“权重均一化”,必须随机生成初始值

第二点,当激活函数为sigmoid或tanh等S型曲线函数时,初始值使用Xavier初始值(Xavier初始值是以激活函数是线性函数为前提而推导出来的。因为sigmoid函数和tanh函数左右对称,且*附近可以视作线性函数,所以适合使用Xavier初始值。Xavier初始值:与前一层有n个节点连接时,初始值使用标准差为 的分布n 个节点使用标准差为 1/根号n 的高斯分布进行初始化使用Xavier初始值后,前一层的节点数越多,要设定为目标节点的初始值的权重尺度就越小)。当激活函数使用ReLu时,权重初始值使用He初始值(当前一层的节点数为n时,He初始值使用标准差为2/根号n的高斯分布,可以解释为,因为ReLU的负值区域的值为0,为了使它更有广度,所以需要Xavier初始值2倍的系数)。

第三点,若设定了合适的权重初始值,则各层的激活值分布会有适当的广度,从而可以顺利地进行学习。Batch Normalization方法可以强制性地调整激活值(激活函数的输出数据)的分布,使各层拥有合适的广度。
Batch Norm的优点:
• 可以使学习快速进行(可以增大学习率)。
• 不那么依赖初始值(对于初始值不用那么神经质)。
• 抑制过拟合(降低Dropout等的必要性)。
在这里插入图片描述在这里插入图片描述上式做的是将将mini-batch的输入数据{x1, x2, … , xm}变换为均值为0、方差为1的数据 ,非常简单。通过将这个处理插入到激活函数的前面(或者后面),可以减小数据分布的偏向。接着,Batch Norm层会对正规化后的数据进行缩放和平移的变换,用数学式可以如下表示。
在这里插入图片描述在这里插入图片描述几乎所有的情况下都是使用Batch Norm时学习进行得更快。同时也可以发现,实际上,在不使用Batch Norm的情况下,如果不赋予一个尺度好的初始值,学习将完全无法进行。