1.误差、损失函数
1.1 误差
模型的输出结果会和其对应的真实值之间往往会存在一些差异,该种差异称为该模型的输出误差,简称为误差。
1.2 损失函数
为了便于误差分析,通常需要构造某种函数用于度量模型对单个样本的输出误差,这样的函数被称为损失函数。具体的说,对于给定的机器学习模型
f
f
f,假设该模型对应于输入样本
X
X
X的输出为
y
^
=
f
(
X
)
\hat{y} = f(X)
y^?=f(X),与
X
X
X相对应的实际真实值为
y
y
y,则可以用
y
y
y和
f
(
x
)
f(x)
f(x)为自变量的某个函数
L
(
y
,
f
(
X
)
)
L(y, f(X))
L(y,f(X))作为损失函数来度量模型
f
f
f在输入样本
X
X
X下的输出误差。
以下两种损失函数常常用于度量回归模型输出误差:
(1).平方损失函数
L
(
y
,
f
(
X
)
)
=
[
y
?
f
(
X
)
]
2
L(y, f(X)) = [y - f(X)]^2
L(y,f(X))=[y?f(X)]2
(2).绝对值损失函数
L
(
y
,
f
(
x
)
)
=
∣
y
?
f
(
x
)
∣
L(y, f(x)) = |y - f(x)|
L(y,f(x))=∣y?f(x)∣
2.整体误差、泛化误差、训练误差
2.1 整体误差
在机器学习中,面向单个样本的的损失函数函数所度量的只是模型在某个特定样本下的输出误差,不能很好的反映模型在某个样本集上对所有样本的整体计算精确度。因此需要进一步定义面向某个特定样本的集的综合误差,通常称为该样本集上的整体误差。
对于任意给定一个
n
n
n元样本集
S
=
(
X
1
,
y
1
)
,
(
X
2
,
y
2
)
,
…
,
(
X
n
,
y
n
)
S = {(X_1, y _1), (X_2, y_2), \dots, (X_n, y_n)}
S=(X1?,y1?),(X2?,y2?),…,(Xn?,yn?),模型
f
f
f在
S
S
S上的整体误差
R
S
(
f
)
R_S(f)
RS?(f)定义为:
R
s
(
f
)
=
E
[
L
(
y
,
f
(
X
)
)
]
=
1
n
∑
i
=
1
n
L
(
y
i
,
f
(
X
i
)
)
R_s(f) = E[L(y, f(X))] = \frac{1}{n} \sum^{n}_{i = 1}L(y_i, f(X_i))
Rs?(f)=E[L(y,f(X))]=n1?i=1∑n?L(yi?,f(Xi?)) 即将
R
S
(
f
)
R_S(f)
RS?(f)定义为
S
S
S中所有单个样本所对应的损失函数的平均值。
2.2 泛化误差
对于某个给定的机器学习任务,假设与该任务相关的所有样本构成的集合为
D
D
D,则机器学习模型在样本集合
D
D
D上的整体误差称为该模型关于该学习任务的泛化误差。具体的来说,令样本集合
D
D
D中所有样本的概率分布为
P
(
D
)
P(D)
P(D),模型
f
f
f对输入样本
X
X
X的输出为
y
^
=
f
(
X
)
\hat{y} = f(X)
y^?=f(X),
X
X
X所对应的真实值为
y
y
y,则可将模型
f
f
f的泛化误差定义为:
R
e
x
p
(
f
)
=
E
P
(
D
)
[
L
(
y
,
f
(
X
)
]
R_{exp}(f) = E_{P(D)}[L(y, f(X)]
Rexp?(f)=EP(D)?[L(y,f(X)] 泛化误差表示机器学习模型在整个样本集合
D
D
D上的平均误差,是刻画机器学习模型普适性的重要指标,作为模型求解和模型评估的基本依据,它在机器学习的过程中发挥着即为重要的作用。然而,精确计算模型的泛化误差需要知道整个样本集合
D
D
D所有样本的真实值和概率分布,这通常是不可行的。因此,一般无法计算泛化误差的精确值,需要采用某些便于计算的度量指标作为泛化误差的近似代替值。
2.3 训练误差
机器学习的模型训练的目标是尽可能地获得普适性或泛化性更好的模型
※ 评价机器学习模型的好坏:泛化能力的强弱
理论上要求模型的泛化误差达到最小。由于通常无法直接计算,更难以直接对泛化误差进行优分析,由于训练样本通常采样采样来自整个样本集合
D
D
D,训练样本集通常与
D
D
D有着比较相似的样本概率分布,故一般采用训练误差近似替代泛化误差来对模型进行训练。
所谓训练误差,是指模型在训练样本集合上的整体误差,也成为经验风险,具体的说,对于任意给定的
n
n
n元训练样本集合
G
=
(
X
1
,
y
1
)
,
(
X
2
,
y
2
)
,
…
,
(
X
n
,
y
n
)
G = {(X_1, y_1), (X_2, y_2), \dots, (X_n, y_n)}
G=(X1?,y1?),(X2?,y2?),…,(Xn?,yn?),,假设模型
f
f
f输入样本
X
X
X的预测输出为
y
^
=
f
(
X
)
\hat{y} = f(X)
y^?=f(X),则该模型关于训练样本集
G
G
G的训练误差定义为
R
e
m
p
(
f
)
=
1
n
∑
k
=
1
n
L
(
y
k
,
f
(
X
k
)
)
R_{emp}(f) = \frac{1}{n} \sum^{n}_{k = 1}L(y_k, f(X_k))
Remp?(f)=n1?∑k=1n?L(yk?,f(Xk?))。其中
X
k
X_k
Xk?表训练集中的第
k
k
k个样本;
f
(
X
k
)
f(X_k)
f(Xk?)表示模型对输入样本
X
k
X_k
Xk?的输出
y
^
k
\hat{y}_k
y^?k?;
y
k
y_k
yk?为机器学习任务中与输入
X
k
X_k
Xk?对应的真实取值。
因此,机器学习中的模型训练或优化通常使用最小化训练误差的方式来完成。该方法称为经验风险最小化方法,由此得到的优化模型是:
f
^
=
arg
?
f
∈
F
min
?
R
e
m
p
(
f
)
\hat{f} = \arg_{f \in F} \min R_{emp}(f)
f^?=argf∈F?minRemp?(f) 其中,
F
F
F为假设空间。
对于已训练出的模型,通常使用测试误差近似替代误差的方法来对该模型进行测试。所谓测试误差,是指模型在测试样本集上的整体误差。具体的来说,对于任意给定的
v
v
v测试样本集合
T
=
(
X
1
t
,
y
1
t
)
,
(
X
2
t
,
y
2
t
)
,
…
,
(
X
v
t
,
y
v
t
)
T = {(X^t_1,y^t_1), (X^t_2,y^t_2),\dots ,(X^t_v,y^t_v)}
T=(X1t?,y1t?),(X2t?,y2t?),…,(Xvt?,yvt?),该模型关于
T
T
T的测试误差的定义为:
R
t
e
s
t
=
1
v
∑
k
=
1
v
L
(
y
k
t
,
f
(
X
k
t
)
)
R_{test} = \frac{1}{v}\sum^{v}_{k = 1}L(y_k^t, f(X^t_k))
Rtest?=v1?k=1∑v?L(ykt?,f(Xkt?)) 其中,
X
k
t
X_k^t
Xkt?表示测试集中的第
k
k
k个样本,
f
(
X
k
t
)
f(X_k^{t})
f(Xkt?)表示模型输入
X
k
t
X_{k}^{t}
Xkt?的输出
y
k
t
y^t_k
ykt?;
y
k
t
y^t_k
ykt?为机器学习任务中与输入
X
k
t
X_k^t
Xkt?对应的实际真实值。
对于训练样本集合中的每个样本,每个样本都会存在一些普适整个训练样本集中
D
D
D的共性特征和一些仅仅适合于训练样本集的的个性特征,在机器学习中,模型训练的最理想效果就是充分提取训练样本的共性特征而尽量避免提取其个性特征,使训练出来的模型具有尽可能多广泛的普适性,即具有尽可能好的泛化性能。
模型的训练通常以最小化训练误差为标准,此时对于固定数量的训练样本,随着训练的不断进行,训练误差会不断降低,甚至趋近于零。如果模型训练误差过小,就会使训练出来模型基本完全适应于训练样本的特点。此时,训练模型不仅拟合了训练样本的共性特征,而且也拟合训练样本的个性特征,反而降低了训练模型的泛化性能,使得泛化误差不断增大。这种同时拟合训练样本的共性特征和个性特征的现象,在机器学习领域通常称为样本的过拟合现象。避免过拟合现象的一个有效措施是尽可能扩大训练样本的数量,尽可能降低样本在训练样本集上与整个样本集上概率分布的差异。
在机器学习的模型训练中,随着训练过程的进行,训练误差会一直不断降低,但泛化误差则会先减小,然后因产生过度拟合现象而导致不断增大。这种由于未能充分拟合训练样本共性特征造成模型泛化误差较大的而导致模型泛化能力较弱的现象称为模型训练的欠拟合现象。随着训练过程的不断进行,训练误差和泛化误差不断减少,欠拟合现象通常会逐步消失。
对于任意给定的初始模型
f
f
f,假设
D
1
,
D
2
,
…
,
D
s
D_1, D_2, \dots, D_s
D1?,D2?,…,Ds?是
s
s
s个不同的训练样本集合,其中每个训练样本集合,其中每个训练样本均采样自整个样本集合
D
D
D,通过训练样本集合
D
i
D_i
Di?训练初始模型
f
f
f所得到的优化模型记为
f
i
,
i
∈
(
1
,
2
,
…
,
s
)
,
y
^
=
f
i
(
X
)
f_i, i \in (1, 2, \dots, s), \hat{y} = f_i(X)
fi?,i∈(1,2,…,s),y^?=fi?(X)表示第
i
i
i个模型的对于输入样本
X
X
X的期望输出为:
E
[
F
(
X
)
]
=
1
s
∑
i
=
1
s
f
i
(
X
)
E[F(X)] = \frac{1}{s} \sum^{s}_{i = 1} f_i(X)
E[F(X)]=s1?i=1∑s?fi?(X) 其中,
F
(
X
)
=
(
f
1
(
x
)
,
f
2
(
x
)
,
…
,
f
s
(
x
)
)
T
F(X) = (f_1(x), f_2(x),\dots ,f_s(x))^T
F(X)=(f1?(x),f2?(x),…,fs?(x))T,可将其看作一个关于
f
(
X
)
f(X)
f(X)的离散随机变量。
此时模型
f
(
X
)
f(X)
f(X)对于测试样本集合变化的稳定性可用相应的方差指标进行度量。模型
f
(
X
)
f(X)
f(X)在训练样本集
D
1
,
D
2
,
…
,
D
s
D_1, D_2, \dots, D_s
D1?,D2?,…,Ds?下所得优化模型
f
x
(
X
)
,
f
2
(
X
)
,
…
,
f
s
(
X
)
f_x(X), f_2(X), \dots, f_s(X)
fx?(X),f2?(X),…,fs?(X)输出的方差为:
V
a
r
[
F
(
X
)
]
=
E
{
[
F
(
X
)
?
E
[
F
(
X
)
]
]
2
}
=
1
s
∑
i
=
1
s
[
f
i
(
X
)
?
E
[
F
(
X
)
]
]
2
Var[F(X)] = E\{[F(X) - E[F(X)]]^2\} = \frac{1}{s} \sum^{s}_{i = 1}[f_i(X) - E[F(X)]]^2
Var[F(X)]=E{[F(X)?E[F(X)]]2}=s1?i=1∑s?[fi?(X)?E[F(X)]]2 对于任意一个给定的初始模型
f
f
f,如果该模型变化的自由度较大,例如模型参数的数目较多或者参数的取值范围较大,则能够更好的适应训练样本数据的变化,能对多种不同的训练样本集合获得较好的拟合效果;反之,如果该模型的变化自由度较小,则模型适应训练数据变化的能力就变差,可以有效拟合的训练数据范围也就比较有限,机器学习模型这种适应训练数据变化的能力,称为模型的学习能力或模型的容量。
显然,模型的容量主要反映该模型对数据的拟合能力。模型的容量越大其对数据的拟合能力就越强,越能适应训练样本数据的变化。可以使用模型输出在不同的训练样本的集合下的综合偏差对进行度量,这种综合偏差称为模型输出的偏差,简称为偏差。
对于模型
f
(
X
)
f(X)
f(X)在训练样本集
D
1
,
D
2
,
…
,
D
s
D_1, D_2, \dots,D_s
D1?,D2?,…,Ds? 下的优化模型
F
(
X
)
=
(
f
1
(
X
)
,
f
2
(
X
)
,
…
,
f
s
(
X
)
)
F(X) = (f_1(X), f_2(X), \dots,f_s(X))
F(X)=(f1?(X),f2?(X),…,fs?(X)),
F
(
X
)
F(X)
F(X)作为一个离散型随机变量与
X
X
X所对应的实际真实值
y
y
y之间的偏差
B
i
a
s
[
F
(
X
)
]
Bias[F(X)]
Bias[F(X)]为:
B
i
a
s
[
F
(
X
)
]
=
E
(
F
(
X
)
)
?
y
Bias[F(X)] = E(F(X)) - y
Bias[F(X)]=E(F(X))?y 对于平方损失函数的泛化误差
R
e
x
p
(
f
)
=
E
[
L
(
y
,
F
(
X
)
)
]
=
E
{
[
F
(
X
)
?
y
]
2
}
R_{exp}(f) = E[L(y, F(X))] = E\{[F(X) - y]^2\}
Rexp?(f)=E[L(y,F(X))]=E{[F(X)?y]2},对其进行偏差-方差分解,可得
E
{
[
F
(
X
)
?
y
]
2
}
=
E
{
[
F
(
X
)
?
E
[
F
(
X
)
]
+
E
[
F
(
X
)
]
?
y
]
2
}
=
E
{
[
F
(
X
)
?
E
[
F
(
X
)
]
]
2
}
+
E
{
[
E
[
F
(
X
)
]
?
y
]
2
}
+
2
E
{
F
(
X
)
?
E
[
F
(
X
)
]
}
{
E
[
F
(
X
)
]
?
y
}
E\{[F(X) - y]^2\} = E\{[F(X) - E[F(X)] + E[F(X)] - y] ^ 2\} = E\{[F(X) - E[F(X)]]^2\} + E\{[E[F(X)] - y] ^ 2\} + 2E\{F(X) - E[F(X)]\}\{E[F(X)] - y\}
E{[F(X)?y]2}=E{[F(X)?E[F(X)]+E[F(X)]?y]2}=E{[F(X)?E[F(X)]]2}+E{[E[F(X)]?y]2}+2E{F(X)?E[F(X)]}{E[F(X)]?y} 由于
E
{
F
(
X
)
?
E
[
F
(
X
)
]
}
=
E
[
F
(
X
)
]
?
E
[
F
(
X
)
]
=
0
E\{F(X) - E[F(X)]\} = E[F(X)] - E[F(X)] = 0
E{F(X)?E[F(X)]}=E[F(X)]?E[F(X)]=0,故有:
E
{
[
F
(
X
)
?
y
]
2
}
=
E
{
[
F
(
X
)
?
E
[
F
(
X
)
]
]
2
}
+
E
{
[
E
[
F
(
X
)
]
?
y
]
2
}
=
E
{
[
F
(
X
)
?
E
[
F
(
X
)
]
]
2
}
+
{
[
E
[
F
(
X
)
]
?
y
]
}
2
=
V
a
r
[
F
(
X
)
]
+
{
B
i
a
s
[
F
(
X
)
]
2
}
E\{[F(X) - y]^2\} = E\{[F(X) - E[F(X)]]^2\} + E\{[E[F(X)] - y] ^ 2\} = E\{[F(X) - E[F(X)]]^2\} + \{[E[F(X)] - y]\}^2 = Var[F(X)] + \{Bias[F(X)]^2\}
E{[F(X)?y]2}=E{[F(X)?E[F(X)]]2}+E{[E[F(X)]?y]2}=E{[F(X)?E[F(X)]]2}+{[E[F(X)]?y]}2=Var[F(X)]+{Bias[F(X)]2} 所以可得,模型的泛化误差等于模型输出的方差与模型输出的偏差平方之和。
|