课程2和3简介
CS231n 视频课程2和3从图像分类要解决的原始问题及面对的困难为起点,引出第一个也是最直观的最近邻分类器(KNN),讲解KNN模型时,引入了模型的超参(hypeparameter)概念,进一步讨论如何选取超参时水到渠成的引出了数据集的切分和K折交叉验证法;接着在说明了KNN用于image classification中的缺陷后开始学习较为强大线性分类器(linear classifier),模型的调参过程中需要用损失函数(Loss function)来评价当前模型的输出和实际值之间的误差,课程中介绍了多类别的SVM Loss function和Softmax Loss function,然后通过两中Loss function的’bug’引出了正则化(Regularization)并且简单比较了L1正则化和L2正则化的特点,最后介绍了梯度下降法在模型优化中的使用,为下一节的BP算法做准备。
认真学习这两节课程之后,会发现以上提到的ML中的基础概念或方法都不是孤立的,它们都是在同一个问题的背景下,解决不同问题的理念和方法而已,这是两节课给我最大的收获。
图像分类问题中的核心任务
- 给定图像,输出图像所属类别
例如给出10张待分类图片,需要输出图片的类别是{‘cat’, ‘dog’, ‘car’},这个任务中,因为以下几方面的不同给图片分类带来巨大的困难: - 视角多样性(viewpoint variation)
- 光照(illumination)
- 主体形态变化(Deformation)
- 遮挡(occlusion)
- 背景干扰(background clutter)
- 组间差异(intraclass variation)
上述每个可能的问题课程中都有几种图片来生动描述,不理解的可以参考原课件。正是由于以上问题我们无法通过模型驱动方式去hard code实现分类算法的每一步来达到图像分类的目的,只能通过机器学习这种数据驱动模型来解决这个问题。
第一个分类器算法:KNN(k nearest neighbor)
KNN实际上是由最近邻(NN)扩展而来的,我们的问题是判断图像的类别,最直观的想法是通过计算输入图像和已有标记的每一张图像做比较,和哪一张最接近我们就可以认为这两张图片属于同一个类别的。所以NN模型面对的第一个难点就是如何衡量两张图片之间的距离,这里介绍了两种最简单的距离衡量方式:
- L1距离(曼哈顿距离) :