线性分类器(Linear Classifier)是一类简单的学习算法,但也是一类极为重要的算法,它是Neural Networks(包括CNN)的基础。
如果把神经网络比作乐高积木,线性分类器就是这个积木的每一层的基础模块:
回到CIFAR10:每个图像为32*32的分辨率,每个像素点有3个彩色通道,即构成一个32*32*3=3072长度的向量(array)作为算法输入。
在对CIFAR10使用线性分类器的测试中我们希望输出是一个10维的向量,代表了输入图像对10个标签每一个的拟合程度。
KNN的方法中采用的是数据驱动方法(Data-Driven Approach),即保留了整个训练集作为数据集,并在输入时将图片和整个数据集比较。
还有另一种思路,叫做参数方法(Parametric Approach),将从训练获取的认知表现为f(x,W)中的W即参数。
此处的参数W就是训练所得的一个模型,模型的使用使得在测试以及实际应用场景中避免对性能的高要求,从而能够获得广泛的实际应用价值。机器学习实际上就是如何使计算机通过训练得到一个可用的模型的各种算法。
线性分类器的f(x,W)=Wx(矩阵乘法)
可见CIFAR10训练所得的W就应该是由10个3072维行向量构成的矩阵。(实际应用中Wx还会加一个偏置列向量b)
将10个列向量用图像表现出来,可以可视化地看到线性分类时计算机如何理解每一个标签代表的具体图像:
线性分类器一个显著的缺点就在于只能存储一个模版,如果一个标签中存在多个模版的表现,线性分类器就只好求取多个模式的平均值进行拟合(如上图中马的参数图中可以看到两个类似马头,这是因为输入的训练集中有朝向两个方向的马的图片,而分类器取了平均)。
(神经网络以及更复杂的模型可以处理多个模型的类别。)
另外,可以将线性分类器看做在样本空间划出的一条对样本的分界线(或分界面或更高维),然而这个分类器对于非线性分布的数据难以进行划分(这也是为何SVM中会引入核函数处理更高维的分类),并且难以进行多分类。
本节课只注重了线性分类器的函数形式,以及用矩阵乘法匹配模板的方式。
下节课将继续研究。。。