美文网首页
卷积网络

卷积网络

作者: Stack1_e27c | 来源:发表于2019-12-09 15:28 被阅读0次
    • 局部感受野
    • 共享权重和偏置
    • 池化

    使用全连接的网络来分类图像是很奇怪的,原因是这样的一个网络架构不考虑图像的空间结构,他在完全相同的基础上去对待相距很远和彼此接近的输入像素。


    全连接网络

    在本篇文章中,我会描述卷积神经网络,这些网络使用一个特别适用于分类图像的特殊架构。

    卷积神经网络采用了三种基本概念:局部感受野共享权重池化

    局部感受野

    在之前看到的全连接层的网络中,输入被描绘成纵向排列的神经元,但在一个卷积网络中,把输入看作是一个28 x 28的方形排列的神经元更有帮助,其值对应于我们用作输入的28 x 28的像素光强度:


    输入层

    和全连接网络一样,我们把输入像素连接到一个隐藏神经元层。但是我们不会把每个输入像素连接到每个隐藏神经元。相反,我们只是把输入像素进行小的、局部的连接。

    说的准确些。第一个隐藏层中的每个神经元会连接到一个输入神经元的一个小区域,例如,一个5 x 5的区域,对应于25个输入像素。所以对于一个特定的隐藏神经元,我们可能有看起来像这样的连接:


    输入神经元-隐藏神经元

    这个5 x 5的输入图像区域被称为隐藏神经元的局部感受野,它是输入像素的一个小窗口,每个连接学习一个权重,而隐藏神经元同时也学习一个总的偏置。

    我们然后在整个输入图像上交叉移动局部感受野。对于每个局部感受野,在第一个隐藏层中有一个不同的隐藏神经元。


    image.png

    如此重复,构建起第一个隐藏层。如果我们有一个28 x 28的输入图像,5 x 5的局部感受野,那么隐藏层中就会有24 x 24个神经元。我显示的局部感受野每次移动一个像素,实际上,跨距是可以改变的,也可以使用2个像素的跨距,每次移动两个像素的位置。

    共享权重和偏置

    每个隐藏神经元具有一个偏置和连接到它的局部感受野的5 x 5的权重,我们对24 x 24的隐藏神经元中的每一个使用相同的权重和偏置。换句话说,对第j,k个隐藏神经元,输出为
    \sigma(b+\sum_{l=0}^4\sum_{m=0}^4 \omega_{l,m}\alpha_{j+l,k+m})
    这里\sigma是神经元的激活函数。b是偏置的共享值。\omega_{l,m}是一个共享权重的5 x 5数组。\alpha_{x,y}表示位置为x,y的输入激活值。这意味着第一个隐藏层的所有神经元检测完全相同的特征,只是在输入图像的不同位置。用稍微更抽象的术语,卷积网络能很好的适应图像的平移不变性:例如稍稍移动一幅猫的图像,它仍然是一幅猫的图像。

    因为这个原因,我们有时候把从输入层到隐藏层的映射称为一个特征映射。我们把定义特征映射的权重称为共享权重。我们把以这种方式定义特征映射的偏置称为共享偏置。共享权重和偏置经常被称为一个卷积核或者滤波器。

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


    特征映射

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

    让我们快速看下已经学到的一些特征:


    滤波器

    这20幅图像对应于不同的特征映射(或滤波器、核)。每个映射有一幅5 x 5块的图像表示,对应于局部感受野中的5 x 5权重。白色快意味着一个小权重,所以这样的特征映射对相应的输入像素有更小的响应。更暗的块意味着一个更大的权重,所以这样的特征映射对相应的输入像素有更大的响应。

    共享权重和共享偏置的一个很大的优点是,它大大减少了参与的卷积网络的参数。对于每个特征映射我们需要25=5 x 5个共享权重,加上一个共享偏置。所以每个特征映射需要26个参数。如果有20个特征映射,总共有20 x 26=520个参数来定义卷积层。作为对比,假设我们有一个全连接的第一层,具有784=28 x 28个输入神经元,和一个相对适中的30个隐藏神经元,总共有784 x 30个权重,加上额外的30个偏置,共有23550个参数,换句话说,这个全连接层有多达40倍于卷积层的参数。

    池化层

    池化层通常在卷积层之后使用。它要做的是简化从卷积层输出的信息。一个池化层取得从卷积层输出的每一个激活值并且从他们准备一个凝缩的值。例如,池化层的每个单元可能概括了前一层的一个2 x 2区域。作为一个具体的例子,一个常见的池化的程序被称为最大值池化(max-pooling)。在最大值池化中,一个池化单元简单地输出其2 x 2输入区域的最大激活值,正如下图说明的:

    池化
    注意既然从卷积层有24 x 24个神经元输出,池化后我们得到12 x 12个神经元。

    所以如果有3个特征映射,组合在一起的卷积层和最大值池化层看起来像这样:

    image.png
    最大值池化并不是用于池化的仅有的技术。另一个常用的方法是L2池化(L2 pooling)。这里我们取2 x 2区域中激活值的平方和的平方根,而不是最大激活值。

    综合在一起:我们现在可以把这些思想都放在一起来构建一个完整的卷积神经网络。它和我们刚看到的架构类似,但是有额外的一层10个输出神经元(基于MNIST数字识别),对应于10个可能的MNIST数字:

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

    相关文章

      网友评论

          本文标题:卷积网络

          本文链接:https://www.haomeiwen.com/subject/vnpbgctx.html