首先说一下什么叫做过拟合?
如上图所示,拟合的参数“完美”学习到了我们给出数据,生成的模型可以完全经过所有数据。但是这样的表现却只是在训练集,在测试集表现不好。而我们所需要的是具有更好泛化能力的黑色直线。
正则化
L
2
L_2
L2正则化:
C
=
C
0
+
λ
2
n
ω
T
ω
C =C_0 +\frac{\lambda }{2n} \omega^T\omega
C=C0+2nλωTω
C
0
C_0
C0代表原始的代价函数,后面的是正则化项。
λ
\lambda
λ是正则化系数,权衡正则化和
C
0
C_0
C0的比重。
L
2
L_2
L2正则化是如何防止过拟合的呢
∂
C
∂
ω
=
∂
C
0
∂
ω
+
λ
n
ω
∂
C
∂
b
=
∂
C
0
∂
b
\frac{\partial C}{\partial \omega} = \frac{\partial C_0}{\partial \omega} + \frac{\lambda}{n}\omega \\ \frac{\partial C}{\partial b} = \frac{\partial C_0}{\partial b}
∂ω∂C=∂ω∂C0+nλω∂b∂C=∂b∂C0
可以看到 L 2 L_2 L2正则化对b的更新没有影响,但是对于 ω \omega ω的更新有影响。
ω → ω − L e a r n i n g R a t e ∗ ∂ C ∂ ω \omega \rightarrow \omega - LearningRate * \frac{\partial C}{\partial \omega} ω→ω−LearningRate∗∂ω∂C
由于加上了正则化项,并且 λ > 0 \lambda>0 λ>0,所以会导致 ω \omega ω变得更小。
那么为什么
ω
\omega
ω变小可以防止过拟合?
更小的权值,从某种意义上说,表示网络的复杂度更低,对数据的拟合感刚好。
Dropout
dropout是在训练时随机屏蔽一定比例(超参数)的隐藏层单元,并保持输入和输出层不变。下一次epoch的时候,再次随机屏蔽一定比例的隐藏层单元。注意,第一次屏蔽的隐藏层单元在第二次的时候已经解除屏蔽。
数据增强
- 对图片进行翻转
- 随机的切割或者放大缩小图片
- 色彩抖动:随机增加亮度和对比度
- 随机层:在训练时随机忽略一些层,在测试时使用全部层。(最近新提出的)