卷积神经网络详解

注:看本文之前最好能构理解前馈圣经网络以及BP(后向传播)算法,可以看之前发的相关文章或者看知乎、简书、博客园等相关博客。

卷积神经网络(Convolutional Neural Networks,CNN)是一种前馈神经网络。卷积神经网络是受生物学上感受野(Receptive Field)的机制而提出的。感受野主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质。比如在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元[Hubel and Wiesel, 1968]。

卷积神经网络有三个结构上的特性:局部连接,权重共享以及空间或时间上的次采样。这些特性使得卷积神经网络具有一定程度上的平移、缩放和扭曲不变性.

1、关于卷积的简要描述----具体的可以查看相关博文

卷积操作是分析数学中一种重要的运算。我们这里只考虑离散序列的情况。

1.1 一维场合

一维卷积经常用在信号处理中。给定一个输入信号序列xt, t = 1, · · · , n,和滤波器ft, t = 1, · · · ,m,一般情况下滤波器的长度m远小于信号序列长度n。

卷积的输出为:

当滤波器ft = 1/n 时,卷积相当于信号序列的移动平均。

卷积的结果按输出长度不同可以分为两类:一类是宽卷积,输出长 n+m−1,对于 不在[1, n] 范围之外的xt 用零补齐(zero-padding)。一类是窄卷积,输出长度n −m+ 1,不补零。在这里除了特别声明,我们一般说的卷积默认为窄卷积。

1.2 两维场合

一维卷积经常用在图像处理中。给定一个图像xij , 1 <= i <= M, 1 <= j <=N,和滤波器fij , 1 <= i <=m, 1 <= j <= n,一般m << M, n << N。

卷积的输出为:

在图像处理中,常用的均值滤波(mean filter)就是当前位置的像素值设为滤波器窗口中所有像素的平均值,也就是fuv = 1/mn.

2 卷积层:用卷积来代替全连接

图2.1 全连接层

图2.2 卷积层

在全连接前馈神经网络中,如果第l 层有nl 个神经元,第l − 1 层有n(l−1) 个神经元,连接边有n(l)×n(l−1) 个,也就是权重矩阵有n(l)×n(l−1) 个参数。当m和n都很大时,权重矩阵的参数非常多,训练的效率会非常低。

如果采用卷积来代替全连接,第l 层的每一个神经元都只和第l − 1 层的一个局部窗口内的神经元相连,构成一个局部连接网络。第l 层的第i 个神经元的输入定义为:

其中

为m维的滤波器,

,这里

的下标从序号1开市。我们这里的卷积公式和原始的公式中a 的下标有所不同。

上述公式也可以写为:

其中

表示卷积运算。

从上面公式可以看出,w(l) 对于所有的神经元都是相同的。这也是卷积层的另外一个特性是权值共享。这样,在卷积层里,我们只需要m + 1 个参数。另外,第l + 1 层的神经元个数不是任意选择的,而是满足

上面是一维的卷积层,下面我们来看下两维的情况。在图像处理中,图像是以二维矩阵的形式输入到神经网络中,因此我们需要二维卷积。假设

为R(wl−1×hl−1) 分别是第l 层和第l − 1 层的神经元活性。X(l) 的每一个元素为:

其中

为两位的滤波器,B 为偏置矩阵。第l-1成的神经元个数为

也可以谢伟:

为了增强卷积层的表示能力,我们可以使用K 个不同的滤波器来得到K 组输出。每一组输出都共享一个滤波器。如果我们把滤波器看成一个特征提取器,每一组输出都可以看成是输入图像经过一个特征抽取后得到的特征。因此,在卷积神经网络中每一组输出也叫作一组特征映射(Feature Map)。

不失一般性,我们假设第l − 1 层的特征映射组数为nl−1,每组特征映射的大小为 ml−1 = wl−1 × hl−1。第l − 1 层的总神经元数:nl−1 × ml−1。第l 层的特征映射组数为 nl。如果假设第l 层的每一组特征映射X(l,k) 的输入为第l − 1 层的所有组特征映射。

图2.3: 两维卷积层的映射关系

第l 层的第k 组特征映射X(l,k) 为:

其中

表示第l-1层第P组特征向量到第l 层的第k 组特征映射所需的滤波器。

第l层的每一层特征映射都需要n(l-1)个滤波器以及一个偏执b。假设每个滤波器的大小为u × v,那么共需要nl × nl−1 × (u × v) + nl。

这样,我们在第l+1 层就得到nl 组特征映射,每一组特征映射的大小为ml = wl−1−u+1×hl−1 −v +1,总的神经元个数为nl × ml。图2.3给出了s上面公式的可视化映射关系。

连接表上面公式中,第l − 1 层的所有特征映射都经过滤波器得到一个第l 层的一组特征映射X(l,k)。也就是说,第l 层的每一组特征映射都依赖于第l 层的所有特征映射,相当于不同层的特征映射之间是全连接的关系。实际上,这种全连接关系不是必须的。我们可以让第l 层的每一组特征映射都依赖于前一层的少数几组特征映射。这样,我们定义一个连接表T 来描述不同层的特征映射之间的连接关系。如果第l 层的第k 组特征映射依赖于前一层的第p 组特征映射,则T(p,k) = 1,否则为0。

图2.4 两维卷积层

这样,假如连接表T 的非零个数为K,每个滤波器的大小为u × v,那么共需要K ×(u × v) + nl 参数。卷积层的作用是提取一个局部区域的特征,每一个滤波器相当于一个特征提取器。图2.4给出了两维卷积层示例。

3 子采样层

卷积层虽然可以显著减少连接的个数,但是每一个特征映射的神经元个数并没有显著减少。这样,如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,在卷积神经网络一般会在卷积层之后再加上一个池化(Pooling)操作,也就是子采样(Subsampling),构成一个子采样层。子采样层可以来大大降低特征的维数,避免过拟合。

对于卷积层得到的一个特征映射X(l),我们可以将X(l) 划分为很多区域Rk, k = 1, · · · ,K,这些区域可以重叠,也可以不重叠。一个子采样函数down(· · · ) 定义为:

其中

分别为可训练的权重和偏置参数。

其中

为紫菜洋之后的特征映射。

子采样函数down(·) 一般是取区域内所有神经元的最大值(Maximum Pooling)或平均值(Average Pooling)。

图3.1 LeNet-5 网络结构。图片来源:[LeCun et al., 1998]

子采样的作用还在于可以使得下一层的神经元对一些小的形态改变保持不变性,并拥有更大的感受野。

4 梯度计算

在全连接前馈神经网络中,目标函数关于第l 层的神经元z(l) 的梯度为:

在卷积神经网络中,每一个卷积层后都接着一个子采样层,然后不断重复。因为我们需要分别来看下卷积层和子采样层的梯度。

4.1 卷集层的梯度

我们假定卷积层为l 层,子采样层为l + 1 层。因为子采样层是下采样操作,l + 1 层的一个神经元的误差项 对应于卷积层(上一层)的相应特征映射的一个区域。l 层的第k 个特征映射中的每个神经元都有一条边和l + 1 层的第k 个特征映射中的一个神经元相连。根据链式法则,第l 层的一个特征映射的误差项(l,k),只需要将l + 1 层对应特征映射的误差项d(l+1,k) 进行上采样操作(和第l 层的大小一样),再和l 层特征映射的激活值偏导数逐元素相乘,再乘上权重w(l+1,k)),就得到了(l,k)。第l 层的第k 个特征映射的误差项(l,k) 的具体推导过程如下:

其中Up为上采样函数。

在得到的第l层的第k个特征映射的误差项d(l,k), 目标函数关于第l 层的第k 个特征映蛇神经元滤波器

的梯度为:

上式也刚好是卷积形式,因此目标函数关于第l 层的第k 个特征映射神经元滤波器W(l,k,p) 的梯度可以写为:

目标函数关于第l 层的第k 个特征映射的偏置b(l) 的梯度可以写为:

4.2 子采样层梯度

我们假定子采样层为l 层,l +1 层为卷积层。因为子采样层是下采样操作,l +1 层的一个神经元的误差项 对应于卷积层(上一层)的相应特征映射的一个区域。

第l 层的第k 个特征映射的误差项(l,k) 的具体推导过程如下:

上式正好也是卷积形式,因此目标函数关于第l层的第k 个特征映射神经元滤波器

的梯度可以表述为:

目标函数关于第l层的第k 个特征映射的偏置b(l) 的梯度可以写为:

继续了解可以阅读博客:http://blog.csdn.net/zouxy09/article/details/9993371/

或者 http://www.36dsj.com/archives/24006

原文发布于微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文发表时间:2016-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏帮你学MatLab

MATLAB智能算法30个案例分析(3-2)

神经网路部分 function err=Bpfun(x,P,T,hiddennum,P_test,T_test) %% 训练&测试BP网络 %% 输入 % x...

3535
来自专栏我的python

自然语言处理之文本卷积

自然语言处理之文本卷积 1.文本的向量表示 2.文本的1维卷积 3.池化

37016
来自专栏计算机视觉战队

卷积神经网络的前向传播

---- CNN的这三个特点是其对输入数据在空间(主要针对图像数据)上和时间(主要针对时间序列数据,参考TDNN)上的扭曲有很强的鲁棒性。CNN一般采用卷积层...

3504
来自专栏机器学习、深度学习

多目标检测跟踪文献代码汇总

The Multiple Object Tracking Benchmark https://motchallenge.net/ 高速跟踪: 当检测精度较高...

5325
来自专栏机器学习算法与Python学习

线性分类器

线性分类 上一篇笔记介绍了图像分类问题。图像分类的任务,就是从已有的固定分类标签集合中选择一个并分配给一张图像。我们还介绍了k-Nearest Neighbor...

3819
来自专栏计算机视觉战队

每日一学 | 线性分类笔记(上)

图像分类的任务,就是从已有的固定分类标签集合中选择一个并分配给一张图像。我们还介绍了k-Nearest Neighbor (k-NN)分类器,该分类器的基本思想...

851
来自专栏SIGAI学习与实践平台

反向传播算法推导-卷积神经网络

在SIGAI之前的公众号文章“反向传播算法推导-全连接神经网络”中,我们推导了全连接神经网络的反向传播算法。其核心是定义误差项,以及确定误差项的递推公式,再根据...

1053
来自专栏计算机视觉战队

干货——线性分类(上)

图像分类的任务,就是从已有的固定分类标签集合中选择一个并分配给一张图像。我们还介绍了k-Nearest Neighbor (k-NN)分类器,该分类器的基本思想...

1312
来自专栏书山有路勤为径

Advanced CNN Architectures(R-CNN系列)

除了将该图像标记为猫外,还需要定位图中的猫,典型方法是在该猫周围画一个边界框,这个方框可以看做定义该方框的一系列坐标,(x,y) 可以是方框的中心w 和 h 分...

922
来自专栏深度学习与计算机视觉

Object Detection系列(三) Fast R-CNN

Object Detection系列(一) R-CNN Object Detection系列(二) SPP-Net Object Detectio...

4845

扫码关注云+社区

领取腾讯云代金券