cs231n-图像分类:kNN与线性分类器
声明:根据ppt以及子豪哥的讲解,同时含有自己的一些理解,逐渐构成的该部分文章。若有哪里有问题,欢迎各位积极提出宝贵的意见,谢谢大家。
十分感谢cs231n的课程老师以及b站up主:同济子豪兄
1.概述
图像分类,物体检测。
宗旨:
2.图像分类:kNN与线性分类器
图像分类:只要检查出对应物体的类别即可
数据驱动方法:
Nearest Neighbor
最近邻居算法:简单理解就是想要判断一个人是否是一个好人,就看看离他最近的人是不是好人,若是好人,那他大概率是好人;若不是,则他大概率也不是好人。

数据集:32x32x3
![]()
如何衡量两张图片是否相近?
- L1距离(曼哈顿距离):对应位置向量相见,求取绝对值
K-Nearest Neighbors
该算法不只是看与我们的目标最近的数据,而是看与它最近的多个数据。(可能3个,5个等)

L2距离
kNN算法中的超参数 (hyperparameters) 如何选择?

最好的方式就是既有训练集,有验证集,同时也要有测试集。
![]()
对于小的数据集要尽力使每个数据集发挥出应有的作用。
![]()
选取准确率最高的k值
![]()
缺陷:运行速度比较慢等
![]()
维度诅咒:随着维度的增加,数据的个数成指数爆炸的,计算量很大。
Summary
k和距离度量的指标是两个超参数,需要人工指定。->可以使用验证集的方式进行划分
线性分类
一张32x32的3通道图(2072个向量),给每个自变量(向量)乘上一个权重,那我们乘上十个不同的权重,就会得到10个分类器。
图像变成长向量,再矩阵相乘对应不同物体的权重(猫,狗,船)加上截距(偏执(猫,狗,船))最后得出对应每个物体的分数,从中找到最大的分数作为预测结果。
其实和上面表达的一个意思
将3072个权重还原成32x32x3的图像大小,可得出32x32x3的彩色图像(可视化解释):
例如青蛙,可以看到青蛙的权重图,中间的绿色比较比较多,对于图像中间有绿色的比较敏感~
线性分类器就是在n维空间中的一个线性边界,在一维空间中是一个点,在二维空间中是一个直线,在三维空间中是一个平面,在高维空间中是一个超平面。
我们的十个线性分类器就相当于在3072维的空间,画了十个线性的超平面(把10个物体进行分开)
线性分类的缺陷:无法对非线性问题进行分类
代数解释,可视化解释,几何解释