工具:Python+Numpy
学习参考: http://cs231n.github.io/python-numpy-tutorial/
2.1 数据驱动方法
语意鸿沟:
数据驱动方法:
- 获取大量图片数据集和标签
- 使用机器学习来训练一个分类器
识别程序接口API:最邻近分类器
最临近算法:在训练集中找到最接近的示例(样本),这些样本来自训练集,所以这些最接近示例的标签已知。
如何比较两张图片?
L1距离(曼哈顿距离):
最邻近分类器的python代码:
最邻近算法的训练过程主要是存储信息,预测过程需要和训练集中的所有图片进行对比,测试时间长。而卷积神经网络花费大量的时间训练模型,花比较少的时间进行预测。
2.2 K-最近邻算法
L2距离(欧式距离):
由于坐标轴的改变会影响L1上各点到原点的距离,而L2不会改变,所以当输入特征向量中的某些值,对我们来说意义更大,则选择L1比较合适,但如果只是空间中的一个通用向量,那么L2更加合适。
K和距离函数这样的我们称为超参数,因为他们不一定都能从训练数据中学到,需要我们提前为算法,选择更合适的超参数。
如何选择超参数:
需要关注的不是拟合训练集,而是要让我们的分类器在训练集以外的未知数据上表现更好。
做法之一是,将数据分为三组,训练集、验证集、测试集
做法之二是,交叉验证,小数据集上更常用,而在深度学习中不是很常用。
K邻近距离算法存在的问题:
1.不适合表现图像之间视觉感知的差异,如遮挡、移动和渲染;
2.维度灾难,维度增加时需要指数倍地训练
2.3 线性分类
计算出一张图片在所有分类上的得分,如果某一个分类得分最高,则该图片为这个分类。
线性分类器难以解决的问题有多分类问题。