目录
多类支持向量机损失(Multiclass Support Vector Machine Loss)
从SVM开始才算真正步入机器学习了,之前的KNN只能算是公式应用,毕竟没有损失函数,没有权重优化怎么能称之为学习呢?
SVM的知识包括几个主要方面评分函数、损失函数、正则化以及梯度下降。
从整个过程来看:
1.初始化权重,训练数据点乘权重得到评分矩阵;
2.根据评分矩阵和损失函数公式来求得损失值,并对损失值进行正则化,来减小大的权重参数对损失值影响;
3.利用梯度下降方法对损失值来进行迭代,通过损失值来调整权值参数达到最优。
1.线性分类器
W被称为权重(weights),b被称为偏差向量(bias vector)
举例:xi=32*32*3*1 [3072 x 1]的列向量;W=10*3072 W的每一行对应一个类的分类器
那么xi的大小就变成[3073x1],而不是[3072x1]了,多出了包含常量1的1个维度。W大小就是[10x3073]了。W中多出来的这一列对应的就是偏差值b
把权重和偏差放到一个矩阵(如图1所示),我们就只需要学习一个权重矩阵,而不用去学习两个分别装着权重和偏差的矩阵了。
图1
所得的结果就是想要得到的评分矩阵(具体例子如图2所示)
图2
每一行相当于一个分类器,第一行就是cat的分类器,得分分别是第一幅图cat得分是3.2,第二幅图cat得分是4.9。
2.损失函数 Loss function
多类支持向量机损失(Multiclass Support Vector Machine Loss)
第i个数据的多类SVM的损失函数为
第i个数据中包含图像xi的像素和代表正确类别的标签yi 。评分函数输入像素数据,然后通过公式 来计算不同分类类别的分值。这里我们将分值简写为 。比如,针对第j个类别的得分就是第j个元素:sj=f(xi,W)j。yi 表示正确的得分,针对第i个数据的多类SVM的损失函数定义如下:
关于0的阀值:max(0,-)函数,它常被称为折叶损失(hinge loss)。有时候会听到人们使用平方折叶损失SVM(即L2-SVM),它使用的是max(0,-)2,将更强烈(平方地而不是线性地)地惩罚过界的边界值。
不使用平方是更标准的版本,但是在某些数据集中,平方折叶损失会工作得更好,可以通过交叉验证来决定到底使用哪个。
在上述例子中,Syi ,分别是3.2,4.9,-3.1。
L1=max(0,5.1-3.2+1)+ max(0,-1.7-3.2+1)
L2=…
举例来说,在CIFAR-10中,我们有一个N=50000的训练集,每个图像有D=32x32x3=3072个像素,而K=10,这是因为图片被分为10个不同的类别(狗,猫,汽车等)。定义评分函数为: ,该函数是原始图像像素到分类分值的映射。
损失函数(Softmax分类器):
第i个数据的Softmax分类器的损失函数为
Softmax分类器就可以理解为逻辑回归分类器面对多个分类的一般化归纳。SVM将输出 作为每个分类的评分(因为无定标,所以难以直接解释)。与SVM不同,Softmax的输出(归一化的分类概率)更加直观,并且从概率上可以解释。
在Softmax分类器中,函数映射保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并且将折叶损失(hinge loss)替换为交叉熵损失(cross-entropy loss)。公式如下:
normalize 意思是归一化也就是公式中的