损失函数
定义
书接上回,我们已经得知分类器的核心是权重矩阵w和偏置b,我们构建模型对数据进行训练,最终的目的也就是得到这些参数。所以这里,我们引入一种和w相关的函数,将w进行输入,然后看一下函数的输出结果,定量地估计w的好坏,达到筛选w的效果。这样的就被称为损失函数。
这里提出一个通用训练中损失值的表达式:
L
=
1
N
∑
i
L
i
(
f
(
x
i
,
w
)
,
y
i
)
L=\frac{1}{N}\displaystyle\sum_{i}^{} L_i(f(x_i,w),y_i)
L=N1i∑Li(f(xi,w),yi)
这里的
f
f
f指的是使用的分类器拟合函数,
x
i
x_i
xi和
w
w
w指的是输入的变量x和权重矩阵w,
y
i
y_i
yi则指的是
x
i
x_i
xi对应的真实标签值,
L
i
L_i
Li就是我们的损失函数,
L
L
L就是训练样本总体的平均损失。
有了这样的损失函数定义之后,我们就能在w的可行域中不断对其值进行尝试,最终找到在训练集上损失函数极小化的w,达到最好的拟合效果。
SVM损失函数
SVM的全称是支持向量机,这是一种经典的基于监督学习的分类方式,具体定义和分类器函数这里就不过多阐述。
SVM损失函数形式如下:
L
i
=
∑
j
≠
y
i
{
0
i
f
S
y
i
≥
s
j
+
1
s
j
−
s
y
i
+
1
otherwise
L_i=\displaystyle\sum_{j\neq y_i} \begin{cases} 0& \text{ $ if \ \ S_{yi}\ge s_j+1 $ } \\ s_j-s_{yi}+1& \text{otherwise} \end{cases}
Li=j=yi∑{0sj−syi+1 if Syi≥sj+1 otherwise
当然也可以简写为:
L
i
=
∑
j
≠
y
i
m
a
x
(
0
,
s
j
−
s
y
i
+
1
)
L_i=\displaystyle\sum_{j\neq y_i}max(0,s_j-s_{yi}+1)
Li=j=yi∑max(0,sj−syi+1)
函数中的
s
j
s_j
sj代表着当前变量所有错误分类的平分数,
s
y
i
s_{yi}
syi代表着当前变量正确分类的分数,整个式子的意思是,如果当前变量真实分类的分数远远高于分类错误的分数,那么该损失为0,接下来把该变量对每个分类的损失加起来,就可以得到数据集中这个样本的最终损失。
像这样从0和某个数中取值的损失函数,可以称之为合页函数(纯图像角度)
下面举出一个具体的计算例子,比如我们要对猫进行一个三分类,类别包括猫、车和青蛙,通过SVM的拟合函数算出来了他们的各自分数,那猫这个样本在所有分类上的损失总计是多少呢?
这里直接套用公式
L
i
=
m
a
x
(
0
,
5.1
−
3.2
+
1
)
+
m
a
x
(
0
,
−
1.7
−
3.2
+
1
)
L_i=max(0,5.1-3.2+1)+max(0,-1.7-3.2+1)
Li=max(0,5.1−3.2+1)+max(0,−1.7−3.2+1)
计算这个式子,发现结果就是
L
i
=
2.9
L_i=2.9
Li=2.9
同理我们可以算出车和青蛙的损失,分别是0(非常好)和12.9(极差),那我们的SVM分类器在这三张图片所构成的数据集上的损失就可以直接求取平均值计算出来: L = 1 N ∑ i L i ( f ( x i , w ) , y i ) = ( 2.9 + 0 + 12.9 ) / 3 = 5.26 L=\frac{1}{N}\displaystyle\sum_{i}^{} L_i(f(x_i,w),y_i)=(2.9+0+12.9)/3=5.26 L=N1i∑Li(f(xi,w),yi)=(2.9+0+12.9)/3=5.26
正则项
为了使拟合函数表示得更加简洁(奥卡姆剃刀),我们通常在损失函数中引入正则项,鼓励模型以某种方式选择更简单的w,这通常以字母R来表示。
引入正则项后,损失值的表达式为:
L
(
W
)
=
1
N
∑
i
L
i
(
f
(
x
i
,
w
)
,
y
i
)
+
λ
R
(
W
)
L(W)=\frac{1}{N}\displaystyle\sum_{i}^{}L_i(f(x_i,w),y_i)+\lambda R(W)
L(W)=N1i∑Li(f(xi,w),yi)+λR(W)
其中
λ
\lambda
λ为自己选择的超参数。
不引入正则项的情况下,为了使拟合函数表示得更加简介,我们只能通过降低模型本身的幂次和复杂度;引入正则回归项后,模型的复杂度会有一定程度的减小,,其过拟合现象也会有一定的缓解,这里就不过多展开了。
补充一点L1正则化和L2正则化的一些知识,L1正则化通常适用于稀疏解W,L2正则化更多考虑的是W的整体分布,当然面对不同的任务和数据类别,选取正则项的考虑也有着巨大差异,这里也不过多展开了。