CS231n Linear Classification Note 线性分类

对于图像,每个像素都被认为是一个特征。

一个单独的矩阵乘法Wx_i就高效地并行评估10个不同的分类器(每个分类器针对一个分类),其中每个类的分类器就是W的一个行向量。

既然定义每个分类类别的分值是权重和图像的矩阵乘,那么每个分类类别的分数就是这个空间中的一个线性函数的函数值。
title
所以最后是一个函数,就不用训练集了。

https://zhuanlan.zhihu.com/p/20945670?refer=intelligentunit

损失函数(Loss Function)

我们对于预测训练集数据分类标签的情况总有一些不满意的,而损失函数就能将这些不满意的程度量化。

可以调整权重矩阵这个参数,使得评分函数(score function)的结果与训练数据集中图像的真实类别一致,即评分函数在正确的分类的位置应当得到最高的评分(score)。
损失函数(Loss Function)(有时也叫代价函数Cost Function或目标函数Objective)来衡量我们对结果的不满意程度。直观地讲,当评分函数输出结果与真实结果之间差异越大,损失函数输出越大,反之越小。
多类支持向量机损失 Multiclass Support Vector Machine Loss
SVM的损失函数想要SVM在正确分类上的得分始终比不正确分类上的得分高出一个边界值 Δ

折叶损失 hinge loss
关于0的阀值: m a x ( 0 , ) 函数。平方折叶损失SVM(即L2-SVM),使用 m a x ( 0 , ) 2 。可以通过交叉验证来决定到底使用哪个。

正则化 Regularization

向某些特定的权重 W 添加一些偏好,对其他权重则不添加,以此来消除模糊性(最好 W 是唯一的,而不是 λ W 也可以)。这一点是能够实现的,方法是向损失函数增加一个正则化惩罚(regularization penalty) R ( W ) 部分。最常用的正则化惩罚是L2范式,L2范式通过对所有参数进行逐元素的平方惩罚来抑制大数值的权重:

R ( W ) = k l W k , l 2
W 有元素平方后求和。注意正则化函数不是数据的函数,仅基于权重。
L = 1 N i j y i [ m a x ( 0 , f ( x i ; W ) j f ( x i ; W ) y i + Δ ) ] + λ k l W k , l 2

接下来要做的,就是找到能够使损失值最小化的权重了。

实际考虑

设置Δ。请注意,我们刷过超参数Δ及其设置。应该设置什么样的价值,我们是否需要交叉验证?事实证明,这个超参数在任何情况下都可以安全地设置为Δ= 1.0。超参数Δ和λ看起来像两个不同的超参数,但实际上它们都控制着相同的折衷:数据丢失和目标中正则化损失之间的折衷。理解这一点的关键在于权重W的大小直接影响分数(也就是它们的差异):当我们缩小W内的所有值时,分数差异将变小,并且随着我们放大权重得分差异将全部变得更高。因此,分数之间的边际的确切值(例如Δ= 1或Δ= 100)在某种意义上是无意义的,因为权重可以任意缩小或拉伸差异。因此,唯一真正的折衷是我们允许权重增长的大小(通过正则化强度λ)。

λ
因为可能性分布的集中或离散程度是由正则化参数 λ 直接决定的, λ 是你能直接控制的一个输入参数。
如果正则化参数λ更大,那么权重W就会被惩罚的更多,然后他的权重数值就会更小
现在看起来,概率的分布就更加分散了。还有,随着正则化参数λ不断增强,权重数值会越来越小,最后输出的概率会接近于均匀分布。这就是说,softmax分类器算出来的概率最好是看成一种对于分类正确性的自信。

Softmax classifier(Softmax分类器)

事实证明,SVM是两种常见的分类器之一。 另一个流行的选择是Softmax分类器,它具有不同的损失函数。 如果您之前听说过二元Logistic回归分类器,则Softmax分类器是其对多个类的归纳。 与支持输出 f x i , W 为每个类别(未校准且可能难以解释)分数的SVM不同,Softmax分类器给出了稍微更直观的输出(归一化类别概率),并且也具有我们将 很快描述。 在Softmax分类器中,函数映射 f x i ; W = W x i 保持不变,但我们现在将这些分数解释为每个类别的非标准化对数概率,并用具有以下形式的交叉熵损失代替铰链损失:
将这些分数解释为每个类的非标准化对数概率,并用具有以下形式的交叉熵损失代替铰链损失:
L i = l o g ( e f y i j e f j ) or equivalently L i = f y i + l o g j e f j
这里的 l o g l n
title它需要一个任意实值分数的向量(在z中),并将其压缩到一个介于0和1之间的向量,它们之和为1
我们使用符号 f j 来表示类分数 f 向量的第j个元素。 如前所述,数据集的完全损失是所有训练样例中 L i 的均值以及正则化项 R ( W )
title被称为softmax函数:它需要一个任意实值分数的向量(在z中),并将其压缩到一个介于0和1之间的向量,其和为1。涉及softmax函数的完整交叉熵损失相对容易激励。

softmax与SVM
相对于Softmax分类器,SVM更加“局部目标化(local objective)”,这既可以看做是一个特性,也可以看做是一个劣势。考虑一个评分是[10, -2, 3]的数据,其中第一个分类是正确的。那么一个SVM( Δ = 1 )会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是0。SVM对于数字个体的细节是不关心的:如果分数是[10, -100, -100]或者[10, 9, 9],对于SVM来说没设么不同,只要满足超过边界值等于1,那么损失值就等于0。
对于softmax分类器,情况则不同。对于[10, 9, 9]来说,计算出的损失值就远远高于[10, -100, -100]的。换句话来说,softmax分类器对于分数是永远不会满意的:正确分类总能得到更高的可能性,错误分类总能得到更低的可能性,损失值总是能够更小。但是,SVM只要边界值被满足了就满意了,不会超过限制去细微地操作具体分数。这可以被看做是SVM的一种特性。举例说来,一个汽车的分类器应该把他的大量精力放在如何分辨小轿车和大卡车上,而不应该纠结于如何与青蛙进行区分,因为区分青蛙得到的评分已经足够低了。

小结
定义了损失函数(介绍了SVM和Softmax线性分类器最常用的2个损失函数)。损失函数能够衡量给出的参数集与训练集数据真实类别情况之间的一致性。在损失函数的定义中可以看到,对训练集数据做出良好预测与得到一个足够低的损失值这两件事是等价的。

猜你喜欢

转载自blog.csdn.net/eqiang8848/article/details/82291966
今日推荐