从宏观来看,卷积网络可以看做是由一个个不同的神经网络组件组合而成,就像积木一样通过不同类型的组件搭建形成,其中线性分类器是一个很重要的组件,在很多卷积网络中都有用到,所以了解清楚它的工作原理对我们后续的学习会有很大的帮助。线性分类器是参数模型中最简单,最基础的例子,下面我们用输入图片输出图片分类的模型的例子来更进一步地了解它。
首先,我们输入一张图片到模型中,输入后我们就会得到f(x,W),x指的是参数,W指的是权重。紧接着通过模型的函数,将参数与权重带入后会输出10个数字,进而转为图片的类型。与之前用KNN算法进行图片分类不同的是,在这个模型的例子中,不需要将训练的数据集与测试集去一一比对找最相似的类别,相反我们只需要在测试时,有输入图片得到的参数和权重就可以知道图片所属的类型了,这也意味着这个模型可以适配在很多设备上,包括电脑甚至手机。对于深度学习的模型来说,函数的结构便是模型的核心功能,而在这个例子中,线性分类的函数形式就是最简单的让参数与权重相乘:F(X)=W*X。
那么,线性分类器的工作形式就很明显了,假设图片是22的图像,我们把它拉伸为一个拥有四个元素的列向量,而W权重矩阵是一个3*4的矩阵,将矩阵与列向量进行点乘的运算,再加上为了平衡模型数据集造成的偏差的偏差向量,最终得到了三个类别(假设模型训练时用的是三个类别的数据集)的得分,如下图所示:
当然这里的权重矩阵是需要反向传播和损失函数来确定的,这里只是为了方便理解线性分类器的过程而设置的一个随机的3*4的矩阵。也可以理解为,权重矩阵就是模型对于某类图片的认知,如果将W矩阵中的某个类比的行向量变形为输入图片的像素尺寸再可视化,就能观察到在模型眼里这类图片的“样子”,比如汽车的图片就是一片模糊中呈现一个类似于凸的轮廓。
线性分类器这种识别图片的方法,有点类似于模版匹配,即模型对该类别图片的理解来源于一个模版,如果给出的是货车的图片,模型会尝试求可能得模型的轮廓并得出一个每个类别变体的平均值来作为答案,但这也会导致该类的行向量去判断的准确率降低。如果把图片看作高位空间的一个点(类似于平面图中的一个点,在这里进行了一个同等的升维),线性分类器就是在尝试用线将图片区分开来,类似于在坐标系中,AX+B>0的范围属于A类图片。这样,就引出了它的弊端了,即存在很多不能分类的图片,比如最简单的在一个矩阵中,用横竖两条线切割成四块,斜对角的为一个类别,那么不管怎么划分线,一条线的另一端始终会有两个种类的图片。同样的,另一类的存在范围是以内切圆环或一个个圆的话,也是同样区分不了的。在现实中,这指向的是我们的数据是多模态数据,某个类别会在不同的领域出现。
学习来自于斯坦福课程:Stanford University CS231n: Deep Learning for Computer Vision