假设我们有⼀个训练数据x和对应的⽬标输出y。通常我们会通过在⽹络中前向传 播x,然后进⾏反向传播来确定对梯度的贡献。使⽤弃权技术,这个过程就改了。
我们会从随 机(临时)地删除⽹络中的⼀半的隐藏神经元开始,同时让输⼊层和输出层的神经元保持不变。 在此之后,我们会得到最终如下线条所⽰的⽹络。注意那些被弃权的神经元,即那些临时被删 除的神经元,⽤虚圈表⽰在图中:
我们 前向传播输⼊x,通过修改后的⽹络,然后反向传播结果,同样通过这个修改后的⽹络。
在⼀个⼩批量数据⼩批量的若⼲样本上进⾏这些步骤后,我们对有关的权重和偏置进⾏更新。 然后重复这个过程,⾸先重置弃权的神经元,然后选择⼀个新的随机的隐藏神经元的⼦集进⾏ 删除,估计对⼀个不同的⼩批量数据的梯度,然后更新权重和偏置。
通过不断地重复,我们的⽹络会学到⼀个权重和偏置的集合。当然,这些权重和偏置也是在 ⼀半的隐藏神经元被弃权的情形下学到的。
当我们实际运⾏整个⽹络时,是指两倍的隐藏神经 元将会被激活。为了补偿这个,我们将从隐藏伸进元出去的权重减半。
这个弃权过程可能看起来奇怪,像是临时安排的。为什么我们会指望这样的⽅法能够进⾏规 范化呢?
为了解释所发⽣的事,我希望你停下来想⼀下没有标准(没有弃权)的训练⽅式。特别 地,想象⼀下我们训练⼏个不同的神经⽹络,都使⽤同⼀个训练数据。
当然,⽹络可能不是从 同⼀初始状态开始的,最终的结果也会有⼀些差异。出现这种情况时,我们可以使⽤⼀些平均或者投票的⽅式来确定接受哪个输出。
例如,如果我们训练了五个⽹络,其中三个把⼀个数字 分类成“3”,那很可能它就是“3”。另外两个可能就犯了错误。这种平均的⽅式通常是⼀种强 ⼤(尽管代价昂贵)的⽅式来减轻过度拟合。原因在于不同的⽹络可能会以不同的⽅式过度拟 合,平均法可能会帮助我们消除那样的过度拟合。
那么这和弃权有什么关系呢?启发式地看,当我们弃权掉不同的神经元集合时,有点像我们 在训练不同的神经⽹络。所以,弃权过程就如同⼤量不同⽹络的效果的平均那样。不同的⽹络 会以不同的⽅式过度拟合了,所以,弃权过的⽹络的效果会减轻过度拟合。