全链接网络到卷积神经网络逐步推导(组图无公式)

摘要:在图像分析中,卷积神经网络(Convolutional Neural Networks, CNN)在时间和内存方面优于全链接网络(Full Connected, FC)。这是为何呢?卷积神经网络优于全链接网络的优点是什么呢?卷积神经网络是如何从全链接网络中派生出来的呢?卷积神经网络这个术语又是从哪里而来?这些问题在本文中一一为你们解答。

1.介绍

对于图像分析而言,具体能够将其划分为不少类型的任务,好比分类、对象检测、识别、描述等。对于图像分类器而言,即便在诸如遮挡、照明变化、视觉等变化的状况下,也应该可以以高精度的性能工做。以特征工程为主要步骤的传统图像分类方法不适合在丰富环境中工做,即便是该领域的专家也不能给出一组可以在不一样变化下达到高精度的特征,没法保证手工所选的特征是否合适。在这个问题的启发下,特征学习的思想应运而生,经过自主学习来得到合适的图像特征,这也是人工神经网络(ANN)对于图像分析任务鲁棒性的缘由之一。基于梯度降低算法(GD)等学习算法,ANN能够自动学习到图像特征,将原始图像输入人工神经网络后,ANN可以自动地生成描述它的特征。算法

2.基于全链接网络的图像分析

如今一块儿看看人工神经网络是如何对进行处理的,以及CNN为何在时间和内存上相较于全链接网络更高效。如图1所示,输入的是一个3x3大小的灰度图。例子中使用小尺寸的图像是为了方便讲解,而不是代表ANN只能处理小尺寸的图像。
网络

1


图像1ide


在输入ANN时,图像会转变为像素矩阵。因为ANN使用的是一维向量,而不是二维矩阵,因此将输入的二维灰度图转换成一维向量,其中每一个像素点表明一个输入神经元节点。

2
图像2函数


每一个像素被映射为向量元素,向量中的每一个元素又表明ANN中的神经元。因为图像有3x3=9个像素点,那么输入层(Input Layer)将有9个神经元。因为ANN结构一般水平延伸,所以每层被表示为列向量。


输入层与隐藏层(Hidden Layer)相连,输入层的输出又输入给隐藏层,隐藏层学习如何将图像像素转换为表明性特征。假设在图3中有一个具由16个神经元的单个隐藏层。

3
图像3性能


因为网络是全链接网络,这意味着第i层的每一个神经元与第i-1层中的全部神经元相连。即隐藏层中的每一个神经元都与输入层中9个神经元相连。换句话说,每一个输入像素与隐藏层中的16个神经元相连,其中每条链接都具备相应的参数(权重)。经过将每一个像素与隐藏层中的全部神经元相连,如图4所示,该网络具备9x16=144个参数(权重)。

4
图像4学习

3.大量参数

上面例子中的参数数目彷佛还能够接受,可是随着输入图像尺寸变大以及隐藏层数量增长,网络参数将大大增长。优化


例如,若网络具备两个隐层,分别有90和50个神经元,那么输入层和第一隐藏层之间的参数数目是9x90=810,两个隐藏层之间的参数数目为90x50=4500,该网络的参数总数为810+4500=5310。对于这样简单的网络结构就有这么多的参数数量,显然是不合适的;另一种状况是输入图像尺寸较大,好比32x32大小的图像(1024个像素),若是网络使用单个隐藏层(含有500个神经元),则总共有1024x500=512000个参数(权重),这对于只含单个隐藏层的网络而言是一个巨大的数字。所以,必须有一个解决方案来减小网络参数,那么针对于此,卷积神经网络(CNN)应运而生,虽然它网络模型一般比较大,但大大下降了参数数量。ui

4.神经元组群

即便是很小的全链接网络,网络参数数目变得很是大的缘由在于其层与层之间神经元每条链接上都是不一样的参数。所以,能够考虑给一组神经元提供相同的参数,如图5所示,一组神经元内的神经元都将分配同一个参数。
阿里云

5
图像5翻译


这样处理之后,网络参数数量大大下降。以图4为例,好比每4个连续神经元做为一组,其结果是参数数量减小了4倍。每一个输入神经元将具备16/4=4个参数。整个网络将具备144/4=36个参数,参数数量减小了75%。能够看到,其效果很好,但仍然有可优化的地方。

6
图像6


图7显示了每一个像素到每一个组中第一个神经元的链接,但每组中的每一个像素与每一个神经元仍是相互链接,该网络仍然是全链接网络。

7
图像7


为了简单起见,只挑选出一组并忽略其它组,如图8所示。从图中能够看到,每一个组仍然与输入层全部的9个神经元有所链接,所以具备9个参数。

8
图像8

5.像素空间相关性

以前所述内容使得每一个神经元接受全部像素,若存在接受4个输入的函数f(x1,x2,x3,x4),则这意味着要基于全部这4个输入来进行决定。若是只有2个输入,但其输出结果与使用4个输入的结果相同,那么将没必要使用全部的这4个输入,只需给出对结果有影响的2个输入便可。借鉴该思想,每一个神经元接受输入的9个像素,若能使用更少的像素得到相同或更好的结果就大大下降了参数数量,所以能够朝着这个方向优化网络参数。
一般,在图像分析中,输入图像被转换为像素矩阵,像素矩阵中的每一个像素与它周围的像素高度相关,两个像素之间的距离越远,两者越不相关。例如,如图9所示,面部的像素与面部周围的像素相关,但它与天空、地面等像素的相关性较低。

9
图像9


基于这样的假设,上述示例中的每一个神经元只接受彼此空间相关的像素,而不是将全部9个像素点都应用到每一个输入神经元中,所以能够选择4个空间相关像素,如图10所示。对于像素矩阵位置(0,0),那么空间上最相关的像素是坐标点(0,1)、(1,0)以及(1,1)。同一组中的全部神经元共享相同的权重,那么每组中的4个神经元将只有4个参数而不是9个。总的参数变为4x4=16。与图4中的全链接网络相比,减小了128个参数(减小了88.89%)。

10
图像10

6.卷积神经网络(CNN)

因为CNN使用权重共享,使用较少的参数,这使得CNN网络结构通常层数比较多,这是全链接网络没法具备的特性。
如今只有4个权重分配给同一组中的全部神经元,那么这4个权重如何涵盖9个像素点呢?让咱们看看这是如何处理的吧!
图11展现了图10中的一个网络,并为每条链接添加了权重标记。在神经元内部,4个输入像素中的每个都与其相应的权重相乘,如图11中公式所示。

11
图像11


假设这里每次移动的步长设置为1(步长能够本身设置),每次相乘后将像素点索引移动一位,权重矩阵与另一组像素相乘。以此类推,直到整个像素矩阵都与权重矩阵进行了相乘运算。整个过程与卷积运算相同,组的权重与图像矩阵之间进行卷积运算,这也是CNN有“卷积”一词的缘由。

12
图像12


剩余的神经元组也会进行一样的操做,从像素矩阵的左上角开始,直到像素矩阵的右下角都与权重矩阵相乘。

7.参考

Aghdam, Hamed Habibi, and Elnaz Jahani Heravi. Guide to Convolutional Neural Networks: A Practical Application to Traffic-Sign Detection and Classification. Springer, 2017.


做者信息
Ahmed Gad,教师、专一于深度学习、计算机视觉
本文由阿里云云栖社区组织翻译。
文章原标题《Derivation of Convolutional Neural Network from Fully Connected Network Step-By-Step》,

原文连接

相关文章
相关标签/搜索