深度学习算法_详解_实例(自然场景文字定位)_图文 下载本文

在LeNet5架构中,共包含两个卷积层。图9中红色区域标注的地方就是LeNet5架构的第1个卷积层。第1个卷积层通过一个5*5大小的核对原始的32*32大小的图像进行卷积,生成特征图的大小是:

(32-5+1)?

(32-5+1)=28?28.(8)

图9第1个卷积层

第1个卷积层共包含6个特征图。后一层池化层中的6个特征图与前一层中的保持一一对应。

2.3.2.池化层

池化层主要是进行子采样过程。通过对图像实现一个无重叠的过滤操作,池化层完成了对特征图的一次维度降低过程。一个2*2的池化操作会使原始特征图的面积缩小到原来的1/4,从而改善学习训练的速度。池化操作通过最大池或者平均池操作对图像的局部位移以及变形进行了平滑,从而使模型对于平移产生了鲁棒性。

同卷积层一样,一个池化层的输出也是特征图。池化层中的特征图的数目与它上层所连接的卷积层中的特征图的数目保持一致,一一对应。在池化层的池化节点的输出上,往往会叠加一个非线性函数,例如ReLU函数,从而让网络的表征具有稀疏性。

在LeNet5架构中,共包含两个池化层。图10中红色区域标注的地方就是LeNet5架构的第1个池化层。第1个池化层通过1个2*2的池化核对前一层的28*28大小的特征图进行池化操作,生成一个14*14

大小的特征图。

14

图10第1个池化层

在第1个池化层后,紧跟着第2个卷积层,也就是图11中所示的C3层(蓝色区域)。C3层使用的核的大小是5*5,所以C3层中每个特征图的大小是:

(14-5+1)?

(14-5+1)=10?10.(9)

图11第2个卷积层

C3层中使用了16个不同的卷积核以生成了16个特征图。每一个卷积核对应前面S2层中特征图的组合。图12[17]

说明了这些组合的关系。

图12卷积对应关系[17]

横排是C3层中的特征图的标号,共16个,竖排是S2层中的标号,共6个。

2.3.3.全连接层

卷积神经网络中,全连接层往往处在最后的位置,仅在输出层之前。

15

全连接层中的每个节点与前一层的所有节点都有连接。每个连接对应一个权重(这里的权重与前面的权值都是参数的意思,不同之处在于全连接层中一般称之为权重,而卷积操作中一般称之为权值)。一个10节点的全连接层,前一层的节点数是20,两层之间的连接与权重的数量是:

10?20?200.(10)

全连接层与传统神经网络中的作用一致,用来模拟神经元的信号传递与抽象表征作用。全连接层的节点数目一般会呈现逐层递减的关系,从而让后面的层次需要用更少的维度去表达更多的信息,迫使网络对信息进行更高程度的抽象,形成更高层的表征。

全连接层中可以使用Dropout[18]技术来随机地让某些节点在训练的一个迭代阶段不工作,从而让其他节点不会对特定的节点产生依赖,降低各个节点之间的耦合关系,这种方式可以让模型不容易产生过拟合[8]。

图13的红色区域标注的地方就是全连接层。其中C5层既可以理解为卷积层,也可以理解为全连接层。F6层是纯粹的全连接层。OUTPUT层既是输出层,也与前一层保

持全连接关系。

图13全连接层

C5层中的每个节点使用一个5*5的核对前一层的特征图进行了卷积。由于前一层的特征图的大小就是5*5,因此正好可以看作全连接关系。F6层以及OUTPUT层与前一层都是全连接的关系。

可以看出C5,F6,OUTPUT三层节点数呈现逐渐减少的关系,从而让网络可以向

OUTPUT层是分类层,着不断抽象高级的特征前进。其中节点数目与类别数目保持一致,

都是10。

2.4.卷积神经网络的训练

卷积神经网络的训练方式与传统的神经网络一致,都是使用梯度下降和反向传播这两个主要算法。其中,梯度下降用来使网络的权重向着全局的残差(cost)最小前进。而反向传播算法用来计算每次权重应该减小的梯度。

16

下面说明这两个算法。

2.4.1.梯度下降

机器学习中模型预测结果与实际标签的差距的方程叫做代价函数(costfunction)。机器学习训练的目的是找到一系列的参数,使得对于全部训练数据与类别,代价函数的值最小。对于训练数据有10000的模型,训练目的是使得所有10000数据的预测与实际差距最小;对于有10种类别的分类任务,训练目的是让所有类别的预测与实际差距最小。

在机器学习界,求得使代价函数达到最小值的算法有许多,最常用的算法是梯度下降算法。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好使代价函数达到一个最低值的状态,如图14

图14梯度下降[15]

在图14中,是一个包含两个参数的代价函数。梯度下降算法首先随机给两个参数赋值,也就是在图中找到一个初始点,然后梯度下降算法计算在这个初始点时两个参数的梯度,也就是对应到x和y方向上的斜率,并且让初始点朝着梯度的反方向前进。前进的幅度是通过一个学习因子alpha给出的,假设当前点的梯度是t,那么每次前进的幅度s由下面的公式给出:

s?t?alpha.(11)

由于无法精准估计点前进到极值点附近所需要的前进次数,梯度下降算法都会让使用者设定一个迭代次数,由这个参数来决定前进的次数。

17