线性分类器
1.得分函数(该函数将图像的像素值映射到每个类的置信分数)
线性分类器:
其中参数W是权重,参数b是偏差向量。需要注意的几点:
- 输入数据是给定的,我们可以控制参数W,b的设置。我们的目标是在整个训练集中,以这样的方式计算分数匹配标签,直觉上我们希望正确的类有一个评分的得分高于不正确的类。
- 这种方法的一个优点是使用训练数据来学习参数W,b,一旦学习完成,我们可以丢弃整个训练集,只保留学习的参数。新的测试图像可以简单地通过函数计算的分数进行分类。
- 对测试图像进行分类只需要一个矩阵乘法和加法,这比将测试图像与所有训练图像进行比较要快得多。
线性分类器计算一个类的分数时,是计算3个颜色通道的所有像素值的加权和。根据我们为这些权重设置的值,函数有能力“喜欢”或“不喜欢”图像中某些位置的某些颜色(取决于每个权重的符号)。例如,如果图像的侧面有很多蓝色(可能与水相对应),那么该图像更可能是“ship”类。这样我们会期望“ship”在其蓝色通道权值中有很多正权值(蓝色的出现会增加ship的得分),而在红色或绿色通道中出现负权值(红色/绿色的出现会降低ship的得分)。
通常我们将W,b合写在一起,将
增加一个维度
数据预处理:
图像原始像素值是在[0,255]中。在机器学习中,经常需要对输入的特征进行标准化处理(在图像中,每个像素都被认为是一个特征)。特别是,通过从每个特性中减去平均值来集中数据是很重要的。在图像处理中,这相当于计算训练图像的平均值,然后从每个图像中减去它,得到像素范围大约为[-127…127]的图像。进一步常见的预处理是缩放每个输入特性,使其值的范围从[- 1,1]。
2.损失函数
为了衡量训练得到的W效果是否好,效果越好损失越小。
多类支持向量机损失(希望每个图像的正确类比错误类的得分高一些):
第i个样本的损失
为:
其中
是第j类的分数,是正确类别的分数,SVM想要正确分类的分数比错误分类的分数至少大,否则就累积损失。在线性分类器中,我们的得分函数为
因此,损失函数可以表示为:
补充:hinge loss:
,有时,还会用平方hinge loss :我们的目标是为训练数据中的所有例子找到同时满足这个约束的权值,并给出尽可能低的总损失。我们使用以上损失函数会出现一个问题,假设训练集对每个样本都分类正确,此时loss=0,但W的值不唯一,也就是如果W是让loss=0的一组值,那么
也是让loss=0的值,在进行分类时,我们希望W是唯一的,因此我们希望加入正则项。正则项:(减小模型的复杂度,提高泛化性,防止过拟合)
正则化函数不是数据的函数,它只是基于权重。
通常正则项有:
- L2正则:
- L1正则:
- 弹性网络正则(L1和L2的组合):
- Max-Norm正则
- Dropout
- 批量归一化,随机深度
多类SVM损失为:
其中
通常通过交叉验证得到。一些实际tips:
- 的设置,在大量案例中,设置为1是很安全的,虽然和看起来是两个不同的参数,但实际上他们控制相同的权衡,即数据损失和正则损失之间的权衡,因为W可以增大或减小而不改变损失,我们通过或限制W的改变。
- 与二分类SVM的关系:
其中C是超参数,
,可以看到softmax分类器 (多分类logistic回归)
得分函数f不变,用交叉熵代替hinge损失,整个损失还是是所有
的均值加上
在真实分布p和估计分布q之间的交叉熵:
估计分布可看作
,真实分布是;交叉熵还可以看作熵加上KL散度(两个分布之间的差异)数值计算时的修改:由于
和时较大的数,相除会不稳定,我们将分子分母同时乘以C,通常我们将设置为
SVM和softmax区别:
Softmax分类器从不对它生成的分数感到完全满意,总是希望正确的类有更高的概率,而错误的类总是有更低的概率,损失总是更好。 然而,对于SVM,总是希望正确类比错误类高出一个安全边界,一旦边界得到满足,SVM就会很满意,而且它不会对超出这个限制的准确分数进行调整,即在正确类的时候进行微小改动不会有任何影响。
来源:CSDN
作者:kkklern
链接:https://blog.csdn.net/zll1130/article/details/103394675