背景知识
1 训练误差与泛化误差
训练误差,顾名思义,就是在训练集上表现出的误差,而后者是通过训练得到的模型在任意一个测试集上表现出的误差的期望,但通常直接通过测试集上的误差即(测试误差)来近似。
假设学习到的模型是
Y
=
f
^
(
X
)
Y = \hat{f}(X)
Y=f^(X),则
训练误差 是模型关于训练数据集的平均损失:
R
e
m
p
(
f
^
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
^
(
x
i
)
)
,
N
为
训
练
样
本
容
量
R_{emp}(\hat{f}) = \frac{1}{N}\sum_{i=1}^NL(y_i, \hat{f}(x_i)) , N为训练样本容量
Remp(f^)=N1i=1∑NL(yi,f^(xi)),N为训练样本容量
测试误差 是模型关于测试数据集的平均误差:
e
t
e
s
t
=
1
N
′
∑
i
=
1
N
′
L
(
y
i
,
f
^
(
x
i
)
)
,
N
′
为
测
试
样
本
容
量
e_{test} = \frac{1}{N'}\sum_{i=1}^{N'} L(y_i, \hat{f}(x_i)) , N'为测试样本容量
etest=N′1i=1∑N′L(yi,f^(xi)),N′为测试样本容量
训练误差小不代表泛化误差也小,我们评判一个模型的好坏一般不以训练误差小来评判,主要以测试误差小来评判,因为测试误差小的方法具有更好的预测能力,从而模型的泛化能力要更好。
2 欠拟合和过拟合
模型训练中通常会出现两个问题:
- 欠拟合:模型的训练误差较高
- 过拟合:模型的训练误差远小于模型的测试误差
其中欠拟合问题是比较好解决的,比如修改模型,或者增加训练迭代次数,调整学习率等超参数,都可以慢慢训练出较低训练误差的模型,但是过拟合问题是比较难解决的。最简单的解决方法就是增加数据集大小,但是数据集是很昂贵的,所以获取更多数据集不是很简单。
那么,正则化就是解决模型过拟合的方法。
正则化
1、奥卡姆剃刀思想
在同样能够解释已知观测现象的假设中,我们应该挑选“最简单”的那一个。
2、正则化原理
正则化是结构风险最小化策略的实现,若要正则化一个学习函数
f
(
x
;
θ
)
f(x;\theta)
f(x;θ)的模型,则可以给代价函数添加一个称为正则化项的惩罚。
一般具有如下形式:
min
c
k
\min_{c_k}
minck
min
f
∈
F
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
+
λ
J
(
f
)
\min_{f \in F}\frac{1}{N}\sum_{i=1}^NL(y_i, f(x_i)) + \lambda J(f)
f∈FminN1i=1∑NL(yi,f(xi))+λJ(f)
,其中第 1 项为 经验风险,第 2 项是正则化项,
λ
≥
0
\lambda \geq 0
λ≥0为调整两者之间关系的系数。
正则化的作用就是选择经验风险与模型复杂度同时较小的模型。
3、 L 1 L_1 L1 正则化
正则化项可以取不同的形式,比如在回归问题中,损失函数就是平方损失。
正则化项为参数向量的
L
1
L_1
L1 范数:
L
(
w
)
=
1
N
∑
i
=
1
N
(
f
(
x
i
;
w
)
−
y
i
)
2
+
λ
∥
w
∥
1
L(w) = \frac{1}{N}\sum_{i=1}^N(f(x_i; w) - y_i)^2 + \lambda \parallel w \parallel _1
L(w)=N1i=1∑N(f(xi;w)−yi)2+λ∥w∥1
4、 L 2 L_2 L2 正则化
正则化项为参数向量的
L
2
L_2
L2 范数:
L
(
w
)
=
1
N
∑
i
=
1
N
(
f
(
x
i
;
w
)
−
y
i
)
2
+
λ
2
∥
w
∥
2
L(w) = \frac{1}{N}\sum_{i=1}^N(f(x_i; w) - y_i)^2 + \frac{\lambda}{2} {\parallel w \parallel}^2
L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∥w∥2