过拟合是所有机器学习,深度学习中可能出现的一个比较严重的问题。具体表现就是:你的模型在训练集上处理的效果非常好,但是在测试集上的表现就非常的差😰
以二元分类问题举例:
可以看出第一个模型可能采用的是简单的线性分类,效果不理想。第二个和第三个都能够正确的分类。但是为什么说第三个模型是过拟合呢?因为此时第三个模型虽然很精确地区分了所有的训练数据,但是他是通过记住训练数据的微小波动来得到这样一个“完美”的训练准确率的,但是此时这个模型只学到了当前训练数据集的特征,没有学到数据的整体特征,他不能成功的表达除了训练数据以外的其他数据,don’t generalize(概括)
根据人的工作年限预测工资的例子(回归):
现在有三个模型,对应的回归曲线:
当我们猜测模型是过拟合状态时就要使用正则化,过拟合状态的显著特点就是验证集具有不好的性能,验证集是模型没有“看到过”的数据,所以如果模型值学到了训练集数据的知识,那么在验证集上将具有很差的性能。所以在训练的过程中我们要不断的检测验证集的指标,如果发现验证集没有显著提升的话,这就是一个警报,告诉我们模型正在过拟合,我们就需要采取regularization techniques
一般解决overfitting问题的策略就是Regularization,easy stopping是其中的一个方法。
这个想法很简单,模型在训练的过程中通过不断的tune(调整)parameters,试图在training data上追踪loss function。我们现在再训练的同时保存一个validation data,同时记录在validation data上的loss function的值,当为我们发现validation set的loss没有提升的话,我们就不要运行完所有的epochs,直接stop。这种基于验证集性能的提前停止策略称为easy stopping。
从图中可以看出
正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”,通过对权重系数进行缩减
通常我们的损失函数是:
l
o
s
s
=
f
(
p
r
e
d
s
,
y
)
loss = f(preds,y)
loss=f(preds,y),其中
y
y
y是目标输出,
p
r
e
d
s
preds
preds是预测值
线性回归问题的预测值可以表示为:
p
r
e
d
s
=
W
X
+
b
preds=WX+b
preds=WX+b
L1/L2 regularization就是在这个损失函数的基础上加上一个惩罚项(penalty term)
Ω
(
W
)
\Omega(W)
Ω(W),可理解为模型“规模”的某种度量,参数
α
\alpha
α控制控制正则化强弱
l
o
s
s
=
f
(
p
r
e
d
s
,
y
,
W
)
+
α
Ω
(
W
)
L
1
:
Ω
(
W
)
=
∣
∣
W
∣
∣
1
=
∑
i
∣
W
i
∣
L
2
:
Ω
(
W
)
=
∣
∣
W
∣
∣
2
=
∑
i
W
i
2
loss = f(preds,y,W)+\alpha \Omega(W)\\ L1:\Omega(W)=||W||_1=\sum_i |W_i|\\ L2:\Omega(W)=||W||_2=\sum_i W_i^2\\
loss=f(preds,y,W)+αΩ(W)L1:Ω(W)=∣∣W∣∣1?=i∑?∣Wi?∣L2:Ω(W)=∣∣W∣∣2?=i∑?Wi2?
L1正则化使一些系数为零,这意味着模型将忽略这些特征。忽略最不重要的特征有助于强调模型的基本特征。
L2正则化技术试图保持模型的权重接近于零,但不是零,这意味着每个特征对输出的影响应该很小,而模型的精度应该尽可能高。