DeepLearning CNN 笔记

记录一下组会讨论DeepLearning book的内容,轮到我做report,是书本第9章卷积网络。上次没有提前记录,有时间的话,再整理一下之前的内容。这一章写的很直白易懂,没有公式推导,但是需要看过一些卷积神经网络相关的论文,特别是9.4节之后的理解。这本书我觉得不适合想入门的小白看,更适合已经入门看过一些paper的同学看。以下是我第二次report的part 1部分。

上次组会,由于准备不充分,很多内容没有解释清楚,但是总的来说,这一章比较简单。接下来简单回顾一下上一周的内容。

9.1 卷积运算,9.2 动机

我主要介绍了卷积的概念、运算、意义以及卷积与矩阵乘法的关系,卷积运算可以看做是矩阵的乘法,一维情况下可以转换成托普利兹矩阵(Toeplitz matrix),二维情况下可以转换成双重循环矩阵(doubly block circulant matrix)。卷积有三个重要的思想,第一个是稀疏交互(sparse interactions),通过使卷积核的大小远远小于输入的大小来达到,这样使得卷积运算比全连接运算需要更少的参数,不仅减少了模型的存储需求,还提高了统计效率。第二个思想是参数共享(parameter sharing),指卷积运算在一个模型的多个函数中使用相同的参数,这个也非常容易理解,使用全连接时权重矩阵的每一个元素只使用一次,而对于卷积来说,用于一个输入的权重也会被绑定在其他的权重上。参数共享的特殊形式使得神经网络层具有平移等变(equivariant representations)的性质,这也是第三个重要的思想。如果我们移动输入中的对象,它的表示也会在输出中移动同样的量。我们假设,如果在图像某些地方探测到一个水平的边界是很重要的,那么在其他一些地方也是同样有用的。但是参数共享也有可能没有意义,特别是当卷积神经网络的输入图像是一些明确的中心结构时,我们希望能在图片的不同位置学习到完全不同的特征。举个例子,处理居中的人脸图像时,我们可能想要提取不同位置上的不同特征,比如眼睛特征或者头发特征。一般来说在这个例子中,通常会放松参数共享的限制,不使用参数共享的卷积,而使用局部连接层(也称非共享卷积)。

9.3 池化

除了介绍卷积相关内容外,还简单介绍了池化的概念以及特性,卷积神经网络中的池化层(pooling layer)或者说汇聚层,主要目的是为了降维,这样做可以减少参数个数和计算量,并且一定程度上防止过拟合,提高模型泛化能力。目前最常用的池化层就是最大池化,给出相邻矩形区域内的最大值,除此之外,还可以使用平均池化、L2范式池化、随机池化等,但现在已经很少使用平均池化了,因为实践证明,最大池化的效果比平均池化要好。也有很多人不喜欢池化操作,认为可以不使用它,因此有人提出用步长卷积代替池化操作,构建一个只含卷积层操作的网络。此外,池化具有局部平移不变性,这个性质非常有用,特别是当我们关心某个特征是否出现而不关心它出现的具体位置时

9.4 卷积与池化作为一种无限强的先验

对于上次没有解释明白的9.4节,在此特别说明一下,为什么说卷积与池化是无限强的先验。先验概率分布刻画了我们在看到数据之前认为什么样的模型是合理的信念。它指的是,对于卷积来说,这个无限强的先验是说一个隐藏单元的权重必须和它相邻的权重相同,但可以在空间上移动,其实就是指卷积的参数共享和平移不变性。对于池化来说,也可以看作是增加了一个无限强的先验:这一层学得的函数必须具有对少量平移的不变性。当这个假设成立时,池化可以极大地提高网络的统计效率。但是这样的先验可能导致过拟合,因为卷积和池化只有当先验的假设合理且正确时才有用。如果一项任务依赖于精确的空间信息(比如想要寻找一个由两条边相交的拐角时,就需要很好的保存边的精确位置来判定它们是否相交),那么所有的特征上使用池化将会增大训练误差。因此有一些卷积神经网络就设计成一些通道上使用池化,而在另一些通道上不使用。当一项任务涉及要对输入中相隔较远信息进行合并时,那么卷积所利用的先验就不正确了(比如处理人脸上不同位置的不同特征)。

9.5 基本卷积函数的变体

9.5节,基本卷积函数的变体。其实是在讲三个超参数:深度(deepth)、步长(stride)和零填充(zero-padding)。

  1. 首先,这里的深度不是网络层的层数,而是指每一层数据的通道数或者说滤波器的数量,比如最开始的图像输入有RGB三个颜色通道,那么深度就为3,第一个滤波器的数量也是3。
  2. 其次,在滑动滤波器的时候,必须指定步长。标准卷积步长为1,滤波器每次就移动一个像素。当步长为2时(或者更多,但实际中很少使用),滤波器滑动时每次移动2个像素。这个操作会让输出数据体在空间上变小。所以有人提出用步幅卷积代替池化操作。
  3. 为了控制输出数据体的空间尺寸,所以需要在输入边缘处进行零填充。根据输出的大小,零填充有三种形式:第一个是有效卷积,即无论怎样都不使用零填充,这样必然会使输出尺寸变小;第二个是相同卷积,进行足够的零填充来保持输出和输入具有相同的大小,这也是最常用的;第三个是全卷积,使用足够的零填使得输出尺寸变大。

至此,总结一下卷积层的性质(其中两个公式要牢记):

  • 输入数据体的尺寸为 W1H1D1
  • 四个超参数:
    • 滤波器的数量K
    • 滤波器的空间尺寸F*F
    • 步长S
    • 零填充数量P
  • 输出数据体的尺寸为 W2H2D2 ,其中
    • W2=(W1F+2P)/S+1
    • H2=(H1F+2P)/S+1 (宽度与高度计算方法相同)
    • D2=K
    • P=(FS)/2 (保证输入和输出尺寸相同)
  • 由于参数共享,每个滤波器包含 FFD1 个权重,卷积层一共有 FFD1K 个权重和 K 个偏置。
  • 在输出中,第d个深度切片(空间尺寸是 W2H2 ),用第 d 个滤波器和输入数据进行有效卷积运算的结果(使用步长S),最后再加上第d个偏差。

在一些情况下,我们并不是真的想要使用卷积,而是想用一些局部连接的网络层,比如上面所说到的人脸识别。这时我们就可以使用局部连接层,也称非共享卷积(unshared convolution),因为它和具有一个小核(1x1)的离散卷积运算很像,但不横跨位置来共享参数。书中还提到了对卷积层和局部连接层进行折中的操作,称为平铺卷积(tiled convolution)。这里并不是对每一个空间位置的权重集合进行学习,我们学习一组核使得当我们在空间移动时它们可以循环利用。在图9.16中,局部连接没有共享参数;标准卷积只有1个卷积核;平铺卷积有t个不同的卷积核(图中为t=2),每当我们在输出中右移一个像素后,我们使用一个不同的核。这意味着,输出中的相邻单元具有不同的参数。当t等于输出的宽度时,就是局部连接层。当t=1时,就是标准卷积。

我们一直在谈论的参数都是指权重,但是一般来说,在卷积层从输入到输出的变换中不仅仅只用线性运算。我们一般也会在进行非线性运算前,对每个输出加入一些偏置项(bias)。这样就产生了如何在偏置项中共享参数的问题:

  • 对于局部连接层,很自然地对每个单元都给定它特有的偏置。
  • 对于平铺卷积,也很自然地用与核一样的平铺模式来共享参数。
  • 对于卷积层来说,通常的做法是在输出的每一个通道上都设置一个偏置,这个偏置在每个卷积映射的所有位置上共享。

如果输入是已知的固定大小,也可以在输出映射的每个位置学习一个单独的偏置。分离这些偏置可能会稍稍降低模型的统计效率,但同时也允许模型来校正图像中不同位置的统计差异。例如,当使用隐含的零填充时,图像边缘的探测单元接收到较少的输入,因此需要较大的偏置。

以上,就是上一周组会的内容,这是第九章的干货内容,我提取了重点,简单回顾了一遍。

接下来继续书本内容。

9.6 结构化输出

9.6节,结构化输出。卷积神经网络不仅仅可以用于图像分类,目标识别,还可以用于图像分割。对于图像分割问题,就需要允许模型标记图像中的每个像素,并绘制沿着单个对象轮廓的精确掩膜。但在卷积神经网络中经常会出现一个问题,就是输出平面可能比输入平面要小,主要原因是使用了大步幅的池化层。因此为了产生与输入大小相似的输出映射,我们可以避免把池化放在一起,或是单纯地产生一张低分辨率的标签网格,或是使用具有单位步幅的池化操作。对图像逐个像素标记的一种策略是先产生图像标签的原始猜测,然后使用相邻像素之间的交互来修正该原始猜测。对应于卷积神经网络,修正就是指在最后几层共享权重,如图9.17,这就形成了循环卷积神经网络。一旦对每个像素都进行了预测,就可以使用各种方法来进一步处理这些预测,以便获得图像在区域上的分割。

9.7 数据类型

9.7节,数据类型。这一节主要介绍了卷积网络的各种应用场景。卷积网络使用的数据通常包含多个通道,每个通道是时间上或空间中某一点的不同观测量。表9.1是用于卷积网络的不同数据格式的例子。单通道中的音频波形,已经使用傅里叶变换预处理过的音频数据,对应于将卷积网络运用于语言识别领域。三维的体积数据一般来源于医学成像技术,如CT扫描。多通道中你的骨架动画数据,也可以衍生到人体姿态估计。彩色图像数据是我们最了解的,一般的图像分类,目标识别都属于这一类。彩色视频数据对应于卷积网络用于视频的例子。

到目前为止,我们讨论的都是训练和测试数据中的每个样例都有相同的空间维度的情况。但卷积网络同样可以用于处理具有可变的空间尺度的大小。这些类型的输入不能用传统的基于矩阵乘法的神经网络来表示,但卷积核可以依据输入的大小简单地被使用不同次,并且卷积运算的输出也相应地放缩。前面说过,卷积可以被视为矩阵乘法,相同的卷积核为每种大小的输入引入了一个不同大小的双重分块循环矩阵。但要注意的是,这里使用卷积处理可变尺寸的输入,仅对输入是因为包含对同种事物的不同量的观察而导致的尺寸变化才有意义。比如特征包括成绩等级和标准化测试分数,但不是所有人有标准化测试分数,那么这种情况下使用相同的权重来提取特征是没有意义的。

9.8 高效的卷积算法

9.8节,高效的卷积算法。除了使用GPU加速,也可以通过选择适当的卷积算法来加速卷积。当一个d维的核可以表示成d个向量的外积时,该核被称为可分离的,这时普通的卷积是低效的。它等价于组合d个一维卷积,每个卷积使用这些向量中的一个。组合方法显著快于使用它们的外积来执行一个d维的卷积,并且核也只要更少的参数来表示成向量。但并不是所有卷积都可以表示成组合形式。设计更快的执行卷积或近似卷积,而不损害模型准确性的方法,是一个活跃的研究领域。

9.9 随机或无监督的特征

9.9节,通常,卷积网络训练中最昂贵的部分是学习特征,减少卷积网络训练成本的一种方式是使用那些不是由监督方式训练得到的特征。这里有三种方法:

  1. 简单地随机初始化卷积核。随机过滤器经常在卷积网络中表现得出乎意料得好,因此这也是应用最多的方法。
  2. 手动设计卷积核。例如设置每个核在一个特定的方向或尺度开检测边缘
  3. 最后,使用无监督的标准来学习卷积核,例如将k-means聚类算法运用于小图像块,然后使得每个学得的中心作为卷积核。更多关于无监督学习方法见书本第3部分。

有一个中间方法是学习特征,但是使用那种不需要在每个梯度计算步骤中都进行完整的前向和反向传播的方法。与多层感知机一样,使用贪心逐层预训练,单独训练第一层,然后一次性地从第一层提取所有特征,之后用那些特征单独训练第二层,以此类推。贪心逐层预训练的经典模型是卷积深度信念网络(Convolutional deep belief network),它是一种生成模型,通过训练其神经元间的权重,可以让整个神经网络按照最大概率来生成训练数据。我们不仅可以使用它识别特征、分类数据,还可以用它来生成数据。由于这一块涉及到概率图模型受限玻尔兹曼机,我还没有深入了解,所以不展开介绍,书中第3部分有扩展。这意味着使用无监督学习来训练卷积网络并且在训练的过程中完全不使用卷积是可能的,这种方法在2007-2013年流行,当时标记的数据集很小,而且能力有限。如今,大多数卷积网络还是以纯粹监督的方式训练,在每次训练迭代中使用通过整个网络的完整的前向和反向传播。

9.10 卷积网络的神经科学基础

卷积网络是受神经科学启发,应用于机器学习领域的一个成功案例。卷积网络有其神经科学的基础在。上世纪60年代, 神经生理学家David Hubel和Torsten Wiesel于1959年提出猫的初级视觉皮层中单个神经元的“感受野”(Receptive Field)概念,紧接着于1962年发现猫的视觉中枢中存在感受野、双目视觉和其他功能结构,标志着神经网络结构首次在大脑视觉系统中被发现。从深度学习的角度,我们关注大脑功能视图V1,也称为初级视觉皮层。卷积网络层被设计为描述V1的三个性质:

  1. V1可以进行空间映射。它实际上具有二维结构来反映视网膜中的图像结构。在卷积网络中,就是通过二维映射得到feature map来描述该特性。
  2. V1包含许多简单细胞。卷积即是模拟初级视觉皮层的简单细胞,其活动可以概括为在一个小的空间位置感受野内的图像的线性函数。
  3. V1包含许多复杂细胞。池化启发自初级视觉皮层的复杂细胞,其对特征位置的微小偏移具有不变性。

但是,卷积网络和哺乳动物的视觉系统之间还有许多区别,目前有许多基本问题仍未得到回答。主要有以下几个问题:

  1. 类似从神经科学中启发出来的还有注意力机制,目前在NLP领域应用比较成功,但在视觉领域还没有成为主导方法。
  2. 人类视觉系统集成了许多其他感觉,但卷积网络是纯粹视觉的。
  3. 人类视觉系统不仅仅用于识别对象,还能够理解场景,但卷积网络目前在这些问题上海处于起步阶段。
  4. 大脑区域会受到来自较高级别的反馈的严重影响,在卷积网络中被广泛探索,但还没有被证明提供了引人注目的改进。
  5. 与卷积网络的最后一层在特征上最接近的类比是成为颞下皮质(IT)的脑区,但是仍然不清楚中间计算的相似程度。

9.11 卷积网络与深度学习的历史

Hinton在1988年提出了基于反向传播的时延神经网络(time delay neural network,TDNN),主要用于一维的时间序列分析,此后LeCun在1988年左右将反向传播应用到二维图像的识别,成功发明了LeNet并开启了现代卷积网络的大门。

卷积网络是第一批能使用反向传播有效训练的深度网络之一。一般的反向传播网络被认为是失败的,但是卷积网络加上反向传播奇迹般的发挥了很好的效果。本书作者认为,可能是卷积网络的计算效率更高,能够快速运行实验并进行调参的原因。

总的来说,卷积网络是神经网络的一种特化,这种特化在具有空间/序列等网格结构拓扑上表现良好,实际上,卷积网络的杀手级应用还是在二维图像方面。一维的序列处理,比如时间序列、文本序列等,主要被另一种神经网络的特化——循环神经网络所占领。

参考资料

Deep Learning

CS231n Convolutional Neural Networks for Visual Recognition

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值