线性分类器是一种线性映射,将输入的图像特征映射为类别分数。线性分类器定义如下: f i ( x , w i ) = w i T x + b i , i = 1 , 2 , . . . , c f_i(\bm x, \bm w_i)=\bm w_i^T \bm x+b_i,i=1,2,...,c fi(x,wi)=wiTx+bi,i=1,2,...,c其中 x \bm x x代表输入的 d d d维图像向量, c c c为类别个数, w i = [ w i 1 w i 2 . . . w i d ] T \bm w_i=\begin{gathered}\begin{bmatrix} w_{i1} & w_{i2} & ... & w_{id} \end{bmatrix}\end{gathered}^T wi=[wi1wi2...wid]T为第 i i i个类别的权值向量, b i b_i bi为偏置。如果 f i ( x ) > f j ( x ) f_i(\bm x)>f_j(\bm x) fi(x)>fj(x),则决策输入图像 x \bm x x属于第 i i i类。
线性分类器的矩阵表示为 f ( x , W ) = W x + b \bm f(\bm x,\bm W)=\bm W \bm x+ \bm b f(x,W)=Wx+b其中, x \bm x x代表输入图像,其维度为 d d d; f \bm f f为分数向量,其维度等于类别个数 c c c; W = [ w 1 w 2 . . . w c ] T \bm W=\begin{gathered}\begin{bmatrix} \bm w_1 & \bm w_2 & ... & \bm w_c \end{bmatrix}\end{gathered}^T W=[w1w2...wc]T为权值矩阵, w i = [ w i 1 w i 2 . . . w i d ] T \bm w_i=\begin{gathered}\begin{bmatrix} w_{i1} & w_{i2} & ... & w_{id} \end{bmatrix}\end{gathered}^T wi=[wi1wi2...wid]T为第 i i i个类别的权值向量; b = [ b 1 b 2 . . . b c ] T \bm b=\begin{gathered}\begin{bmatrix} b_1 & b_2 & ... & b_c \end{bmatrix}\end{gathered}^T b=[b1b2...bc]T为偏置向量, b i b_i bi为第 i i i个类别的偏置。
下面以CIFAR-10数据集(每张图片样本的大小为32×32×3)为例,将线性分类器的权值向量 w i \bm w_i wi转化为32×32×3的矩阵,并将数值归化到 [ 0 , 255 ] [0,255] [0,255]区间,以图片的形式表示:
可见,上面的每一个模板都记录了每一个类别的统计信息。待决策图片与模板图片越相似,根据线性分类器的定义计算出的类别分数 f f f就越大。
总结一下,权值可以看做是一种模板,输入图像与评估模板的匹配程度越高,分类器输出的分数就越高。
从几何学角度来说,对于具有二维特征的图片分类问题,类别分数等于0的线,即 w i T x + b i = 0 , i = 1 , 2 , . . . , c \bm w_i^T \bm x+b_i=0,i=1,2,...,c wiTx+bi=0,i=1,2,...,c就是决策面。推广到更高维特征的图片依旧适用。分类器实质上学习的就是决策边界。权值 w \bm w w控制着决策边界的方向,偏置 b b b控制着决策边界的偏移。在上图中,箭头方向代表分类器的正方向,沿着分类器的正方向距离决策边界越远,类别分数就越高。
损失函数搭建了模型性能与模型参数之间的桥梁,指导模型参数优化。损失函数用于度量给定分类器的预测值与真实值的不一致程度,其输出通常是一个非负实值,该值可以作为反馈信号来对分类器参数进行调整,以降低当前示例对应的损失值,提升分类器的分类效果。
损失函数的一般定义为 L = 1 N ∑ i L i ( f ( x i , W ) , y i ) L=\frac{1}{N}\sum_iL_i(f(\bm x_i,\bm W),y_i) L=N1i∑Li(f(xi,W),yi)其中 x i \bm x_i xi表示数据集中第 i i i个样本, f ( x i , W ) f(\bm x_i,\bm W) f(xi,W)表示分类器对 x i \bm x_i xi的类别预测, y i y_i yi为样本 i i i的真实类别标签, L i L_i Li为第 i i i个样本的损失值, L L L为数据集的损失值,是数据集中所有样本损失的平均值。
记线性分类器为 s i j = f j ( x i , w j , b j ) = w j T x i + b j s_{ij}=f_j(\bm x_i,\bm w_j,b_j)=\bm w_j^T \bm x_i+b_j sij=fj(xi,wj,bj)=wjTxi+bj其中 j j j表示类别标签, j = 1 , 2 , . . . , c j=1,2,...,c j=1,2,...,c, w j , b j \bm w_j,b_j wj,bj表示第 j j j个类别分类器的参数, x i \bm x_i xi表示数据集中的第 i i i个样本, s i j s_{ij} sij表示第 i i i个样本第 j j j类别的预测分数。则第 i i i个样本的多类支持向量机损失定义为 L i = ∑ j ≠ y i max ( 0 , s i j − s y i + 1 ) L_i=\sum_{j\neq y_i}\max(0,s_{ij}-s_{y_i}+1) Li=j=yi∑max(0,sij−syi+1)其中 s y i s_{y_i} syi表示第 i i i个样本真实类别的预测分数。损失函数中在 s i j − s y i s_{ij}-s_{y_i} sij−syi后面加 1 1 1是加了一个边界,这样可以使损失值的计算更稳定。当正确类别的得分比不正确类别的得分高出1分及以上时,就没有损失,否则就会产生损失。
max ( 0 , ⋅ ) \max(0,·) max(0,⋅)损失常被称为折页损失 (hinge loss)。
下面给出一组多类支持向量机损失的计算示例。
假设有三个类别的训练样本各一张,线性分类器为 f ( x , W ) = W x + b \bm f(\bm x,\bm W)=\bm W \bm x+\bm b f(x,W)=Wx+b,其中 W , b \bm W,\bm b W,b已知,分类器对三个样本的打分如下:
当前分类器对于样本1的损失为 L 1 = max ( 0 , − 2.3 − 0.6 + 1 ) + max ( 0 , 1.9 − 0.6 + 1 ) = 2.3 L_1=\max(0,-2.3-0.6+1)+\max(0,1.9-0.6+1)=2.3 L1=max(0,−2.3−0.6+1)+max(0,1.9−0.6+1)=2.3对于样本2的损失为 L 2 = max ( 0 , 1.7 − 2.9 + 1 ) + max ( 0 , 2.3 − 2.9 + 1 ) = 0.4 L_2=\max(0,1.7-2.9+1)+\max(0,2.3-2.9+1)=0.4 L2=max(0,1.7−2.9+1)+max(0,2.3−2.9+1)=0.4对于样本3的损失为 L 3 = max ( 0 , 3.1 − 4.3 + 1 ) + max ( 0 , − 2.6 − 4.3 + 1 ) = 0 L_3=\max(0,3.1-4.3+1)+\max(0,-2.6-4.3+1)=0 L3=max(0,3.1−4.3+1)+max(0,−2.6−4.3+1)=0则当前分类器对于整个数据集图像的损失为 L = 1 N ∑ i = 1 N L i = 2.3 + 0.4 + 0 3 = 0.9 L=\frac{1}{N}\sum_{i=1}^NL_i=\frac{2.3+0.4+0}{3}=0.9 L=N1i=1∑NLi=32.3+0.4+0=0.9