Linear Classification
之前有学习过Linear Regression,在图像识别中基本相似,使用一个线性方程,根据输出结果判断到底是属于哪一类,下图等号右侧的每一个字母都代表了一个矩阵。
W(称为parameters/weights),bias在这里是偏差,比如说我们的数据中猫很多,狗只有几只,那么猫的bias可能比狗高,因为我们更倾向于预测出猫来。
Bias trick
上述函数中有两个未知参数W和b,为了更加方便地对参数进行跟踪,我们可以把这两个参数合并成一个: f(xi,W,b)=Wxi+b=[W b][xi 1]=W_new xi_new=f(xi_new,W_new)
例子:
这样在CIFAR-10ZHONG ,xi就不再是3072*1维的向量,而是3073*1维,同时W也变成了10*3073维的矩阵。
线性分类器的理解
第一种:模板匹配
我们已经知道CIFAR-10的weights是10*3072维的,并且每一行都是一个类别的分类器,那么我们将每一行3072维的weights reshape成图像尺寸的32*32*3维,我们会发现这些weights其实包含了各自类别的一些特征。比如说飞机,它的weights重构成的模板基本是蓝色的,这是因为大多数的飞机背景都是蓝天,所以学习到的weights在蓝色通道会有很多正的值。再比如马的模板,我们可以看出这个模板有两个马头的样子,这是因为在训练数据中有一些马的图片马头朝左,一些马的图片马头超右,线性分类器为了同时满足这两种状态,所以最终得到的模板就是两个马头的样子。从这一点我们可以看出线性分类器并不是一种很强的分类器,它依赖于你所给图片的视觉特征,比如背景颜色等。
第二种:相当于是对像素构成的高维空间进行划分
我们的数据是散落在3072维的像素空间中的一系列点,线性分类器则对这个高维空间进行分割。比如说红色的这条线代表的是车的分类器,在这条线上的点意味着它属于车的score为0,箭头所指的方向表示越来越像车,也就是车的score>0。
那么线性分类器不适用的情况会是什么呢?
当我们的数据量非常大的时候,我们刚刚说了线性分类器相当于模板,大量的数据很有可能使我们的模板为了包含尽可能多的信息而变得什么都不是,想想那个两个头的马的模板,如果图片更多一点,那就再也看不出来是马了。另外我们也将线性分类器看成是对高维空间的线性划分,那么当类别增多,或者同一类物体的样例增多,很可能整个高维空间会被划得乱七八糟而导致总体的分类效果并不好。
Hard cases for a linear classifier:简单来说就是划线很难解决的问题,大家可以试着用笔画一画。也正是因为这些问题的存在,所以科学家们才在不断探索更多的模型来解决这些更复杂的问题啦。
待下节课补充:
有一篇记录很详细的中文版CNN课程笔记,上述内容有部分摘录自这篇笔记