前面我们已经了解了简单的线条如何组成部件特征,那么由部件如何推理出图像的分类呢?我们已经知道,图像的分类是通过全连接层来实现的,这里我们就来讲解全连接层的原理。
在介绍“特征提取”的时候,我们已经知道,一个部件在图像中是否出现,仅需一个特征值即可表示,比如在上面的例子中,倘若在图像(或者二维矩阵)中出现一个正数(1865),则认为“左横”这一特征出现了,接下来再用一些加工方法,比如说池化,下采样层,对其进行简化,使其成为一个像素点,那么该点的值则代表了“左横”这一特征,如果特征值为非零,则认为“左横”这一特征被提取到了。
关于这些加工方法,我还没来得及做完整的分析认证,也许并不只是下采样那么简单,但有一点是肯定的,即在最后开始全连接的时候,全连接层的输入层,其每一个像素点确实代表了一个特征,而不是由每一通道的整个二维矩阵来代表一个特征。关于如何做到仅用一个像素值来代表一个特征,其实也很简单,举个极端的例子,以我们上面得到的结果为输入,假设我们通过运算得到一个如下的结果矩阵:
其中左上角的像素值代表提取到了“除号”一个“左横”特征,那么这时我们只需要做一个max-pooling,卷积核与输入矩阵大小一致都是3 x 3,步长也是3,这样输出结果将得到一个仅为1 x 1的像素点,这个像素点就是原来左上角的特征值1865。
现在我们将这一个个的像素点连接起来,首先将每一通道的每一行像素首尾相接,组成一个一维的向量,然后再将所有组成的一维向量首尾相接,组成一个更大的一维向量,那么这时候这个最大的一维向量的每一个像素点都代表了一个特征,这是一个一维的特征向量。而其特征值是否为0,或者其他条件,则代表了该特征在图像上是否存在。
接下来就是一个“充分必要条件”的推理及逐步归纳的过程。
假设全连接层的第一层代表的是一众动物的局部特征,例如第一层中被激活的红色节点代表了熊猫的耳朵、眼睛等等,那么经过一层全连接计算,它们将激活熊猫的头部特征。同理,第二层红色的节点代表了熊猫的头部、前肢、后肢等等,经过一层全连接的计算,它们将激活“熊猫”这个分类。
那么这个计算是如何做到的呢,办法就是全连接层的filter。在全连接层中,每一个连接使用的都是独特的filter,这个在介绍全连接层的时候已经讲过了。所以,每一个filter它要提取的特征都是不一样的,例如,如果我要提取的是熊猫的头部,那么这个filter仅有第2,4,5,8,10这5个节点的权重为1,其他节点的权重都为0,倘若输入层这5个节点的值都不为0,那么熊猫的头部将被激活,否则不被激活。
接下来再经过一个softmax函数的处理,如果有某个分类的概率比较高,则可以认为图像属于该分类,否则图像不属于任何分类。
这里为了形象说明,将图像拆解成我们易于理解的各个部件,事实上计算机学习得到的特征并不一定是我们理解的这样拆分,但这并不妨碍其对图像的正确分类。
最后一步使用到的softmax是一个起到分类作用的函数,分类函数的作用是根据某一次抽样的结果,判断是属于已经确定的分类列表中的哪一个分类(多分类),或者属于或不属于某一分类(二分类)。
这样设想一下,在卷积层我们通过一个filter得到一个部件特征,假如有100个filter,则将提取100个特征。倘若其中9个特征属于猫,那么代表猫这个分类的数值就比较大,假如其中有两个值是狗,那么代表狗的数值就小一点,因为可能我们只找到狗的耳朵或者尾巴,其他部分没找到。根据这个我们来计算每一个分类的概率。
这一原理是如何实现的呢?首先我们需要先来了解统计学中的一个工具:logistic回归。
什么是回归呢?这是统计学中的一个概念,回归,指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另一组(X1,X2,…,Xk)变量之间关系的统计分析方法,又称多重回归分析。回归分析是一种数学模型。简而言之,如果两组数据之间有关系(规律),则有回归,否则没有回归。
根据之乎上的资料,回归这个词最早是被高尔顿提出的。他的重要发现之一是子女与父母之间的身高存在一定关系,简单点说就是如果父母比较高,那么子女会比父母矮一点,反之,如果父母比较矮,那么子女会比父母高一点。也就是说,有一股神奇的力量,在无形之中将人类的身高控制在某一个平均值附近。这也被称为均值回归。
如果变量之间(自变量和因变量)的关系是线性关系,我们称之为线性回归。比如说耕地面积与粮食产量之间的关系,汽车里程与加油金额之间的关系等等。
有的人可能会说,粮食产量与耕地面积之间并不是完全的线性关系,你加同样多钱的没,每次开的里程也不会一样多。不错,现实世界总是由很多复杂因素构成的,在粮食产量和耕地面积这对关系之间也夹杂着许多“噪声”,然而无形之中却总有一股看不见的引力,要将产量也耕地面积的关系往中间的某个区域拉过去。我们便将这种力量称之为“回归”,它要回归到某一份客观存在的规律,纷繁的数据背后的本质。而它所回归的“规律”,其形式,则被我们称之为(概率)分布的类型。什么意思呢,如果样本数据回归的区域是一条直线,我们就叫它线性回归,如果用函数来表示,形式如:y = wx + b。如果回归区域是另一种形式,我们也可能称它为logistic回归,等等。究竟是什么类型,是由数据背后的客观规律,以及描述它的数据工具所决定的。
通常而言,这种形式或类型是我们先识别出来的,也就是说,我们先知道了数据分布的类型,即函数的类型(指数形式,对数形式,线性函数等),然后再来计算其参数。
所以“回归”的另一层含义,也暗示着“由散乱的样本数据,推理出有规律的分布函数”这个意思。与惯性思维不同,在这类实际应用问题(统计)中,我们是先知道(样本)数据,然后来推定出某一个规律(函数),而不是相反。至于那个抽象中的函数到底确切是什么,除了上天,谁也不知道,我们只能根据手中的样本数据,来尽可能拟合出一个最接近的方程。
假如有如上图这样一组数据,我们会第一时间就猜测出来这些数据是有规律的,它们应当是在一条直线周围波动。但是这条直线应该画在哪里呢?这就要回到“回归”的含义上去了,假如说粮食的产量主要由耕地面积决定,其他因素都是次要因素,那么如果我们想排除其他干扰,找出粮食产量与耕地面积之间的真实关系时,让拟合出来的关系函数与真实数据之间的误差最少,也就是每个样本数据点和预测出来的函数上的点的距离(差值的绝对值)之和最小。
求这个函数(即求线性函数的参数)的方法叫“最小二乘法”或“最小平方法”,这里我们就不展开了,因为和我们要分析的问题关系不大。
Logistic 分布是一种连续型的概率分布,其分布函数和密度函数分别为:
其中F(x)与f(x)的图形分别如下。
我们已经说了,一种分布的类型,是由数据背后的客观规律决定的。