八、改进神经网络的学习方法(4):权重初始化

这篇博客探讨了原始权重初始化在深度学习中的缺点,导致梯度消失问题,影响学习速度。通过调整权重初始化为均值为0,标准差为输入神经元数量的平方根的高斯分布,可以改善这一状况。实验结果显示,改进后的初始化方法在MNIST数字分类任务中显著提高了训练速度和分类准确率。
摘要由CSDN通过智能技术生成

本博客主要内容为图书《神经网络与深度学习》和National Taiwan University (NTU)林轩田老师的《Machine Learning》的学习笔记,因此在全文中对它们多次引用。初出茅庐,学艺不精,有不足之处还望大家不吝赐教。

1. 原始权重初始化的缺点

  之前根据独立高斯随机变量来选择权重和偏置,其被归一化为均值为0,标准差1。但是这样的初始化方法会带来梯度学习算法变慢的缺点,下面举例说明。
  假设我们使用一个有大量输入神经元的网络,比如说1000个输入神经元,并且已经使用归一化的高斯分布初始化了连接第一个隐藏层的权重。现在我将注意力集中在这一层的连接权重上,忽略网络其他部分。为了简化,假设我们使用训练输入 x x x,其中一半的输入神经元值为0,另一半为1,虽然这种情况很特殊,但是结论是具有普遍适应性的。让我们考虑这一隐藏层的神经元权值输入 z = ∑ j w j x j + b z=\sum_jw_jx_j+b z=jwjxj+b。其中500个项消去了,因为对应的输入为0。所以 z z z 是遍历总共501个归 一化的高斯随机变量的和,包含500个权重项和额外的1个偏置项。因为独立随机变量和的方差是每个独立随机变量方差的和,因此 z z z 本身是一个均值为0标准差为 501 ≈ 22.4 \sqrt{501}\approx22.4 501 22.4 的高斯分布,如图1所示其实有一个非常宽的高斯分布,完全不是非常尖的形状

图1. 变量 $z$ 的分布情况

从图1可以看出 ∣ z ∣ |z| z 会变得很大,即 z &gt; &gt; 1 z&gt;&gt;1 z>>1 或者 z &lt; &lt; − 1 z&lt;&lt;-1 z<<1。如果是这样,隐藏神经元的输出就会接近1或者0,也就表示我们的隐藏神经元会饱和。由反向传播的公式可以知道,这些权重在我们进行梯度下降算法时会学习得非常缓慢,减慢学习速度。之前介绍的交叉熵代价函数只是在输出层有效,但对于隐藏神经元的饱和却一点作用都没有。
  我已经讨论了第一个隐藏层的权重输入。当然,类似的论证也适用于后面的隐藏层:如果后面隐藏层的权重也是用归一化的高斯分布进行初始化,那么激活值将会非常接近1或者0,学习速度也会相当缓慢。

2. 改进方法

  因为上述的方法中是由于权值输入 ∣ z ∣ |z| z 的方差很大导致这一现象的发生,因此应该限制他的方差。具体的方法为使用均值为0标准差为 1 n i n \frac{1}{\sqrt{{n_{in}}}} nin 1的高斯随机分布初始化权重,但是继续用均值为0标准差为1的高斯分布来对偏置进行初始化。这样权值输入 ∣ z ∣ |z| z 的均值仍然是0,根据独立随机变量和的方差是每个独立随机变量方差的和,方差的计算公式如下
S 2 = ( 1 n i n ) 2 n i n 2 + 1 = 3 2 ≈ 1.22 S^2=\left(\frac{1}{\sqrt{n_{in}}}\right)^2\frac{n_{in}}{2}+1=\sqrt{\frac32}\approx1.22 S2=(nin 1)22nin+1=23 1.22
得到具有尖锐峰值的高斯分布,如图2所示

图2. 改变独立随机变量方差后的权值输入的分布情况

很明显具有这样分布的神经网络更不可能饱和,也不大可能遇到学习速度下降的问题。注意到我们对于偏置值的初始化方法没有改变;有些人将所有的偏置初始化为0,依赖梯度下降来学习合适的偏置,但是因为差别不是很大。实际上,考虑到已经避免了饱和的问题,如何初始化偏置影响不大。

3. 实际效果

  让我们在 MNIST 数字分类任务上比较一下新旧两种权重初始化方式。同样,还是使用30个隐藏元,minibatch 的大小为10,规范化参数 λ = 5 \lambda = 5 λ=5,然后是交叉熵代价函数。我们将learningrate从 η = 0.5 \eta = 0.5 η=0.5 降到 η = 0.1 \eta = 0.1 η=0.1 ,因为这样会让结果在图像中表现得更加明显。实验结果如图3所示

图3. 改变方差前后实验效果对比图

如图3在经过一轮迭代后,第一种初始化方式的分类准确率在 87% 以下,而新的方法已经几乎达到了 93%。两种情形下,我们最终都获得了超过 96% 的准确率,但是新的 初始化技术带来了速度的提升。

  基于这些实验,看起来提升的权重初始化仅仅会加快训练,不会改变网络的最终性能。然而,在第四章,我们会看到一些例子里面使 1 n i n \frac1{n_{in}} nin1用初始化权重的长期运行 的结果要显著更优。因此,不仅仅能够带来训练速度的加快,有时候在最终性能上也有很大的提升。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值