偏差与方差、过拟合与欠拟合中详细解释了什么是过拟合、其产生原因以及后果。
发生过拟合的原因,主要有以下两点:
那么针对过拟合的原因,应该如何抑制过拟合呢?
正则化可以理解为约束或者惩罚。
很多过拟合原本就是因为权重参数取值过大才发生的,该方法就是通过在学习的过程中对大的权重进行惩罚,来抑制过拟合。
神经网络的学习要减小损失函数的值。如果将权重记为
W
\boldsymbol{W}
W , L2 范数的权值衰减就是
1
2
λ
W
2
\frac{1}{2} \lambda \boldsymbol{W}^{2}
21λW2 , 然后将这个
1
2
λ
W
2
\frac{1}{2} \lambda \boldsymbol{W}^{2}
21λW2 加到损失函数上。
这里,
λ
\lambda
λ 是控制正则化强度的超参数。
λ
\lambda
λ 设置得越大, 对大的权重施加的惩罚就越重。此外,
1
2
λ
W
2
\frac{1}{2} \lambda \boldsymbol{W}^{2}
21λW2 开头的
1
2
\frac{1}{2}
21 是用于 将
1
2
λ
W
2
\frac{1}{2} \lambda \boldsymbol{W}^{2}
21λW2 的求导结果变成
λ
W
\lambda \boldsymbol{W}
λW 的调整用常量。
对于所有权重, 权值衰减方法都会为损失函数加上
1
2
λ
W
2
\frac{1}{2} \lambda \boldsymbol{W}^{2}
21λW2。
因此, 在求权 重梯度的计算中, 要为之前的误差反向传播法的结果加上正则化项的导数 λ W \lambda \boldsymbol{W} λW
L2正则化可以简单地实现,在某种程度上能够抑制过拟合。
但是,如果网络的模型变得很复杂,只用权值衰减就难以应对了。在这种情况下,我们经常会使用Dropout 方法。
Dropout是一种在学习的过程中随机删除神经元的方法。训练时,随机选出隐藏层的神经元,然后将其删除。被删除的神经元不再进行信号的传递。
训练时,每传递一次数据,就会随机选择要删除的神经元。然后,测试时,虽然会传递所有的神经元信号,但是对于各个神经元的输出,要乘上训练时的删除比例后再输出。

猛男技术控,回复:深度学习入门基于Python的理论与实现