CS231n-图像分类笔记

  • 博主本身有机器学习基础,看视频觉得效率很低,而且听得云里雾里的,又由于是老师要求看CS231n,故看的中文译版的笔记,自己看完之后再精简记录一下学习到的东西。
  • 这是中文笔记地址https://github.com/whyscience/CS231n-Note-Translation_CN

第一节讲的是关于图像分类的kNN算法

基本思想:

计算机是看不到图片的,只能看到图片是由一个个像素值组成,要判断两张图片是否相似,如下图所示,计算它们的L1距离,即对应的各个像素值(即把图片转化为向量了)相减取绝对值,然后再进行求和,L1越小,两张图片越相似
在这里插入图片描述
在这里插入图片描述
还有一种方法是计算L2距离,与L1唯一的区别是,图片的像素值相减后平方,然后求和开方在这里插入图片描述

  • L1与L2比较:在面对两个向量之间的差异时,L2比L1更加不能容忍这些差异。(毕竟他开方了)

还讲了代码,略过

kNN

看笔记没看懂,又去上网搜了一下
https://zhuanlan.zhihu.com/p/25994179这篇非常通俗易懂

由基本思想可知,我们是看测试集的图片离训练集的图片哪个更近,越近的图片的标签就是测试集图片的标签
在这里插入图片描述

ps:引用的上面那篇链接里面的

当k=1时,就选取离测试集最近的一个点,那万一离他最近的一个点是不小心引入的噪声怎么办
在这里插入图片描述
故k太小不行
k太大的话近似于无穷,相当于把测试集所以图片都包括进来了,也不看距离近不近了,直接退化成哪个标签的图片数量多,测试集的图片标签就变成哪个了

如何选取k?

由上面分析可知,k太大太小都不行
把测试集的10%~20%作为验证集(类似于最后的那个测试集)来进行调优选k(超参数)
若测试集很小,那就用交叉验证的方式,即把测试集分为5份左右,循环取一份作为验证集,观察k=多少的时候结果最好,然后取平均
一定不能把测试集当做训练集!!

kNN算法的优劣

  • 优点:简单易实现
  • 缺点:测试要花费大量时间计算,因为每个测试图像需要和所有存储的训练图像进行比较 ,在像素低维的情况下表现良好,但是在实际的图像分类工作中,因为图像都是高维度数据(他们通常包含很多像素),而高维度向量之间的距离通常是反直觉的
    在这里插入图片描述
    如图所示是用tSNE做的可视化技术,越相邻表示L2距离越小,图片越相似
    大致看这张图,可知,图片的排列是被背景主导而不是图片语义内容本身主导 比如,狗的图片可能和青蛙的图片非常接近,这是因为两张图片都是白色背景。这和我们期望识别图片中的内容(语义)背道而驰,需继续向前探索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值