CS231n的全称是CS231n: Convolutional Neural Networks for Visual Recognition,即面向视觉识别的卷积神经网络。该课程是斯坦福大学计算机视觉实验室推出的课程。目前大家说CS231n,大都指的是2016年冬季学期(一月到三月)的版本。
1. 分类器中L1和L2比较。
在面对两个向量之间的差异时,L2比L1更加不能容忍这些差异,相对于1个巨大的差异,L2距离更倾向于接受多个中等程度的差异。
2. k-Nearest Neighbor分类器存在以下不足
分类器必须记住所有训练数据并将其存储起来,以便于未来测试数据用于比较。这在存储空间上是低效的,数据集的大小很容易就以GB计。对一个测试图像进行分类需要和所有训练图像作比较,算法计算资源耗费高。
Nearest Neighbor分类器在某些特定情况(比如数据维度较低)下,可能是不错的选择。但是在实际的图像分类工作中,很少使用。
实际应用流程:
1) 预处理你的数据:对你数据中的特征进行归一化(normalize),让其具有零平均值(zeromean)和单位方差(unit variance)。
2) 如果数据是高维数据,考虑使用降维方法,比如PCA或随机投影。
3) 将数据随机分入训练集和验证集。按照一般规律,70%-90% 数据作为训练集。如果需要预测的超参数很多,那么就应该使用更大的验证集来有效地估计它们。如果担心验证集数量不够,那么就尝试交叉验证方法。
4) 在验证集上调优,尝试足够多的k值,尝试L1和L2两种范数计算方式。
5) 如果分类器跑得太慢,尝试使用Approximate Nearest Neighbor库(比如FLANN)来加速这个过程,其代价是降低一些准确率。
6) 对最优的超参数做记录。千万不要在最终的分类器中使用验证集数据,这样做会破坏对于最优参数的估计。直接使用测试集来测试用最优参数设置好的最优模型,得到测试集数据的分类准确率,并以此作为你的kNN分类器在该数据上的性能表现。
3. 验证集、交叉验证集和超参数调优
特别注意:决不能使用测试集来进行调优。测试数据集只使用一次,即在训练完成后评价最终的模型时使用。调优策略从训练集中取出一部分数据用来调优,我们称之为验证集(validation set)