卷积神经网络之父YannLeCuu在1988年提出卷积神经网络时,将这种网络命名为LeNet。现在的卷积神经网络都是基于类似LeNet的网络构架。下图是一个简单的卷积神经网络的图例。
一个卷积神经网络由一个或多个卷积层(Convolution)+池化层(Pooling),再加上一个全连结的前向神经网络组成。
卷积层Convolution
前面咱们已经知道图像卷积操作的原理了。一个卷积核滑动作用在一个图像上,能得到图像的一个对应的特征地图FeatureMap或者激活地图ActivationMap。之所以称为特征地图,是因为一个Filter只关注/提取图像的某一个特征。又称为激活地图的原因,是对应到神经元的特性,即这个神经元只会被特定信号激活。
卷积神经网络的一个卷积层通常有多个卷积核,对应多个特征地图。咱们把每一个卷积核叫做一个Filter,一个卷积层就可以有多个Filter,每个Filter都提取图像的相应特征,从而得到多个特征地图。
(在每个卷积核作用在图像上之后,一般还会用一个ReLU(rectified linear unit)作用在每个像素上,来替换掉结果为负值的情况。)
下面这张动图展示了图像的特征地图的生成过程。
池化层Pooling
池化层的目的是对特征地图FeatureMap做采样,来减少数据维度。可以采用最大值、平均值、求和值等池化方法。下图是一个最大值池化的图例。
对于每一个特征地图,我们都采样得到一个新的特征地图。
对于一个卷积神经网络来说,卷积层和池化层并不一定是一一对应的。可以每一个卷积层都有一个池化层,也可以多个卷积层之后应用一个池化层。
当我们对一个图像进行多次的卷积和池化操作以后,我们把最终的结果输入到一个前向的全连结神经网络,之后就可以运用反向传播算法进行分类训练了。需要注意的是,在卷积神经网络的训练过程中,不仅前向神经网络的权重需要训练,卷积层中的卷积核,也是通过训练得到的。所以初始时,我们只定义卷积层的层数,以及每一层有多少卷积核,不对卷积核本身做定义。
当我们研究训练好的卷积核就能发现,神经网络训练出的卷积核很多对人来说是没有对应意义的。前面咱们也提到各种卷积核的意义,比如高通、低通,边界检测、平滑等,而分析神经网络训练出来的卷积核,你会发现和平常咱们熟悉的卷积核无法对应起来。有些卷积核可能是检测图像某个方向的梯度变化,有些卷积核则无法给出其确切行为定义。这可能也是神经网络这个黑盒子的神秘之处吧。
下图是一个卷积神经网络在做物体识别中,对于人脸识别训练出的卷积核的一个图例。
这里介绍了一个基本的卷积神经网络的拓扑结构。在实际应用中,还会有一些细节上的考虑。除了前面提到的卷积层和池化层的搭配,还有卷积核的大小、卷积核在图像上滑动的步长,卷积层层数等等。这些都要跟实际应用关联起来。总之,设计神经网络也是门大学问,这也是为什么有神经网络架构师这个职业来专门来设计神经网络拓扑结构。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。