学习笔记第二篇之CNN

        积神经网络(CNN)或称为 广泛应用于许多视觉图像和语音识别等任务。在 2012 ImageNet 挑战赛 krizhevsky 等人首次应用深度卷积网络后,深度卷积神经网络的架构设计已经吸引了许多研究者做出贡献。这也对深度学习架构的搭建产生了很重要的影响,如 TensorFlow、Caffe、Keras、MXNet 等。尽管深度学习的实现可以通过框架轻易地完成,但对于入门者和从业者来说,数学理论和概念是非常难理解的部分。本论文将尝试概述卷积网络的架构,并解释包含激活函数、损失函数、前向传播和反向传播的数学推导。在本文中,我们使用灰度图作为输入信息图像,ReLU 和 Sigmoid 激活函数构建卷积网络的非线性属性,交叉熵损失函数用于计算预测值与真实值之间的距离。该卷积网络架构包含一个卷积层、池化层和多个全连接层。

    

      一、架构

       1、 卷积层

     卷积层是一组平行的特征图(feature map),它通过在输入图像上滑动不同的卷积核并执行一定的运算而组成。此外,在每一个滑动的位置上,卷积核与输入图像之间会执行一个元素对应乘积并求和的运算以将感受野内的信息投影到特征图中的一个元素。这一滑动的过程可称为步幅 Z_s,步幅 Z_s 是控制输出特征图尺寸的一个因素。卷积核的尺寸要比输入图像小得多,且重叠或平行地作用于输入图像中,一张特征图中的所有元素都是通过一个卷积核计算得出的,也即一张特征图共享了相同的权重和偏置项。

     然而,使用较小尺寸的卷积核将导致不完美的覆盖,并限制住学习算法的能力。因此我们一般使用 0 填充图像的四周或 Z_p 过程来控制输入图像的大小。使用 0 填充图像的四周 [10] 也将控制特征图的尺寸。在算法的训练过程中,一组卷积核的维度一般是(k_1, k_2, c),这些卷积核将滑过固定尺寸的输入图像(H, W, C)。步长和 Padding 是控制卷积层维度的重要手段,因此产生了叠加在一起形成卷积层的特征图。卷积层(特征图)的尺寸可以通过以下公式 计算。

    

其中 H_1、W_1 和 D_1 分别为一张特征图的高度、宽度和深度,Z_p 为 Padding 、Z_s 为步幅大小。

2 激活函数

激活函数定义了给定一组输入后神经元的输出。我们将线性网络输入值的加权和传递至激活函数以用于非线性转换。典型的激活函数基于条件概率,它将返回 1 或 0 作为输出值,即 op {P(op = 1|ip) or P(op = 0|ip)}。当网络输入信息 ip 超过阈值,激活函数返回到值 1,并传递信息至下一层;如果网络输入 ip 值低于阈值,它返回到值 0,且不传递信息。基于相关信息和不相关信息的分离,激活函数决定是否应该激活神经元。网络输入值越高,激活越大。不同类型的激活函数应用各异,一些常用的激活函数如表 所示。

      

3 池化层

池化层是指下采样层,它把前层神经元的一个集群的输出与下层单个神经元相结合。池化运算在非线性激活之后执行,其中池化层有助于减少参数的数量并避免过拟合,它同样可作为一种平滑手段消除不想要的噪音。目前最常见的池化方法就是简单的最大池化,在一些情况下我们也使用平均池化和 L2 范数池化运算。

当采用卷积核的数量 D_n 和步幅大小 Z_s 用来执行池化运算,其维度可通过下式被计算:



4 全连接层

池化层之后,三维像素张量需要转换为单个向量。这些向量化和级联化的数据点随后会被馈送进用于分类的全连接层。全连接层的函数即特征的加权和再加上偏置项并馈送到激活函数的结果。卷积网络的架构如图 2 所示。这种局部连接类的架构在图像分类问题上 [11] [12] 超越传统的机器学习算法。

5 损失或成本函数

损失函数将一个或多个变量的事件映射到与某个成本相关的实数上。损失函数用于测量模型性能以及实际值 y_i 和预测值 y hat 之间的不一致性。模型性能随着损失函数值的降低而增加。

如果所有可能输出的输出向量是 y_i = {0, 1} 和带有一组输入变量 x = (xi , x2 . . . xt) 的事件 x,那么 x 到 y_i 的映射如下:



        其中 L(y_i hat , y_i) 是损失函数。很多类型的损失函数应用各不相同,下面给出了其中一些。

6 均方误差

均方误差或称平方损失函数多在线性回归模型中用于评估性能。如果 y_i hat 是 t 个训练样本的输出值,y_i 是对应的标签值,那么均方误差(MSE)为:


        

MSE 不好的地方在于,当它和 Sigmoid 激活函数一起出现时,可能会出现学习速度缓慢(收敛变慢)的情况。


这一部分描述的其它损失函数还有均方对数误差(Mean Squared Logarithmic Error)、L_2 损失函数、L_1 损失函数、平均绝对误差(Mean Absolute Error)、平均绝对百分比误差(Mean Absolute Percentage Error)等。

 

2.5.7 交叉熵

最常用的损失函数是交叉熵损失函数,如下所示。




为了最小化代价函数,



在 i 个训练样本的情况下,代价函数为:


猜你喜欢

转载自blog.csdn.net/zhangye_2017/article/details/78817308
今日推荐