深度学习入门笔记--图像线性分类

这篇博客是为了自己方便回忆知识点做的一些记录和整理,参考资料是知乎专栏的CS231N课程笔记翻译

想看详细版请点链接:

https://zhuanlan.zhihu.com/p/21930884?refer=intelligentunit%20%E8%BF%99%E4%B8%AA%E6%98%AFCS231n%E7%9A%84%E7%BF%BB%E8%AF%91%E7%AC%94%E8%AE%B0



计算机识别图像的困难与挑战

  • 视角变化(Viewpoint variation)
  • 大小变化(Scale variation)
  • 形变(Deformation)
  • 遮挡(Occlusion)
  • 光照条件(Illumination conditions)
  • 背景干扰(Background clutter)
  • 类内差异(Intra-class variation)

图像分类流程

输入->学习->评价


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

该方法的第一部分就是定义一个评分函数,这个函数将图像的像素值映射为各个分类类别的得分,得分高低代表图像属于该类别可能性的高低。

线性分类器


其中W被称为权重(weights),b被称为偏差向量(bias vector)


深度学习入门笔记--图像线性分类_第1张图片


上面举的例子的分类结果显然不好,分类器输出狗的概率最高,但实际上这是一只猫。

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

关于权重W的另一个解释是它的每一行对应着一个分类的模板。从这个角度看,线性分类器就是再利用学习到的模板针对图像做模板匹配。

偏差和权重的合并技巧

将偏差值b也放入到W的参数矩阵中


变为


变换方法如图示

深度学习入门笔记--图像线性分类_第2张图片

多类支持向量机损失 Multiclass Support Vector Machine Loss

第i个数据中包含图像的像素和代表正确类别的标签。评分函数输入像素数据,然后通过公式来计算不同分类类别的分值。这里我们将分值简写为s。针对第j个类别的得分就是第j个元素:。针对第i个数据SVM的损失函数定义如下:


通常被称为折叶损失,有时候会听到人们使用平方折叶损失SVM,它使用的是,将更加强烈地惩罚过界地边界值。


多类SVM想要正确类别的分类分数比其他不正确分类类别的分数要高,而且至少高出delta的边界值。如果其他分类分数进入了红色的区域,甚至更高,那么就开始计算损失。如果没有这些情况,损失值为0.

正则化(Regularization):

有可能存在多种参数组合能使分类效果达到最佳,比如,给参数整体乘上一个常数。

为了解决这个问题,我们要给某些特定的权重W添加一些偏好,其他的权重则不添加。方法是向损失函数增加一个正则化惩罚(regularization penalty)。

常用的正则化惩罚是L2范式


这样我们得到了完整的多类SVM损失函数



完整展开公式如下:


其中超参数的值无法简单确定,需要通过交叉验证来获取。

实际考虑

设置Delta

大多数情况下都被设为1 。detla和lambda一起控制同一个权衡:损失函数中的数据损失和正则化损失之间的权衡。


Softmax分类器

SVM将输出作为每个分类的评分(因为无法定标,所以难以直接解释)。与SVM不同,Softmax的输出(归一化的分类概率)更加直观,并且从概率上可以解释,这一点后文会讨论。在Softmax分类器中,函数映射保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并将折叶损失(hinge loss)替换为交叉熵损失(cross-entropy loss)。公式如下:

或等价的


上式中,使用来表示分类评分向量中的第j个元素,和之前一样,整个数据集的损失值是数据集中所有样本数据的损失值的均值。

其中函数被称作softmax函数。


信息论视角:

在“真实”分布p和估计分布q之间的交叉熵定义如下:

因此,Softmax分类器所做的就是最小化在估计分类概率(就是上面的)和“真实”分布之间的交叉熵。


SVM和Softmax的比较

深度学习入门笔记--图像线性分类_第3张图片


针对一个数据点,SVM和Softmax分类器的不同处理方式的例子。两个分类器都计算了同样的分值向量f(本节中是通过矩阵乘来实现)。不同之处在于对f中分值的解释。

SVM分类器将他们看作是分类评分,它的损失函数鼓励正确的分类。

Softmax分类器将这些数值看作是每个分类没有归一化的对数概率,鼓励正确分类的归一化的对数概率变高,其余的遍地。




你可能感兴趣的:(深度学习)