(二)线性分类器-上

线性分类概述:

这次我们介绍一种更强大的方法来解决图像分类问题,这个方法主要有两部分:评分函数,它将对图像进行每个类别的评分。另外一部分是损失函数,它将衡量类别得分与真实标签之间的差异。最终将图像分类问题转化为一个最优化问题,在优化过程中,一步一步更新评分函数的参数来减低我们的损失函数值。

 

从图像到标签分值的参数化映射

在这个方法中,我们首先定义一个评分函数,这个函数将图像的像素值映射为每个类别的得分,得分的高低代表图像是这个类别的可能性高低。我们先从简单的线性映射开始:\displaystyle f(x_i,W,b)=Wx_i+b

在这个公式中,xi是我们的输入图像,假如大小为32*32像素,则xi可被拉成一个长度为D=32*32*3=3072的列向量(三个颜色通道),即[3072 x 1],然后W,b是这个评分函数的参数,W称为权重,b称为偏差向量。假设我们要分类的类别数是10,则W为大小[10 x 3072]的矩阵,b的大小为[10 x 1]。我们将输入图像(3072)输入函数,函数将会输出10个数字,这10个数字就代表了每个类别的分值。通过这种方式,我们就将输入图像映射到类别标签的分值。

需要注意:

  • 首先,一个单独的矩阵乘法Wx_i就高效地并行评估10个不同的分类器(每个分类器针对一个分类),其中每个类的分类器就是W的一个行向量。
  • 注意我们认为输入数据(x_i,y_i)是给定且不可改变的,但参数Wb是可控制改变的。我们的目标就是通过设置这些参数,使得计算出来的分类分值情况和训练集中图像数据的真实类别标签相符。
  • 该方法的一个优势是训练数据是用来学习到参数Wb的,一旦训练完成,训练数据就可以丢弃,留下学习到的参数即可。这是因为一个测试图像可以简单地输入函数,并基于计算出的分类分值来进行分类。
  • 最后,注意只需要做一个矩阵乘法和一个矩阵加法就能对一个测试数据分类,这比k-NN中将测试图像和所有训练数据做比较的方法快多了。

 

理解线性分类器

我们举一个图像映射到分类分值的例子:为了方便,我们假设图像只有4个像素(黑白像素,不考虑RGB通道),3个分类,红色代表猫, 绿色代表狗,蓝色代表船。首先我们把图像像素拉伸为一个列向量,然后与W进行矩阵乘,最后加上偏置b,就得到了各个类的分值。在这个例子中,这个W,b参数非常不好,因为猫的分值很低,狗的分值却很高,算法把图像错误分类成了狗。后面,我们会介绍应该怎么调整W,b参数,使得算法能正确分类图像。

 

 

关于W,b的几何解释

当我们把图像拉伸为一个高维度的列向量时,其实就相当于我们把这张图像嵌入到了一个高维空间,图像代表高维空间中的一个点,每个点都带有一个分类标签。每个类别的得分值其实就是这个空间中的一个线性函数的函数值。我们无法可视化这个高维空间,但假如我们把这些维度挤压成二维,我们就能知道这些分类器在做什么了。

 

这是图像空间的示意图。其中每个图像是一个点,有3个分类器。以红色的汽车分类器为例,红线表示空间中汽车分类分数为0的点的集合,红色的箭头表示分值上升的方向。所有红线右边的点的分数值均为正,且线性升高。红线左边的点分值为负,且线性降低。W的每一行是一个分类类别的分类器,当我们调整W的时候,就代表着这个分类器在空间中对应的直线向着不同的方向旋转,偏差b则代表直线的平移。优化的过程就是不断的旋转,平移这条直线,直到达到我们的分类目标。

 

将线性分类器看做模板匹配

关于权重W还有另外一种解释,的每一行对应着一个分类的模板。一张图像对应不同分类的得分,是通过使用内积(也叫点积)来比较图像和模板,然后找到和哪个模板最相似。从这个角度来看,线性分类器就是在利用学习到的模板,针对图像做模板匹配。而且我们会使用(负)内积来计算向量间的距离,而不是使用L1或者L2距离。

这里展示的是以CIFAR-10为训练集,学习结束后的权重的例子。注意,船的模板如期望的那样有很多蓝色像素。如果图像是一艘船行驶在大海上,那么这个模板利用内积计算图像将给出很高的分数。

可以看到马的模板看起来似乎是两个头的马,这是因为训练集中的马的图像中马头朝向各有左右造成的。线性分类器将这两种情况融合到一起了。类似的,汽车的模板看起来也是将几个不同的模型融合到了一个模板中,并以此来分辨不同方向不同颜色的汽车。这个模板上的车是红色的,这是因为CIFAR-10中训练集的车大多是红色的。线性分类器对于不同颜色的车的分类能力是很弱的,但是后面可以看到神经网络是可以完成这一任务的。神经网络可以在它的隐藏层中实现中间神经元来探测不同种类的车(比如绿色车头向左,蓝色车头向前等)。而下一层的神经元通过计算不同的汽车探测器的权重和,将这些合并为一个更精确的汽车分类分值。

 

偏差和权重的合并技巧

有时,为了简化,我们会把W和b参数合并为一个矩阵。做法是将所有输入向量的维度增加1个含常量1的维度,并且在权重矩阵中增加一个偏差列。这样我们就只需要学习一个合并后的权重W。

 

本小节到此结束,下一节内容:(二)线性分类器-中

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值