CS231n-2017 Lecture3线性分类器笔记
图片向量与标签得分向量:
上节讲到,图片可以被展开成一个向量,对于这个向量,假设它有D维,那么它就是D维空间的一个点,又假设我们的标签集合总共有K种,我们可以定义一个K维标签得分向量,每一个维度对应着其相应标签的得分。那么我们就可以想办法建立一个线性映射,将一个图片向量映射成一个标签向量,将其中得分最高的维度所对应的标签作为这张图片的标签,这就是线性分类器的本质
即:
设训练集 有N个元素,其中
, 每个
有其对应的标签向量
线性分类器:
对于上述的向量对应关系
则我们可以建立一个线性分类器:
其中W是一个的矩阵,被称为权重(权重是提前设定好的,这里我们假设模型已经找到最优权重),b是一个K维向量,被称为偏差向量(这个向量也已经找到了最优)
这个函数会输出对于x映射出来的标签得分预测向量,然后我们可以根据该预测向量的最高得分维度来预测x所对应的图片的标签
偏差与权重的合并技巧:
我们可以将图片向量增加至D+1维,将W也增加至,将其第D+1列作为原本的b,则可以将函数简化为
线性分类器的直观理解:
第一种理解:
对于W的第i行,其每一列的元素分别就是D维图片向量对应像素对第i行对应标签的贡献权重,当权重为正时,就说明该位置(包含了长、宽、颜色三个信息)的像素值对该标签分类是正贡献,且越高越好,权重为负时相反
同时,我们可以将第i行这一行向量映射回图片三维数组,从而得到该标签所对应的图片模版,可以直观地观察到其分类喜好
第二种理解:
对于第i个标签,如果我们将所有令 的第i个分量为0的所有x向量组成一个平面,那么这个平面就是第i个标签的分界面,虽然高维空间不好想象,但我们可以将D维空间当做二维平面来理解,此时分界面必有一边会使得第i个分量的值>0(则这个区域就是第i个标签所属的区域),而另一面会使得第i个分量的值<0(第i个标签所不属于的区域)。那么对于K个标签来说,就会有K个分界面,将D维空间线性划分为K个标签所属的区域,因此我们只需要判断输入图像向量落入哪个区间,即可预测其标签
Loss Function(损失函数):
对于不同的权重矩阵W,我们需要对其给出的预测向量评分,从而评价其预测结果的好坏,这里,我们使用Loss Function作为评分标准,Loss越大时,预测结果越差,Loss越小时,预测结果越好
Multiclass Support Vector Machine Loss(多类支持向量机损失):
这是众多形式Loss中的一种,具体定义式为:
其中 是对第i个图片向量预测的损失,
是总损失,
是
所对应的标签所对应的维度,
是遍历维度,
是预测向量在j维度所对应的预测值,
是预测向量在
维度所对应的预测值,
是自定义超参数
的含义就是,我们遍历预测向量的每一维度(除了正确标签所对应的维度),即遍历的都是错误标签所对应的维度,若正确标签得分减去该错误标签得分的差少于
,则说明预测得分的差距不够大,对Loss作出了一定贡献,否则对Loss的贡献为0
正则化(Regularization):
上面的损失函数会有一个问题,使得分类器能够正确分类数据集内每个数据的W并不唯一,我们希望能向W中某些特定的权重添加一些偏好,对其他权重则不添加,从而来更好地区分每个满足分类Loss为0的W,即向损失函数增加一个正则化惩罚 部分
通常采用L2范式,即:
即对W中所有元素平方后求和作为正则化惩罚,它不是数据的函数,仅仅是权重的函数
至此,我们可以给出完整的多类SVM损失函数,由数据损失和正则化损失组成,即