机器学习(十三):卷积神经网络(CNN)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/eeeee123456/article/details/82191953

引言:

    卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,是在经典神经网络的基础上增加了卷积层和混合层,阅读本文前,请先了解人工神经网络相关知识。

一、柔性最大值(softmax)

    柔性最⼤值的想法其实就是为神经⽹络定义⼀种新式的输出层。开始时和 S 型层⼀样的,⾸先计算带权输⼊ z j L = k w j k L a k L 1 + b j L 。不过,这⾥我们不会使⽤ S 型函数来获得输出。⽽是,在这⼀层上应⽤⼀种叫做柔性最⼤值函数在 z j L 上。根据这个函数,第 j 个神经元的激活值 a j L 就是

a j L = e z j L k e z k L
其中,分⺟中的求和是在所有的输出神经元上进⾏的。
    根据定义,输出的激活值加起来正好为 1
j a j L = j e z j L k e z k L = 1
我们看到柔性最⼤值层的输出是⼀些相加为 1 正数的集合。换⾔之,柔性最⼤值层的输出可以被看做是⼀个概率分布。



二、卷积神经网络的三个基本概念

1. 局部感受野(local receptive fields)

① 概念
    和通常⼀样,我们把输⼊像素连接到⼀个隐藏神经元层。但是我们不会把每个输⼊像素连接到每个隐藏神经元。相反,我们只是把输⼊图像进⾏⼩的、局部区域的连接,这个输入图像的区域就称为隐藏神经元的局部感受野。
    每个连接学习⼀个权重,⽽隐藏神经元同时也学习⼀个总的偏置。然后在整个输⼊图像上交叉移动局部感受野,如此重复,构建起第⼀个隐藏层。移动局部感受野的距离称为跨距。

② 实例
    举例说明,我们有⼀个 28 × 28 的输⼊图像,5 × 5 的局部感受野,跨距为[1,1](上下步长均为1),那么隐藏层中就会有 24 × 24 个神经元。具体如下图所示,左边橙色部分即为局部感受野。
这里写图片描述

2. 共享权重和偏置(shared weights and bias)

① 概念
    前面说到每个连接学习⼀个权重,隐藏神经元同时学习⼀个总的偏置,没有提及的是我们打算对隐藏神经元中的每⼀个使⽤相同的权重和偏置。下面具体说明隐藏神经元是如何共享权重与偏置。
    仍然以上图为例,我们有⼀个 28 × 28 的输⼊图像,5 × 5 的局部感受野,跨距为1,则对第 j, k 个隐藏神经元,输出为:

σ   (   b + l = 0 4 m = 0 4 w l , m a j + l , k + m   )
其中 σ 是神经元的激活函数,b 是偏置的共享值, w l , m 是⼀个共享权重的 5 × 5 数组, a x , y 表⽰位置为 x , y 的输⼊激活值。

② 特征映射
    我们有时候把从输⼊层到隐藏层的映射称为⼀个特征映射。我们把定义特征映射的权重称为共享权重。我们把以这种⽅式定义特征映射的偏置称为共享偏置。共享权重和偏置经常被称为⼀个卷积核或者滤波器。这一隐藏层也称为卷积层。
    ⽬前我描述的⽹络结构只能检测⼀种局部特征的类型。为了完成图像识别我们需要超过⼀个的特征映射。所以⼀个完整的卷积层由⼏个不同的特征映射组成:
这里写图片描述
在这个例⼦中,有 3 个特征映射。每个特征映射定义为⼀个 5 × 5 共享权重和单个共享偏置的集合。其结果是⽹络能够检测 3 种不同的特征,每个特征都在整个图像中可检测。然⽽,在实践中卷积⽹络可能使⽤很多的特征映射。

③ 优点
    共享权重和偏置的⼀个很⼤的优点是,它⼤⼤减少了参与的卷积⽹络的参数。对于每个特征映射我们需要 25 = 5 × 5 个共享权重,加上⼀个共享偏置。所以每个特征映射需要 26 个参数。如果我们有 20 个特征映射,那么总共有 20 × 26 = 520 个参数来定义卷积层。作为对⽐,假设我们有⼀个全连接的第⼀层,具有 784 = 28 × 28 个输⼊神经元,和⼀个相对适中的 30 个隐藏神经元,正如我们在本书之前的很多例⼦中使⽤的。总共有 784 × 30 个权重,加上额外的 30 个偏置,共有 23, 550 个参数。换句话说,这个全连接的层有多达 40 倍于卷基层的参数。

3. 混合层(pooling layers)

① 概念
    除了刚刚描述的卷积层,卷积神经⽹络也包含混合层(pooling layers)。混合层通常紧接着在卷积层之后使⽤,它要做的是简化从卷积层输出的信息。详细地说,⼀个混合层取得从卷积层输出的每⼀个特征映射并且从它们提取⼀个凝缩的特征映射。

② 最⼤值混合(max-pooling)
    最⼤值混合是⼀种常⻅的混合技术,⼀个混合单元简单地输出其特定输⼊区域的最⼤激活值。如下图所示,选取尺寸为 2 × 2 ,跨距为[2,2]:
这里写图片描述
我们将最⼤值混合分别应⽤于每⼀个特征映射。从卷积层有 24 × 24 个神经元输出,混合后我们得到 12 × 12 个神经元。如果有三个特征映射,那么组合在⼀起的卷积层和最⼤值混合层看起来像这样:
这里写图片描述
③ L2混合(L2 pooling)
    另⼀种常⻅的混合技术为L2混合。在这里我们取 2×2 区域中激活值的平⽅和的平⽅根,⽽不是最⼤激活值。



三、卷积神经网络的架构

1. 概念

    卷积神经网络的架构一般为 输入层 - 卷积层 - 混合层 - (全连接层) - 输出层。
    举例说明,我们有⼀个 28 × 28 的输⼊图像,输出层为10个神经元。我们选择 5 × 5 局部感受野,跨距为 1,20 个特征映射。我们也会插⼊⼀个最⼤值混合层,它⽤⼀个 2 × 2 的混合窗⼝来合并特征,图示如下:
这里写图片描述
为了简化,从混合层到输出层只用了一个箭头,⽽不是显⽰所有的连接。事实上,这里与经典神经网络一样,是将混合层的每⼀个神经元连接到每⼀个输出神经元,当然,你可以很容易想象到这些连接。

2. 激活函数、代价函数的选择

    在现代的图像分类⽹络中,对于激活函数,更常见是选择是 R e L U 函数(关于 R e L U 函数具体内容可参见人工神经网络),而最终层选择的是柔性最⼤值层。更常见的代价函数为对数似然函数(关于对数损失函数具体用法可参见线性模型)。

3. 反向传播算法(未完,待续)










以上全部内容参考书籍如下:
Michael Nielsen《Neural Networks and Deep Learning》

猜你喜欢

转载自blog.csdn.net/eeeee123456/article/details/82191953