[CS231n]1·Image Classification
CS231n Convolutional Neural Networks for Visual Recognition
https://www.bilibili.com/video/BV1nJ411z7fe
Data-Driven Approach
在统计机器学习领域,不同于传统的算法,我们的算法是数据驱动的。以图像分类为例,数据驱动方法有以下
- 收集数据并标注;
- 使用机器学习方法训练一个分类器;
- 使用该分类器对新的图片进行分类。
实现上来讲,我们的算法至少包含两个函数:train
和 predict
,前者进行机器学习训练,后者使用训练好的模型进行预测。
Nearest Neighbor
最简单的分类器莫过于最近邻了。仍然以图像分类为例,最近邻的 train
过程仅仅是记录下所有数据及其标签,predict
过程是选取数据集中与当前图片最相近的图片,并以其标签作为结果输出。
尽管最近邻很简单,但是仍然有一个问题需要解决:怎么评判两张图片的相似程度。由于图片可以看作像素点组成的三个向量(
: 这里 是要比较的两个向量,上标 表示向量的第 个元素。该距离也称作曼哈顿距离。 : 即欧几里得距离。
显而易见,最近邻算法准确度很差。如果出现一个噪声点,它将对周围一圈产生误导。
K-Nearest Neighbor
为了解决最近邻的问题,我们可以查看
Hyperparameters
在
为了找寻最好的超参数,我们需要将数据集分为
交叉验证:在数据集不是很多的时候,我们可以选择
KNN on images never used
- 它基本没有训练过程,仅仅是把数据集记录下来,而在使用阶段需要遍历整个数据集,非常耗时(如果使用
实现,随机数据下复杂度是 的,要好一些,但是仍然不满意);这与我们需要的正好相反——我们愿意花费较多的时间对模型进行训练,但一旦训练好了,在对新数据预测时要很快地出结果。 - 不同的图像之间可以有相同的
,这种测度方式对图像而言不太好。 - 当向量维度很高时,我们的数据点在高维空间中的分布是稀疏的,所以所谓的“最近点”可能其实并没有多么的相似。