引言
在生物界的研究中,当细胞还尚不能称作细胞时,海底火山的诸多孔洞里,生命已悄然发生了分化。
其实这并不难理解。火山口强弱有别,喷出的物质虽基本相似但比例各异,形成的生命若都是一样的形制才堪称奇怪。
0_神经认知机
就目前来看,应用卷积神经网络最广泛还当属是视觉领域。若我们顺着时间线溯源,回到上世纪60年代感受野(Receptive Field)这个概念首次被Hubel等人提出的年代。原来从尚未诞生之始,卷积神经网络便与视觉牢牢捆在了一起。
感受野是Hubel与Wiesel提出的视觉系统模型中的重要组成部分。它指的是眼睛中的单个视觉神经元所能处理的视野在整片视野中的尺寸。将其应用到认知机模型里,便构成了卷积神经网络的前身。
认知机是远古大神福岛邦彦开发的一种神经网络模型。不同于感知机模型通过激活函数来处理神经元输出,在认知机中,神经元输出与否依赖两类突触神经元:兴奋神经元和抑制神经元的加权和。
认知机的另一大优势就是部分连接。认知机中,下一层神经元的参数更新并不受到上层全部神经元的作用,而是只取相邻神经元的输入。这两大优势极大影响了网络的稳定性和参数数量,使得认知机在一定程度上避免了其他神经网络的梯度不稳定问题。
神经认知机的架构则更加复杂。它引入了感受野的机制,不仅在同层神经元间是部分连接,在神经元的内部,感受野也进一步缩小了下层神经元的输入尺寸。
在神经认知机中,出现了当代卷积神经网络的两个主要模块。
卷积层(讲解来自量子位)
-
有数字图像处理经验的同学可以跳过这一小段,基本上是一样的。卷积的具体步骤如下:
-
- 在图像的某个位置上覆盖滤波器;
-
- 将滤波器中的值与图像中的对应像素的值相乘;
-
- 把上面的乘积加起来,得到的和是输出图像中目标像素的值;
-
- 对图像的所有位置重复此操作。
-
让我们举个例子吧。看下面的4x4灰度图像和3x3滤波器:
-
图像中的数字表示像素亮度,0是黑色,255是白色。我们将对输入图像和滤波器进行卷积,生成2x2输出图像。首先,让我们将滤镜覆盖在图片的左上角:
-
接下来,我们在重叠的图像和滤波器元素之间逐个进行乘法运算,按照从左向右、从上到下的顺序。
-
把最右列的乘积结果全部相加,得到:
-
由于滤波器覆盖在输入图像的左上角,因此目标像素是输出图像的左上角像素:
-
用同样的方式处理图像剩下的区域:
-
使用的卷积核不同,卷积操作的作用也大致分为平滑和锐化两种。
-
池化层(讲解来自量子位)
-
图像中的相邻像素倾向于具有相似的值,因此通常卷积层相邻的输出像素也具有相似的值。这意味着,卷积层输出中包含的大部分信息都是冗余的。如果我们使用边缘检测滤波器并在某个位置找到强边缘,那么我们也可能会在距离这个像素1个偏移的位置找到相对较强的边缘。但是它们都一样是边缘,我们并没有找到任何新东西。池化层解决了这个问题。这个网络层所做的就是通过减小输入的大小降低输出值的数量。池化一般通过简单的最大值、最小值或平均值操作完成。以下是池大小为2的最大池层的示例:
1_LeNet
LeNet是卷积神经网络之父Yan LeCun提出的第一种网络构型,虽然是个相对简单的模型,但几乎囊括了现如今卷积神经网络中的大部分的内容。LeNet的结构如下图:
简化来看,LeNet主要由输入层——归一化层——卷积层——激活函数层——池化层——全连接层——softmax——输出层这样构成。通过卷积层——激活函数层——池化层的堆叠加强网络能力。