CNN笔记(CS231N)——图像分类(Image Classification)

图像分类

如果我们想训练一个图像分类器,我们很难想出一个具体的算法步骤将每幅图片都能正确的分类,那么这种情况下我们可以采用数据驱动的方法,利用机器学习来训练分类器

KNN

一种方法是把全部数据和标签记下来,然后对于一组新的数据,我们去寻找最相近数据的标签作为预测标签

那么我们如何去定义所谓的“相近”呢?一种方法是用L1距离,简单的描述了对应像素值的差

如果我们站在一个高维的角度来看,我们可以把图片看做分布在一个平面上的点,横纵坐标分别代表着不同的特征,那么我们的分类效果将会如下图所示

为了使分类器具有普适性,我们可以利用K最近邻算法来进行优化,也就是我们取K个最小距离的训练样本点,然后观察样本点的标签最多的是哪一个,将其作为预测标签

除了L1距离,我们还有L2距离可以作为衡量标准,二者对应的等距在几何上的意义是不同的

混合参数

我们可以看到由以上定义,算法中多了很多参数供我们选择,例如K、距离度量标准等等,我们把这种参数叫做混合参数(hyperparameters),为了确定这些参数,我们需要独立于训练集与测试集以外的集合来作为辅助。因此我们定义了验证集,验证集专门用来确定算法的混合参数

对于小的数据集,我们还可以采用交叉验证的方式来对模型进行优化,即将测试集的不同部分划分为验证集,然后对模型进行多次训练

但是KNN在图像分类问题中实际上很少使用,因为它的距离度量过于简单,并不具有很大的参考性

另外,为了寻找输入图像在特征空间上的临近点,我们需要足够多的训练数据充满整个空间,这样才能使算法有很好的普适性,对于任何输入图像都能找到较近的样本点。但是随着样本空间维度增高,我们需要的数据呈指数式增长,我们很难获取如此大量的数据

线性分类

刚才提了图像分类的一种方法,另一种方法是线性分类(Linear classification),线性分类器是CNN的基本组成部件,他将图像的每个像素三个通道的值作为输入,将输入的值与权重进行相乘,加上偏置项得到输出,这个输出的值代表着图像分为不同类的可能性,值越大代表可能性越大

如下图是一个例子

当我们对权重进行训练以后,我们将权重组合成一张图片显示出来,我们可以看到我们训练后的权重实际上是这个类的一个模板,代表着这个类中某种特定的模式

但是线性分类有其局限性,因为对于在特征空间中复杂的形状无法通过一条直线来拟合其边界

猜你喜欢

转载自blog.csdn.net/shanwenkang/article/details/86617618