一、常用的损失函数
通常损失函数是一个非负实数函数,作用就是来量化模型预测和真是标签之间的差异,以下是几种常用的损失函数:
(1)0-1损失函数,很直观的表现了模型在训练集上的错误率,
0
−
1
损
失
函
数
0-1损失函数
0−1损失函数表达式如下:
L
(
y
,
f
(
x
,
θ
)
)
=
{
0
i
f
y
=
f
(
x
;
θ
)
1
i
f
y
≠
f
(
x
;
θ
)
(式1)
\mathfrak{L}(y,f(x,\theta))=\begin{cases} 0 & if \qquad y=f(\boldsymbol{x};\theta)\\ 1 & if \qquad y\neq{f(\boldsymbol{x};\theta)} \end{cases} \tag{式1}
L(y,f(x,θ))={01ify=f(x;θ)ify=f(x;θ)(式1)
=
I
(
y
≠
f
(
x
;
θ
)
)
(式2)
=I(y\neq f(\boldsymbol{x};\theta))\tag{式2}
=I(y=f(x;θ))(式2)
其中
I
(
⋅
)
I(\cdot)
I(⋅)是指示函数。
从上面可以看到,尽管
0
−
1
损
失
0-1损失
0−1损失函数可以很客观的评价模型的好坏,但是他的缺点也很明显:
0
−
1
损
失
函
数
0-1损失函数
0−1损失函数不连续而且导数为零,难以进行优化。所以更常用的损失函数是连续可微的损失函数。
(2)平方损失函数,(Quadratic Loss Function)。平方损失函数经常使用在待预测的标签
y
y
y为实数值的任务中,表达式如下:
L
(
y
,
f
(
x
;
θ
)
)
=
1
2
(
y
−
f
(
x
;
θ
)
)
2
(式3)
\mathfrak{L}(y,f(x;\theta))=\cfrac{1}{2}(y-f(\boldsymbol{x};\theta))^2\tag{式3}
L(y,f(x;θ))=21(y−f(x;θ))2(式3)
平方损失函数不适合用在分类问题中,因为预测值和真实值都式离散型的,进行加减运算是没有意义的。
(3)交叉熵损失函数,(Cross-Entropy Loss Function)一般用于分类问题中。假设样本的标签
y
∈
y\in
y∈
{
1
,
⋯
,
C
}
\{1,\cdots,C\}
{1,⋯,C}为离散的类别,模型
f
(
x
;
θ
)
∈
[
0
,
1
]
c
f(x;\theta)\in[0,1]^c
f(x;θ)∈[0,1]c的输出为类别标签的条件概率分布,即:
P
(
y
=
c
∣
x
;
θ
)
=
f
c
(
x
;
θ
)
(式4)
P(y=c\vert{\boldsymbol{x}};\theta)=f_c(\boldsymbol{x};\theta)\tag{式4}
P(y=c∣x;θ)=fc(x;θ)(式4)
f
c
(
x
;
θ
)
f_c(x;\theta)
fc(x;θ)表示
f
(
x
;
θ
)
f(x;\theta)
f(x;θ)的输出向量的第
c
c
c维。
而且,(式4)还满足:
f
c
(
x
;
θ
)
∈
[
0
,
1
]
,
∑
i
=
1
C
f
c
(
x
;
θ
)
=
1
(式5)
f_c(\boldsymbol{x};\theta)\in[0,1],\qquad \sum_{i=1}^{C}f_c(\boldsymbol{x};\theta)=1\tag{式5}
fc(x;θ)∈[0,1],i=1∑Cfc(x;θ)=1(式5)
如果使用一个
c
c
c维的one-hot 向量
y
\boldsymbol{y}
y来表示样本标签. 假设样本的标签为
k
k
k,那么标签向量
b
l
o
d
s
y
m
b
o
l
y
blodsymbol{y}
blodsymboly只有第𝑘 维的值为1,其余元素的值都为0. 标签向量
b
l
o
d
s
y
m
b
o
l
y
blodsymbol{y}
blodsymboly 可以看作是样本标签的真实概率分布,即第
c
c
c 维(记为
y
c
,
1
≤
c
≤
C
y_c,1\leq{c}\leq{C}
yc,1≤c≤C)是类别为
c
c
c 的真实概率. 假设样本的类别为
k
k
k,那么它属于第
k
k
k 类的概率为1,其他类的概率为0.
对于两个概率分布,可以使用交叉熵来衡量它们之间的差异。标签的真实分布𝒚和模型的预测分布
f
(
x
;
θ
)
f(x;\theta)
f(x;θ)之间的交叉熵为:
L
(
y
,
f
(
x
;
θ
)
)
=
−
y
T
l
o
g
f
(
x
;
θ
)
(式6)
\mathfrak{L}(\boldsymbol{y},f(\boldsymbol{x};\theta))=-\boldsymbol{y}^Tlogf(\boldsymbol{x};\theta)\tag{式6}
L(y,f(x;θ))=−yTlogf(x;θ)(式6)
=
−
∑
c
=
1
C
y
c
l
o
g
f
c
(
x
;
θ
)
(式7)
=-\sum_{c=1}^{C}\boldsymbol{y}_{c}logf_c(\boldsymbol{x};\theta)\tag{式7}
=−c=1∑Cyclogfc(x;θ)(式7)
比如对于三分类问题,一个样本的标签向量为
y
=
[
0
,
0
,
1
]
T
\boldsymbol{y}=[0,0,1]^T
y=[0,0,1]T,模型预测的标签分布为𝑓(𝒙; 𝜃) =
[
0.3
,
0.3
,
0.4
]
T
[0.3, 0.3, 0.4]^T
[0.3,0.3,0.4]T,则它们的交叉熵为
−
(
0
×
l
o
g
(
0.3
)
+
0
×
l
o
g
(
0.3
)
+
1
×
l
o
g
(
0.4
)
)
=
−
l
o
g
(
0.4
)
−(0 × log(0.3) + 0 ×log(0.3) + 1 × log(0.4)) = − log(0.4)
−(0×log(0.3)+0×log(0.3)+1×log(0.4))=−log(0.4).因为
y
\boldsymbol{y}
y为one-hot 向量,(式7) 也可以写为:
L
(
y
,
f
(
x
;
θ
)
)
=
−
l
o
g
f
y
(
x
;
θ
)
(式8)
\mathfrak{L}(y,f(\boldsymbol{x};\theta))=-logf_y(\boldsymbol{x};\theta)\tag{式8}
L(y,f(x;θ))=−logfy(x;θ)(式8)
其中
f
y
(
x
;
θ
)
f_y(\boldsymbol{x};\theta)
fy(x;θ)可以看作真实类别𝑦 的似然函数. 因此,交叉熵损失函数也就是负对数似然函数(Negative Log-Likelihood).
(4)**Hinge损失函数,对于二分类问题,假设
y
y
y的取值为
{
−
1
,
+
1
}
,
f
(
x
;
θ
∈
R
)
\{-1,+1\},f(\boldsymbol{x};\theta\in\mathbb{R})
{−1,+1},f(x;θ∈R),则
H
i
n
g
e
Hinge
Hinge损失函数为:
L
(
y
,
f
(
x
;
θ
)
)
=
m
a
x
(
0
,
1
−
y
f
(
x
;
θ
)
)
(式9)
\mathfrak{L}(y,f(\boldsymbol{x};\theta))=max(0,1-yf(\boldsymbol{x};\theta))\tag{式9}
L(y,f(x;θ))=max(0,1−yf(x;θ))(式9)
=
Δ
[
1
−
y
f
(
x
;
θ
)
]
+
(式10)
=^{\Delta}[1-yf(\boldsymbol{x};\theta)]_{+}\tag{式10}
=Δ[1−yf(x;θ)]+(式10)
其中,
[
x
]
+
=
m
a
x
(
0
,
x
)
[x]_+=max(0,x)
[x]+=max(0,x)。
二、经验风险最小化和结构风险最小化
(1)经验风险,经验风险也叫做经验错误。即在训练集
D
=
{
(
x
n
,
y
(
n
)
)
}
n
=
1
N
{D}=\{(\boldsymbol{x}^{n},y^{(n)})\}_{n=1}^{N}
D={(xn,y(n))}n=1N上的平均损失:
R
D
e
m
p
(
θ
)
=
1
N
∑
n
=
1
N
L
(
y
(
n
)
,
f
(
x
(
n
)
;
θ
)
)
(式11)
\mathcal{R}_D^{emp}(\theta)=\cfrac{1}{N}\sum_{n=1}^{N}\mathfrak{L}(y^{(n)},f(\boldsymbol{x}^{(n)};\theta))\tag{式11}
RDemp(θ)=N1n=1∑NL(y(n),f(x(n);θ))(式11)
所以,我们要做的就是找到一组参数
θ
∗
\theta^*
θ∗使得经验风险最小,即
θ
∗
=
a
r
g
m
i
n
θ
R
D
e
m
p
(
θ
)
(式12)
\theta^*=argmin_{\theta}\mathcal{R}_D^{emp}(\theta)\tag{式12}
θ∗=argminθRDemp(θ)(式12)
这个就是经验风险最小化(ERM)。
其中,经验风险最小化原则容易导致模型在训练集上错误率很低,但是在未知数据上错误率很高,这就是过拟合现象。
(2)结构风险,为了解决过拟合问题,在经验风险最小化的基础上引入参数的正则化来限制模型的能力,让其不要过度的最小化经验风险。这就是结构风险最小化(SRM)
θ
∗
=
a
r
g
m
i
n
θ
R
D
e
m
p
(
θ
)
(13)
\theta^*=argmin_{\theta}\mathcal{R}_D^{emp}(\theta)\tag{13}
θ∗=argminθRDemp(θ)(13)
=
a
r
g
m
i
n
θ
R
D
e
m
p
(
θ
)
+
1
2
λ
∣
∣
θ
∣
∣
2
(式14)
=argmin_{\theta}\mathcal{R}_D^{emp}(\theta)+\cfrac{1}{2}\lambda{\vert\vert\theta\vert\vert}^2\tag{式14}
=argminθRDemp(θ)+21λ∣∣θ∣∣2(式14)
=
a
r
g
m
i
n
θ
1
N
∑
n
=
1
N
L
(
y
(
n
)
,
f
(
x
(
n
)
,
θ
)
)
+
1
2
λ
∣
∣
θ
∣
∣
2
(式15)
=argmin_{\theta}\cfrac{1}{N}\sum_{n=1}^{N}\mathfrak{L}(y^{(n)},f(\boldsymbol{x}^{(n)},\theta))+\cfrac{1}{2}\lambda{\vert\vert\theta\vert\vert}^2\tag{式15}
=argminθN1n=1∑NL(y(n),f(x(n),θ))+21λ∣∣θ∣∣2(式15)
其中,
∥
θ
∥
\Vert\theta\rVert
∥θ∥为
ℓ
2
\ell_2
ℓ2范数的正则化项,用来减少参数空间,避免过拟合;
λ
\lambda
λ用来控制正则化的强度。
三、参数和超参数
在机器学习中,优化又可以分为参数优化和超参数优化。常见的模型 f ( x ; θ ) f(\boldsymbol{x};\theta) f(x;θ)中的 θ \theta θ称为模型的参数,可以通过优化算法进行学习。除了可以学习的参数 θ \theta θ之外,还有一类参数是用来定义模型的结构或者优化策略或者控制模型的动作状态的,这一类参数叫做超参数。
常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长、正则化项的系数、神经网络的层数、支持向量机中的核函数等. 超参数的选取一般都是组合优化问题,很难通过优化算法来自动学习. 因此,超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过搜索的方法对一组超参数组合进行不断试错调整.