注:看本文之前最好能构理解前馈圣经网络以及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 个神经元的输入定义为:
为了增强卷积层的表示能力,我们可以使用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 层的所有组特征映射。
连接表 上面公式中,第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(· · · ) 定义为:
子采样的作用还在于可以使得下一层的神经元对一些小的形态改变保持不变性,并拥有更大的感受野。
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为上采样函数。
4.2 子采样层梯度
我们假定子采样层为l 层,l +1 层为卷积层。因为子采样层是下采样操作,l +1 层的一个神经元的误差项 对应于卷积层(上一层)的相应特征映射的一个区域。
继续了解可以阅读博客:http://blog.csdn.net/zouxy09/article/details/9993371/
或者 http://HdhCmsTest36dsj测试数据/archives/24006