理解Deep Learning Tutorials中的卷积神经网络

1. 动机

  • 卷积神经网络(CNN)是一种生物启发的MLPs的变种,从Hubel和Wiesel早期对猫的视觉皮层的研究中,我们得知视觉皮层包含了复杂的神经元组织形式。每个神经元只对视觉区域中一个小的局部区域敏感,一个小的局部区域被称为对应神经元的感受野,它们平铺起来覆盖了整个视觉区域。这些神经元的作用如同对输入空间的局部滤波器,并很好的适用于发现自然图像中很强的空间局部相关关系。
  • 两种基本的神经元为S细胞(Simple Cell)和C细胞(Complex Cell)。S细胞在自身的感受野内最大限度地对图像中类似边缘模式的刺激做出响应,而C细胞具有更大的感受野,它可以对图像中模式的精确空间位置具有局部不变性。

2. 三大特点

1. 稀疏连接:

CNN通过加强神经网络中相邻层之间节点的局部连接模式来挖掘自然图像的空间局部关联信息。第 m 层节点的输入只是第m1层节点的一部分,这些节点具有空间相邻的视觉感受野。假设 m1 层为视网膜输入层,它上面的 m 层每个神经元节点都具有宽度为3的感受野,即分别与m1层的3个相邻的节点相连。 m+1 层与 m 层有着相似的连接属性,即m+1层的节点仍具有宽度为3的感受野,但是对于 m1 层感受野会更大(本图中是5)。每个神经元对其感受野外的变化没有响应,这种结构保证了训练好的每个滤波器只对空间局部输入模式产生最强烈的响应。多层神经元堆积形成了非线性滤波器,并逐层递增的具有了全局性(对更大输入区域的响应)。比如,第 m+1 层能够对宽度为5的非线性特征进行编码。

sparse connection

2. 权值共享:

每一个滤波器 fi 在整个视觉区域都是重复的,即在一个滤波器与上一层的一张特征图进行卷积时,该滤波器的参数都是相同的,因而对于卷积的结果来说就是共享了参数(权重和偏置)。在下图中,紫色方框中的神经元在同一张特征图中,颜色相同的权重是被共享的(相同的)。

share parameters

重复的滤波器能够在检测特征时可以不用考虑位置信息,并且共享权值可以极大的减少了待学习的自由参数的个数从而提高了学习效率。这种特点可以让CNN在视觉问题中具有更好的泛化能力。

权值共享可以这样解释:
1. 在图像数据中,一个值的附近的值经常是高度相关的,可以形成比较容易被探测到的有区分性的局部特征。
2. 图像的局部统计特征经常是位置不变的,在一个地方出现的某个特征,也可能出现在别的地方,所以不同位置的像素可以共享权值来探测一张图像中不同位置的相同特征。

3. 多特征图:

特征图是通过不断的对图像的子区域在一个线性滤波器上做卷积,增加一个偏置项,在此结果上再作用一个非线性函数得到的。为了更好地表示数据,隐层通常由多个特征图构成,隐层的权值 W 可以表示为一个4维张量(本层特征图组合个数m、上层特征图个数 n 、滤波器行数r、滤波器列数 c ),偏置b为一个1维向量(本层特征图个数 m )。这表示本层一个特征图的获得,需要使用n个滤波器对上层的 n 个特征图对应卷积得到n个卷积图,并对这 n 个卷积图进行组合(通常的组合方式就是直接把n个卷积图相加),然后再对组合结果图中所有元素加上一个相同的偏置。因此当本层有 m 个特征图时,就需要m×n个滤波器和 m 个偏置。

这里写图片描述

上图显示了两个相邻的卷积层。m1层有四个特征图( h0m1 h1m1 h2m1 h3m1 ), m 层有两个特征图(h0m h1m )。 h0m 中的任意一个像素 w1 的计算过程为:确定感受野为2 × 2,选取4个大小为2 × 2的滤波器 w00 w01 w02 w03 ,分别与 h0m1 h1m1 h2m1 h3m1 卷积,则

w1=w00h00m1+w01h01m1+w02h02m1+w03h03m1

利用共享权值的方法重复以上操作,就得到了特征图 h0m 。同样,再选取另外4个大小为2 × 2的滤波器 w10 w11 w12 w13 就可以得到特征图 h1m

注意:这里共享权值的意思是 h0m 来自于 h0m1 分量的连接权重都是 w00 ,来自于 h1m1 分量的连接权重都是 w01 ,等等。而稀疏连接的意思是 h0m 中的每个像素点都只与 h0m1 的2 × 2大小内的像素点连接,与 h1m1 也是2 × 2大小内的像素点连接,等等。

3. 两个操作

1. 卷积

Convolution_schematic
实际的一张特征图还要将卷积后的所有像素加上同一个偏置,再进行非线性变换才得到

2. 最大池化

最大池化(max-pooling)是一种非线性的下采样的方法。最大池化把输入图像分割成为不重叠的子区域,每一个子区域都只输出最大值。

Pooling_schematic
最大池化的原因有两个:

  • 降低了上层的计算复杂度。
  • 提供了变换的不变性,对于位移变化有着良好的鲁棒性

作用解释

卷积层的作用是探测上一层特征的局部连接
池化层的作用是把在语义上相似的特征合并起来

4. 例子LeNet

LeNet

模型的低层由卷积层和最大池化层交替排列组成,高层是一个全连接层,就是MLP神经网络(隐层+逻辑回归),全连接层的输入是它之前一层的所有特征图展开成一维构成的向量。因此在低层的四维张量在高层中展开成为了二维矩阵,从而能够顺利应用MLP。

注意:这里实现的LeNet与原始的不一样,即在两层相邻的多特征图的组合中,这里使用了全连接(把 n 个卷积图全部相加),而不用部分连接(在n个卷积图中按照一定的选取规则部分相加),这是由于现在计算机已经能够快速处理全连接结构,而且可以使用更好的方法来减少待学习的自由参数的数量。

5. 超参数选择技巧

1. 卷积层滤波器数量

计算一个卷积层滤波器的激活函数比计算传统的MLP的代价要高很多。假设第 l1 层包含了 Kl1 个特征图和 M×N 个像素(特征图大小乘以特征图数量),在 l 层有Kl m×n 的滤波器,所以计算特征图的代价为: (Mm)×(Nn)×m×n×Kl1 。而一般的MLP为 Kl1×Kl ,所以CNN中的特征图数目一般比MLP中的隐层节点数目要少很多,并取决于特征图的尺寸大小。

因为特征图的大小 M 随着层次深度的加大而变小,为了使得每一层的计算量保持一致,特征图的大小乘以特征图的数量在各层应该大致保持一个常量,所以特征图的数量N应该随着层次深度的加大而变大。同时为了保留输入的信息,需要总的激活数量 M×N (特征图大小乘以特征图数量)逐层非递减,但是在做监督学习时可能并非严格如此。特征图的数量控制着网络的容量,它应该取决于样本的数量和任务的复杂度。

2. 滤波器形状

形状应该视数据集图片的大小而定。为了得到良好的特征提取效果,应该在给定数据集的情况下寻找相同粒度的滤波器形状。

3. 最大池化形状

典型的取值是2 × 2或者不用最大池化,比较大的图像可以在低层用4 × 4的池化。但是要需要注意的是,这样的池化在降维的同时也有可能导致信息严重损失。


参考资料:

  1. deeplearning.net/tutorial/lenet
  2. 用Theano进行LeNet实验
  3. Deep learning with Theano 官方中文教程
  4. nature/Deep learning 原文
  5. 深度学习-LeCun、Bengio和Hinton的联合综述(上)
  6. 深度学习-LeCun、Bengio和Hinton的联合综述(下)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Deep Learning Tutorials ======================= Deep Learning is a new area of Machine Learning research, which has been introduced with the objective of moving Machine Learning closer to one of its original goals: Artificial Intelligence. Deep Learning is about learning multiple levels of representation and abstraction that help to make sense of data such as images, sound, and text. The tutorials presented here will introduce you to some of the most important deep learning algorithms and will also show you how to run them using Theano. Theano is a python library that makes writing deep learning models easy, and gives the option of training them on a GPU. The easiest way to follow the tutorials is to `browse them online <http://deeplearning.net/tutorial/>`_. `Main development <http://github.com/lisa-lab/DeepLearningTutorials>`_ of this project. .. image:: https://secure.travis-ci.org/lisa-lab/DeepLearningTutorials.png :target: http://travis-ci.org/lisa-lab/DeepLearningTutorials Project Layout -------------- Subdirectories: - code - Python files corresponding to each tutorial - data - data and scripts to download data that is used by the tutorials - doc - restructured text used by Sphinx to build the tutorial website - html - built automatically by doc/Makefile, contains tutorial website - issues_closed - issue tracking - issues_open - issue tracking - misc - administrative scripts Build instructions ------------------ To build the html version of the tutorials, install sphinx and run doc/Makefile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值