Python:Dropout 和局部最低点与随机重新开始 (七十二)

Dropout

现在再介绍另一种防止过拟合的方法,我们在训练神经网络的时候,有时候部分网络权重非常大,对终对训练起到主要作用,而网络的另一部分,并没有起到多大作用,所以没有被训练,要解决这一问题,有时候在训练中,我们将这部分关掉,让网络的其他部分接受训练,更具体的情况是,我们经历了一些 epoch,随机关闭某些节点,并说不要经过某些节点,在这种情况下,其他节点需要承担责任,在训练中起到更大的作用。

例如,在第一个 epoch 中,我们不能使用这个节点,我们在前向反馈和反向传播时不使用这个节点
file

我们放弃这些节点的方式是给算法一个参数,该参数就是每个节点在特定 epoch 被放弃的概率,例如,如果设为 0.2, 意味着对于每个 epoch 每个节点被关闭的概率是 20%,注意某些节点被关闭的次数可能比其他节点的要多,其他一些节点可能从来都不会被关闭,这是正常的,因为我们一遍一遍地重复,平均下来每个节点都会得到相同的处理过程。这个方法叫做 Dropout,它在神经网络训练中非常常见和实用。

file

局部最低点

file

当我们使用梯度下降到局部最低点时,再无法继续下降,怎么办呢,我们需要使用其他方法

随机重新开始

一种解决方法是随机重新开始,很简单,我们从几个随机的不同地点开始,从所有这些地点进行梯度下降,这样就增大了抵达全局最低点或者至少是非常低的局部最低点的概率。

file

file

为者常成,行者常至