您的位置:首页 > 其它

【CS231n Winter 2016 Lecture 2 (Image classifier,NN/KNN/linear classifier)】

2016-05-12 10:17 176 查看

Lecture 2

上一讲结束后,李飞飞就回家生孩子了。这一讲是Andrej Karpathy讲

语速较快,不过听着还行,当练练听力。

上来就说先把image classifier给搞定了,然后各种渲染classifier is a challengeable task. 举的是猫的例子,在不同的照片角度,光照,猫的姿态,品种等各种“干扰”下,分类器都应该robust. 贴一个图来体会体会,我也是醉了。。



但是现在的分类器已经能够又快又好地解决这个问题了,精度不亚于人类,这节课就来学习。对于image classifier前人已颇有建树,但是需要feature engineering



这节课要学的东西(data-driven算法)则很好的解决了这个麻烦的feature engineering的问题



第一个分类器,NN/最近邻算法



计算距离的方法:



但是NN的缺点是 instant train but expensive test. 每次的预测/test时间复杂度正比于训练样本的个数

有一个可以加速NN的方法(下图的一个库),但是这是题外话。



有两种distance的衡量方法 曼哈顿距离/欧几里得距离



另一种分类器是KNN(多数表决思想),NN的变种。下图比较了NN与5-NN



说到NN在训练集上的误差为0,而KNN的训练误差不为0

接着说怎么选择distance/k,答案是不唯一,而是problem-dependent



怎么得到hyperparameters? 说到一种方法,就是看遍历所有的distance/k…看哪种在train data上表现最好。 然后说,这样其实不是最好的方法,因为会过拟合,泛化能力差。这属于ML的基础知识,就不展开了



实际中用到的是交叉验证, 比如下图的five-fold cross-validation



举了一个例子,比如对于不同的k使用五重交叉验证得到下图的结果,其中图中每一列有5个点,从图中可以看出,accuracy大致先升后降,k约为7时最佳。同样的可以对不同的distance或者或模型(因为hyperparameters事实上是可以包括不同的假设函数/模型的)等使用此种方法考察。



KNN实际中基本不用



一个总结:。。。原来validation和cross-validation并不一样,后者是train data 太少时采用的



下面一系列讲线性分类器,为CNN铺垫。(讲课思路是以模型为导向,前边讲分类器是以任务为导向的)



主讲人觉得玩神经网络就像完乐高积木(不同的层拼到一起),这样想法的原因源于讲课人曾经做过的一个用一句话描述图片的工作



CNN适合为图像建模,RNN适合为序列建模/sequence model,比如用一句话描述图片中的一句话就是属于序列。下图将CNN(用于see image)和RNN(用于describe image)“拼”到了一起(见图中的箭头) ,所以就想玩乐高积木一样! 真形象!!!

我们会慢慢向着这个模型进发,大约到课程中段我们就能搞定这个模型!(很期待。。)



重新回到CIFAR-10分类问题上来



我们解决这个(分类)问题的方法是通过——参数模型的方法,下图相当于一个从3072维到10维的映射,参数为W。具体地,我们接下来会讲到几种参数模型,首先是线性模型,然后延伸到神经网络,最后是CNN

PS:先前讲到的NN/KNN是非参数模型,因为没有指定的需要优化的参数,这是参数模型与非参模型的主要差别(原来如此。。)



线性分类器:



举了一个例子:



怎么解释线性分类器呢(insight)?

W矩阵的每一行(对应一个分类器)都可以看做对整幅图(x列向量)做了一个template,或者通俗地说就是“赋权”。可视化为下图(一共十行,也就是对应十个类),然后注意到倒数第三类,是一只马,但是却很模糊了,问为什么template会这么模糊呢?

解释的原因是,因为这个线性分类器对于position不够鲁棒,所以一个马的template会出现几个马头等等之类的,也挺好理解的。但是在神经网络中不会出现这种情况,因为神经网络会对不同位置的马分别学习template。大概就这种意思。。



接着补充了另一种线性分类器的解释:没听太懂,估摸就是找到每一类的主方向吧



然后讨论什么情况的数据集,线性分类器可能会搞砸呢?其实例子很多,也比较容易想,比如一直金毛狗,然后位置到处都有的数据集。。或者从数学上来看,只要是高维线性不可分的就分不好。



最后说道为了量化分类的好坏,有必要以数学形式给出损失函数



以后解决问题的流程就是:提出损失函数,优化损失函数(得到模型参数),慢慢地会过渡到CNN



That’s all, lecture 2 done!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: