卷积神经网络介绍

时间:2022-12-13 23:49:37

        对于MNIST手写数字数据集的训练和测试来说,如果使用一般的全连接层网络的话其实是很奇怪的,主要原因是这样一个网络架构没有考虑到图像的空间结构。例如,它在完全相同的基础上去对待相距很远和彼此接近的输⼊像素。这样的话,我们秘法使用空间结构的架构。所以引入卷积神经网络,该网络特别适用于分类图像的特殊架构。目前,深度卷积网络或者一些近似的变化形式被用在大多数图像识别的神经网络中。

        卷积神经网络采用了三种基本概:局部感受野(local receptive fields)共享权重(shared weights)和混合(pooling)

        局部感受野:在之前看到的全连接的网络中,输入描述成纵向排列的神经元。但在一个卷积神经网络中,我们把输入以一个输入看作是一个矩阵排列的神经元。如把MNIST数据看作是一个28×28的方形排列,其值对应输入的28×28的像素光强度:

                                                                         input neurons     

卷积神经网络介绍

         和全连接层一样,我们输入的像素链接到一个隐藏神经元层。但是不会把每个输入像素连接到每个隐藏神经元,我们只是把输入图像进行小的,局部区域的链接。也就是,在隐藏神经元层中的每一个神经元会连接到一个输入神经元的一个小区域,如下图所示:

卷积神经网络介绍

        这个输入图像的区域被称为隐藏神经元的局部感受野。他是输入像素上的一个小窗口,每个连接一个权重,隐藏神经元同时也学习一个总的偏置。在整个输入图像上交叉移动局部感受野,对于每一个局部感受野,在第一个隐藏层中有一个不同的隐藏神经元,如下图:

卷积神经网络介绍

       然后往右移动一个像素(即一个神经元,此处的移动的大小也称为跨距,在实际运用中我们可以使用不同的跨距)的局部感受野,链接到第二个隐藏神经元,如下图:

卷积神经网络介绍

       共享权重和偏置:上面已经提到,每一个隐藏神经元具有一个偏置和连接到他的局部感受野的权重,如上图则为一个5×5权重。对于第j,k个隐藏神经元,输出为:

卷积神经网络介绍

        其中,σ是神经元的激活函数——可以是前面所提到的S型函数。b是偏置的共享值。wl,m是一个共享权重的5×5数组,使⽤ ax,y 来表⽰位置为 x, y 的输⼊激活值。

        这意味着第一个隐藏层的所有神经元检测完全相同的特征(关于特征的概念,非正式的,把一个隐藏神经元检测的特征看作一种引起神经元激活的输入模式:例如,他可能是图像的一条边或者是一些其他的形状),只是在输入图像的不同位置。因为这个原因,我们有时候把从输入层到隐藏层的映射称为一个特征映射。把定义特征映射的权重称为共享权重。把这样方式定义的特征映射的偏置称为共享偏置。共享权重和偏置经常被称为一个卷积核或者过滤器。

以上描述的网络结构只能检测一种局部特征的类型。为了完成图像识别往往需要超过一个的特征映射。所以一个完整的卷积层由几个不同的特征映射组成:

卷积神经网络介绍

        如在上图中,有三个特征映射。每一个特征映射定义一个5 × 5共享权重和单个共享偏置的集合。其结果是网络能够检测3种不同的特征,每个特征都可以在整个图像中检测。

        共享权重和偏置的一个很大的优点就是,他大大减少了参与的卷积网络的参数。当然,我们不能真正做一个参数数量之间的直接比较,因为这两个模型的本质是不同的径。但是使用卷积层的平移不变性似乎很有可能减少全连接模型中达到同样性能参数数量。反过来,这将导致更快的卷积模型的训练,并最终有助于使用卷积层建立深度网络。

        混合层:卷积神经网络除了包含卷积层,还包含混合层。混合层通常紧接着卷积层之后使用。他的作用是简化从卷积层输出的信息。

        准确的说,一个混合层取得从卷积层输出的每一个特征映射并且从他们准备一个凝缩的特征映射。例如,混合层的每个单元可能概括了前一层的一个(比如)2 × 2的区域。作为一个具体的例子,一个常见的混合的程序被称为最大值混合(max—pooling)。在最大混合值中,一个混合单元简单地输出其2 × 2输出区域的最大混合值,如下图所示:

卷积神经网络介绍

         注意:如果一个24 × 24神经元输出的卷积层,混合后则能得到12 × 12个神经元。

         从上面提到的,卷积层通常包含超过一个特征映射。现将最大值混合应用于每一个特征映射。假设有三个特征映射,组合在一起的卷积层和最大值混合层看起来如下:

卷积神经网络介绍

         最大值混合并不是用于混合的仅有的技术。另一个常用的方法是L2混合(L2 pooling)。这里我们取 2×2 区域中激活值的平方和的平方根,而不是最大激活值。虽然细节不同,但其直观上和最大值混合是相似的: L2 混合是一种凝缩从卷积层输出的信息的方式。

        综合在一起:现在可以把这些思想都放在一起来构建一个完整的卷积神经网络。他和刚看到的架构相似,但有一个额外的一层输出神经元,可能是对应10个可能的MNIST数字(‘0,’,‘1’,‘2’等):

卷积神经网络介绍

        从上图可知,这个网络从28×28个输入神经元开始这些神经元用于对图像的像素强度进行编码。接着的是一个卷积层,使用一个5×5局部感受野和三个特征映射。其结果是3× 24× 24隐藏特征神经元层。下一步是一个最大值混合层,应用于2×2区域,遍及3个特征映射。结果是一个3 × 12 × 12隐藏特征神经元层。网络中的最后连接的层是一个全连接层。更确切的说,这一层将最大值混合层的每一个神经元连接到每一个输出神经元(使用的是全连接结构)。