图像识别算法(二)

一、线性分类器

 

 线性分类器(Linear Classification)是比KNN分类器更有效的一种分类器。这个方法有两个重要的部分:分数函数(score function)和损失函数(loss function)。分数函数是江原始数据匹配到相应类别的依据,而损失函数是评价预测类别与真实情况之间的差异。

假设存在一组图像数据集x^{i}\epsilon R^{D},同时每组数据都带有一个标签y_{i},其中,i=1....Ny_{i}\epsilon 1....K。也就是说我们有N个实例(D维),有K个类别。

线性分类器:最简单的函数—线性映射:

f(x_{i},W,b)=Wx_{i}+b

在上面等式中,我们把x_{i}展开式一个D*1的向量,而W是一个K*D的矩阵,b是一个K*1的向量。我们一般将参数W看作是权重,将b看作是偏置。

注意:1. 矩阵乘法Wx_{i}有效的评估了K个分类器。我们可以将W的每一行看作是一个分类器

            2.我们的输入数据应该是\left ( x_{i} ,y_{i}\right ),我们可以控制W,b的取值。我们的目的是通过计算出W,b,使得预测值和真实值更接近。

            3.相比于KNN分类器,我们的学习一旦完成,就可以丢弃全部训练集,只需要保留参数W和b就可以。这样对测试图像进行分类涉及单个矩阵乘法和加法,这比将测试图像与所有训练图像进行比较要快得多。

二、解释线性分类器 

 请注意,线性分类器将类的分数计算为其所有 3 个颜色通道的所有像素值的加权总和。 根据我们为这些权重设置的确切值,该函数可以喜欢或不喜欢(取决于每个权重的符号)图像中某些位置的某些颜色。举一个例子,你可以想象如果图像的两侧有很多的蓝色,则“船”类更有可能。您可能会期望“船舶”分类器在其蓝色通道权重中会有很多正权重(蓝色的存在会增加船舶的得分),而在红色/绿色通道中会有很多负权重(红色/绿色的存在会降低船舶的得分)。

举一个例子

我们将设一张图片有四个像素(不论通道),我们有三个类别,分别是cat(red),dog(green),ship(blue).然后利用上述的线性映射公式进行计算。从图中,我们可以看出,W的每一行都可以看作是一个类别的分类器。我们在进行计算的时候,需要将输入的图像x_{i}(M,N)转化为(M*N,1)的向量,那其实W的每一行(1,M*N)也可以转化成类似于输入图像的这样(M,N)的矩阵。但其实上面这个例子中,W 的取值并不是很合适,因为最终结果它将猫认成了狗。

分类可视化:由于图片可以展开成高维的向量。我们可以将图片看成是这个空间中的一个点。当然整个数据集就会形成一系列的点。由于我们把分数定义为图像所有像素权的加权和。对于高维的数据集,我们可以通过降维的方式将分类结果可视化。

 正如我们上面看到的,W的每一行都是其中一个类的分类器。W中的数字的几何解释是:当我们改变W中的一行时,像素空间中对应的行将向不同的方向旋转。特别需要注意,如果没有偏差项,无论权重如何,插入x_{i}=0将始终给出零分数,因此所有的线都将被迫穿过原点。因为在进行分类的时候,我们希望不同类别之间的距离越远越好,如果所有线都被迫穿过了原点,那么就无法保证不同类别之间的距离越远越好。

 线性分类器解释:

对权重W的另一种解释是每一行权重相当于是其中一个类别的模板(template)(有时候也叫做prototype)。然后通过使用内积(或点积)将每个模板与图像一一比较以找到最“适合”的那个,从而获得图像的每个类的分数。在这样的思想指导下,那么线性分类器其实做的就是模板匹配,而这个模板是学习得到的。

举一个例子

 上述展示的是在CIFAR-10数据集学习结束时的权重示例。我们可以观察到,船舶模板包含了许多预期的蓝色像素。

另外我们注意到“马”模板看起来像一个有两个头的马,这是因为数据集中马的头既有在右边的又有在左边的。另外“猫”的模板仿佛是仿佛是许多模板融合在一起了。通过这些模板我们可以观察到数据集中不同类别的共性。比如说“车”的模板看起来是红色的,意味着在数据集中大部分车的图像都是红色的。

 偏置b的计算:

按照上述的线性映射公式:

f(x_{i},W,b)=Wx_{i}+b

 有两个参数需要我们学习得到,一个是W,另一个是b。如果按照公式来进行学习,那我们不得不分为两个部分来进行学习,这样是很麻烦的。

但是如果我们对x_{i}增加一行“1”,那么上述公式就可以化为:f(x_{i},W)=Wx_{i},如下图所示:

 我们可以从上图看到,x_{i}有之前的(4,1)变成了(5,1)。实质没有变化,只是表达式发生了变化,这样可以使得学习过程变简单。

数据预处理:

上面使用的例子,我们都是使用原始像素值(范围从[0...255]).在机器学习中,我们经常进行的操作是对输入的数据进行归一化,特别是通过从每个特征中减去均值来使数据居中非常重要。在图像的情况下,这对应于计算训练图像的平均图像并从每个图像中减去它以获得像素范围约为 [-127 … 127] 的图像。但是零均值居中可以说是更为重要的一个预处理,这些预处理的合理性都跟梯度下降有关,之后再进行说明。

 损失函数

 像上面举的例子一样,分类器将猫认成了狗,这显然是不行的。这是我们将引入一个函数去评价我们对结果的不满意程度。这个函数称为损失函数。直觉上,如果我们在训练数据分类方面做的不好,损失会很高,如果我们做的好,损失就会很低。

2.1 多类支持向量机损失(Multiclass Support Vector Machine loss)

我们介绍的第一个损失函数就是Multiclass Support Vector Machine (SVM) loss。SVM分类器希望正确类别的分数要比错误类别的分数高\Delta

s_{j}=f(x_{i},W)_{j}

则对于第i个实例,SVM loss则可以写成:

L_{i}=\sum_{j\neq y_{i}}^{}max(0,s_{j}-s_{y_{i}}+\Delta )

举一个例子:我们有三个类别,进行线性映射之后,我们得到了分数s=[13,-7,11]。第一个类别是正确的(y_{i}=0)。设\Delta =10,则我们可以得到:

L_{i}=max(0,-7-13+10)+max(0,11-13+10)

我们看第一项(-7-13+10)的结果小于0,则第一项输出为0.第二项(11-13+10)的结果为8,因此整个loss=8.

综上所述,SVM loss function 希望正确类别y_{i}的分数比错误类别分数至少大\Delta,如果不满足这个·要求,我们将累计损失。

正则化(regularization)

对于损失函数的设置其实是存在问题的。假设有一个数据集和一组W都满足分类要求,但是关键问题在于这一组W并不是独一无二的,也就是说可能存在许多组W都能满足这个要求,那么我们应该选择哪一种。这是我们就应该对某些权重W的某些偏好进行编码以消除这种歧义。我们可以通过使用正则化函数来扩展损失函数来实现这一目的。最常见的正则化函数就是squared L2 norm.

R(W)=\sum_{k}^{}\sum_{l}^{}W_{k,l}^{2}

L2范数可以有效的提高模型的泛化能力(最重要)

我们可以得到损失函数的完整表达:

 N是实例的个数。L2范数会选择更小和更分散的权重向量

请注意,偏差没有相同的效果,因为与权重不同,他们不控制输入维度的影响强度。因此通常只对权重W进行正则化而不对偏差b进行正则化。

参数设置:SVM分类器有一个参数\Delta。事实证明,这个超参数在所有情况下都可以安全地设置为 Δ=1.0。\Delta\lambda看起来是两个参数,事实上他们都被W所印象。根据SVM loss我们可以看出,当我们缩小W中的所有值时,分数差异将变小,而随着我们增加权重,分数差异将变大。

因此,分数之间的差值的确切值(例如 Δ=1 或 Δ=100)在某种意义上是没有意义的,因为权重可以任意缩小或拉伸差异。因此唯一真正的权衡时我们允许权重增长多大(学习率???)(通过正则化强度\lambda)。 

当然,SVM分类器存在多种多样的类型。在此不再多说。

 2.2  Softmax classifier

 另一个常见的分类器是Softmax classifier。Softmax classifier 采用的是交叉熵损失(cross-entropy loss),其表达式如下所示:

 和以前一样,数据集的全部损失是所有训练示例中 Li 的平均值以及正则化项 R(W)。函数f_{j}(z)=\frac{e^{z_{j}}}{\sum e^{z_{k}} }被叫做是softmax function.

在实践中,SVM 和 Softmax 通常具有可比性。 SVM 和 Softmax 的性能差异通常非常小,对于哪个分类器效果更好,不同的人会有不同的看法。与 Softmax 分类器相比,SVM 是一个更局部的目标,可以将其视为错误或特征。考虑一个获得分数 [10, -2, 3] 并且第一类是正确的示例。 SVM(例如具有 Δ=1 的期望边距)将看到正确的类别与其他类别相比已经具有高于边距的分数,并且它将计算损失为零。 SVM 不关心单个分数的细节:如果它们是 [10, -100, -100] 或 [10, 9, 9],SVM 将无动于衷,因为 1 的边际得到满足,因此损失为零。然而,这些场景并不等同于 Softmax 分类器,它会为分数 [10, 9, 9] 累积比 [10, -100, -100] 高得多的损失。换句话说,Softmax 分类器永远不会对它产生的分数感到完全满意:正确的类别总是有更高的概率,而错误的类别总是较低的概率,并且损失总是会变得更好。然而,一旦边际得到满足,SVM 就会感到高兴,并且它不会对超出此限制的确切分数进行微观管理。这可以直观地被认为是一个特征:例如,一个汽车分类器可能将大部分“努力”花费在将汽车与卡车分离的难题上,不应受到青蛙示例的影响,它已经分配了非常低的得分,并且可能聚集在数据云的完全不同的一侧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值