cs231n---图像分类笔记(第二弹)--终

k-NN分类器需要设定k值,选择哪个k值最合适呢?我们选择不同距离函数,如L1范数和L2范数等,选哪个好?还有不少选择我们甚至连考虑都没有考虑到(比如:点积)。所有这些选择,被称为超参数(hyperparameter)

在基于数据进行学习的机器学习算法设计中,超参数是很常见的。这些超参数具体怎么设置或取值并不显而易见。

特别注意:决不能使用测试集来进行调优。会造成算法对测试集过拟合测试数据集只使用一次,即在训练完成后评价最终的模型时使用。

用于超参数调优的验证集

思路:从训练集中取出一部分数据用来调优,我们称之为验证集(validation set。以CIFAR-10为例,可以用49000个图像作为训练集,用1000个图像作为验证集。验证集其实就是作为假的测试集来调优。

有时候,训练集数量较小(因此验证集的数量更小),会用交叉验证的方法:不取1000个图像,而将训练集平均分成5份,其中4份来训练,1份来验证。然后循环取其中4份训练,其中1份验证,最后取所有5次验证结果的平均值作为算法验证结果。

cs231n---图像分类笔记(第二弹)--终

以上是5份交叉验证对k值调优的例子。对每个k值,得到5个准确率结果,取其平均值,然后对不同k值的平均表现画线连接。本例中,当k=7的时算法表现最好(对应图中的准确率峰值)。若将训练集分成更多份,直线一般会更平滑(噪音更少)。

----------------------------------------------------------------------------------------------------------------

实际应用:交叉验证虽然会耗费较多的计算资源,但还是有必要的。一般分成3、5和10份。

cs231n---图像分类笔记(第二弹)--终

以上训练集被均分成5份,采取交叉验证,那就各份轮流作为验证集。最后模型训练完毕,超参数都定好了,让模型跑一次(而且只跑一次)测试集,以此测试结果评价算法。

-----------------------------------------------------------------------------------------------------------------

NN分类器优缺点:

优点:

  1. 易于理解,实现简单。
  2. 算法的训练不需要花时间,因为其训练过程只是将训练集数据存储起来。(在某些特定情况,比如数据维度较低下,可能是不错的选择。

缺点:

  1. 测试要花费大量时间计算,因为每个测试图像需要和所有存储的训练图像进行比较。而在实际应用中,我们关注测试效率远远高于训练效率。后续要学习的卷积神经网络在这个权衡上走到了另一个极端:虽然训练花费很多时间,但一旦训练完成,对新的测试数据进行分类非常快。这样的模式就符合实际使用需求。
  2. 在实际的图像分类工作中,NN很少使用。因为图像都是高维度数据(包含很多像素),而高维度向量之间的距离通常是反直觉的。下图片展示了基于像素的相似和基于感官的相似是有很大不同的:

cs231n---图像分类笔记(第二弹)--终

上图中,右边3张图片和左边第1张原始图片的L2距离是一样的。很显然,基于像素比较的相似和感官上以及语义上的相似是不同的。

    3. 分类器必须记住所有训练数据并将其存储起来,以便于未来测试数据用于比较。这在存储空间上是低效的,数据集的大小很容易就以GB计。

    4. 对一个测试图像进行分类需要和所有训练图像作比较,算法计算资源耗费高。

比如:若采取像素的相似来判断,会得出狗的图片可能和青蛙的图片非常接近的结果,这是因为两张图片都是白色背景。从理想效果上来说,我们肯定是希望同类的图片能够聚集在一起,而不被背景或其他不相关因素干扰。为了达到这个目的,我们不能止步于原始像素比较,得继续前进。

---------------------------------------------------------------------------------------------------------------------------------

以上内容转载整理来自知乎专栏点击打开链接,侵删侵删。