神经网络与深度学习笔记——第6章 深度学习

来源:互联网 发布:淘宝刀剑哪家好 编辑:程序博客网 时间:2024/06/05 19:24

第6章 深度学习

介绍卷积网络

全连接层的网络不考虑图像的空间结构。
卷积神经网络采用了三种基本概念:局部感受野(local receptive fields),共享权重(shared weights),混合(pooling)

局部感受野:是输入像素上的一个小窗口,每个连接学习一个权重。而隐藏神经元同时也学习一个总的偏置。

共享权重和偏置:每个隐藏神经元具有一个偏置和连接到它的局部感受野的5 × 5 权重。我们打算对 24 × 24 隐藏神经元中的每一个使用相同的权重和偏置。
这意味着第一个隐藏层的所有神经元检测完全相同的特征,只是在输入图像的不同位置。
在图像中应用相同的特征检测器是非常有用的。用稍微更抽象的术语,卷积网络能很好地适应图像的平移不变性:例如稍稍移动一幅猫的图像,它仍然是一幅猫的图像。
因为这个原因,我们有时候把从输入层到隐藏层的映射称为一个特征映射。我们把定义特征映射的权重称为共享权重。我们把以这种方式定义特征映射的偏置称为共享偏置。共享权重和偏置经常被称为一个卷积核或者滤波器。
为了完成图像识别我们需要超过一个的特征映射。所以一个完整的卷积层由几个不同的特征映射组成。
共享权重和偏置的一个很大的优点是,它大大减少了参与的卷积网络的参数。对于每个特征映射我们需要 25 = 5 × 5 个共享权重,加上一个共享偏置。所以每个特征映射需要 26 个参数。如果我们有 20 个特征映射,那么总共有 20 × 26 = 520 个参数来定义卷积层。作为对比,假设我们有一个全连接的第一层,具有 784 = 28 × 28 个输入神经元,和一个相对适中的 30 个隐藏神经元,正如我们在本书之前的很多例子中使用的。总共有 784 × 30 个权重,加上额外的 30 个偏置,共有 23, 550 个参数。换句话说,这个全连接的层有多达 40 倍于卷基层的参数。直观地,使用卷积层的平移不变性似乎很可能减少全连接模型中达到同样性能的参数数量。而更少的参数将导致更快的卷积模型的训练,并最终将有助于我们使用卷积层建立深度网络。

混合层:通常紧接着在卷积层之后使用。它要做的是简化从卷积层输出的信息。详细地说,一个混合层取得从卷积层输出的每一个特征映射并且从它们准备一个凝缩的特征映射。
一个常⻅的混合的程序被称为最大值混合(max-pooling)。在最大值混合中,一个混合单元简单地输出其 2 × 2 输入区域的最大激活值。
我们可以把最大值混合看作一种网络询问是否有一个给定的特征在一个图像区域中的哪个地方被发现的方式。然后它扔掉确切的位置信息。直观上,一旦一个特征被发现,它的确切位置并不如它相对于其它特征的大概位置重要。一个很大的好处是,这样可以有很多被更少地混合的特征,所以这有助于减少在以后的层所需的参数的数目。
最大值混合并不是用于混合的仅有的技术。另一个常用的方法是 L2 混合(L2 pooling)。这里我们取 2 × 2 区域中激活值的平方和的平方根,而不是最大激活值。虽然细节不同,但其直观上和最大值混合是相似的:L2 混合是一种凝缩从卷积层输出信息的方式。

网络中最后连接的层是一个全连接层。更确切地说,这一层将最大值混合层的每一个神经元连接到每一个输出神经元。

卷积神经网络在实际中的应用

使用 Theano 使得实现针对卷积神经网络的反向传播很容易,因为它自动计算涉及到的映射。
Theano 也比我们前面代码更快(那些代码是为了容易理解,不是为了运行速度),这使它可实际用于训练更复杂的网络。
特别地,Theano 的一个非常好的特性是它能够运行于 CPU 或者GPU 上。运行于 GPU 上可以提供显著的增速。而且,有助于实际用于更复杂的网络。

版本1:仅使用一个隐藏层,包含 100 个隐藏神经元。
版本2:使用 5 × 5 局部感受野,跨距为 1,20 个特征映射。我们也会插入一个最大值混合层,它用一个 2 × 2 的混合窗口来合并特征。此外,有一个额外的全连接层(100个隐藏神经元,10个输出神经元)。
版本3:在已有的卷积–混合层和全连接隐藏层之间插入第二个卷积–混合层(再次使用一个40个特征, 5 × 5 局部感受野,混合 2 × 2 的区域)。
版本4:使用修正线性单元而不是 S 型激活函数。
版本5:扩展训练数据。扩展训练数据的一个简单的方法是将每个训练图像由一个像素来代替。无论是上一个像素,一个像素,左边一个像素,或右边一个像素。
版本6:插入一个额外的全连接层(这样我们就有两个 100 个隐
藏神经元的全连接层)。
版本7:应用弃权到最终的全连接层(全连接隐藏层有 1, 000 个神经元,不是之前使用的 100 个)。
版本8:使用一个组合的网络。尽管网络都会有相似的准确率,他们很可能因为不同的随机初始化产生不同的错误。在这 5 个网络中进行一次投票来取得一个优于单个网络的分类,似乎是合理的。
版本9:一篇Dan Claudiu Cireșan,Ueli Meier,Luca Maria Gambardella和 Jürgen Schmidhuber所著的 2010 年论文《Deep, Big, Simple Neural Nets Excel on Handwritten Digit Recognition》,网络是一个许多层的神经网络,仅使用全连接层(没有卷积层)。他们最成功的网络有分别包含有 2,500,2,000,1,500,1,000 和 500 个神经元的隐藏层。他们使用和 Simard等人类似的想法来扩展他们的训练数据。除了这些,他们没有使用其它的技巧,包括没有卷积层。这是一个清晰的,简单的网络,这样的网络如果有足够的耐心,可以在 80 年代将其训练(如果 MNIST 数据集已经有了),假设那时有足够的计算能力。他们达到了一个 99.65% 的分类准确率,或多或少和我们一样。其关键是使用一个非常大,非常深的网络,并且使用一块 GPU 来加速训练。这让他们训练了很多个迭代期。他们也利用了他们的⻓训练时间来逐渐地将学习速率从0.001减小到0.000001 。

规范化当前的网络确实可以提高准确率,但是得到的只是很小。
柔性最大值和对数似然代价在现代的图像分类网络中很常⻅。

tanh 网络训练得比sigma网络稍微快些,但是最终的准确率非常相似。

修正线性激活函数好于 S 型或者 tanh 函数。原因是:一些人经常基于直觉或者启发式的理由试着用修正线性单元,他们在分类基准数据集时取得了很好的结果,并且其实践传播开了。

为什么只对全连接层应用弃权?
在卷积层上应用弃权是没必要的,因为卷积层有相当大的先天对于过度拟合的抵抗。共享权重意味着卷积滤波器被强制从整个图像中学习。这使他们不太可能去选择在训练数据中的局部特质。于是就很少有必要来应用其它规范化,例如弃权。

如何解决梯度不稳定问题?
答案是我们没有回避这些结果。相反,我们已经做了一些事情,帮助我们继续进行。
(1)使用卷积层极大地减少了这些层中的参数的数目,使学习的问题更容易;
(2)使用更多强有力的规范化技术(尤其是弃权和卷积层)来减少过度拟合,否则它在更复杂的网络中是更多的问题;
(3)使用修正线性单元而不是 S 型神经元,来加速训练 —— 依据经验通常是3–5 倍;
(4)使用 GPU 并愿意⻓时间的训练。
当然,我们也已经使用了其它主意:
利用充分大的数据集(为了避免过度拟合);
使用正确的代价函数(为了避免学习减速);
使用好的权重初始化(也是为了避免因为神经元饱和引起的学习减速);以算法形式扩展训练数据。

网络越深越好?
不赞同这样的态度,部分因为它使得深度学习的定义像是时刻就有结果的事。深度学习中实际的突破是认识到它超过浅的 1、2 层的网络是切实可行的,但除这之外,层的数目并不是主要的基本利益关系。更确切地说,使用更深层的网络是一种用来帮助实现其他目标工具 —— 例如更好的分类精确率。

卷积网络的代码

图像识别领域中的近期进展

2012 LRMD 论文
源自斯坦福和谷歌的研究小组。
《Building high-level features using large scale unsupervised learning》
作者为Quoc Le, Marc’Aurelio Ranzato, Rajat Monga,Matthieu Devin,Kai Chen,Greg Corrado,Jeff Dean,Andrew Ng(2012)。
他们使用的 2011 年 ImageNet 数据包含 16,000,000 幅全彩色图像,有 20,000 个种类。
LRMD 的网络获得了一个不错的15.8% 的准确率来正确分类 ImageNet 图像。那听上去可能不算令人印象深刻,但是和以前的最好成绩 9.3% 准确率相比已经是巨大的进步了。
2012 KSH论文
《ImageNet classification with deep convolutional neural networks》
作者为 Alex Krizhevsky,Ilya Sutskever,和Geoffrey E. Hinton (2012)。
KSH 通过缩放每幅图像使得⻓和宽中短的⻓度为 256 来处理。然后他们从缩放后的图像中裁剪出一个 256 × 256 的区域。最后,KSH 从 256 × 256 的图像中随机提取出 224 × 224的子图像(和水平反射)。他们把这个随机的裁剪用作扩展训练数据的方式,这样减少过度拟合。
2014 ILSVRC 竞赛
使用了包含 22 层神经元的深度卷积网络。他们称此为 GoogLeNet,作为向 LeNet-5 的致敬。GoogLeNet 达到了 93.33% 的前 5 准确率,远超2013 年的获胜者(Clarifai,88.3%)和 2012 年的获胜者(KSH,84.7%)。
其它
一个鼓舞人心的应用上的结果就是 Google 的一个团队做出来的,他们应用深度卷积网络在识别 Google 的街景图像库中街景数字上。在他们的论文中,对接近 100, 000, 000 街景数字的自动检测和自动转述已经能打到与人类不相上下的程度。

其他的深度学习模型

递归神经网络(RNN)
假如我们允许网络中的元素能够以动态方式不断地激活。例如,隐藏神经元的行为不是完全由前一层的隐藏神经元,而是同样受制于更早的层上的神经元的激活值。这样肯定会带来跟前馈神经网络不同的效果。也可能隐藏和输出层的神经元的激活值不会单单由当前的网络输入决定,而且包含了前面的输入的影响。
拥有这类时间相关行为特性的神经网络就是递归神经网络,常写作RNN。
维基百科上介绍了超过 13 种不同的模型。
RNN 在处理时序数据和过程上效果特别不错。这样的数据和过程正是语音识别和自然语言处理中常⻅的研究对象。
⻓短期记忆单元(Long short-term memory units, LSTMs)
影响 RNN 的一个挑战是前期的模型会很难训练,甚至比前馈神经网络更难。原因就是我们在上一章提到的不稳定梯度的问题。回想一下,这个问题的通常表现就是在反向传播的时候梯度越变越小。这就使得前期的层学习非常缓慢。在 RNN 中这个问题更加糟糕,因为梯度不仅仅通过层反向传播,还会根据时间进行反向传播。如果网络运行了一段很⻓的时间,就会使得梯度特别不稳定,学不到东西。幸运的是,可以引入一个称为⻓短期记忆(long short-term memory)的单元进入 RNN 中。LSTM 最早是由Hochreiter 和 Schmidhuber 在 1997 年提出,就是为了解决这个不稳定梯度的问题。
深度信念网络,生成式模型和 Boltzmann 机
一个就是 DBN 是一种生成式模型。在前馈网络中,我们指定了输入的激活函数,然后这些激活函数便决定了网络中后面的激活值。而像 DBN 这样的生成式模型可以类似这样使用,但是更加有用的可能就是指定某些特征神经元的值,然后进行“反向运行”,产生输入激活的值。具体讲,DBN 在手写数字图像上的训练同样可以用来生成和手写数字很像的图像。换句话说,DBN 可以学习写字的能力。所以,生成式模型更像人类的大脑:不仅可以读数字,还能够写出数字。
另一个是 DBN 可以进行无监督和半监督的学习。例如,在使用图像数据学习时,DBN 可以学会有用的特征来理解其他的图像,即使训练图像是无标记的。这种进行非监督学习的能力对于根本性的科学理由和实用价值(如果完成的足够好的话)来说都是极其有趣的。
为何 DBN 在已经获得了这些引人注目的特性后,仍然逐渐消失在深度学习的浪潮中呢?部分原因在于,前馈网络和 RNN 已经获得了很多很好的结果。例如在图像和语音识别的标准测试任务上的突破。所以大家把注意力转到这些模型上并不奇怪,这其实也是很合理的。然而,这里隐藏着一个推论。研究领域里通常是赢者通吃的规则,所以,几乎所有的注意力集中在最流行的领域中。这会给那些进行目前还不很流行方向上的研究人员很大的压力,虽然他们的研究⻓期的价值非常重要。我个人的观点是 DBN 和其他的生成式模型应该获得更多的注意。并且我对今后如果 DBN 或者相关的模型超过目前流行的模型也毫不诧异。
其他
在神经网络和深度学习中还有其他哪些正在进行的研究?其实还有很多大量的其他美妙的工作。热⻔的领域包含使用神经网络来做自然语言处理 natural language processing(see also this informative review paper)、机器翻译 machine translation和更加惊喜的应用如音乐信息学 music informatics。当然其他还有不少。如使用强化学习的技术来学习玩电子游戏 play video games well。其想法是使用卷积网络来简化游戏界面的像素数据,将数据转化成一组特征的简化集合,最终这些信息被用来确定采用什么样的操作:“上”、“下”、“开火”等。特别有趣的是单一的网络学会 7 款中不同的经典游戏,其中3 款网络的表现已经超过了人类专家。现在,这听起来是噱头,当然他们的标题也挺抓眼球的——“Playing Atari with reinforcement learning”。但是透过表象,想想系统以原始像素数据作为输入,它甚至不知道游戏规则!从数据中学会在几种非常不同且相当敌对的场景中做出高质量的决策,这些场景每个都有自己复杂的规则集合。所以这的解决是非常干净利落的。

神经网络的未来

意图驱动的用戶接口
搜索引擎使用机器学习技术对大量的用戶输入数据进行分析,研究查询本身的含义,并通过这些发现来进行合理的动作以提供最优的搜索结果。
而意图驱动接口这样的概念也不仅仅用在搜索上。在接下来的数十年,数以千计的公司会将产品建立在机器学习来设计满足更高的准确率的用戶接口上,准确地把握用戶的意图。现在我们也看到了一些早期的例子:如苹果的 Siri,Wolfram Alpha,IBM 的 Watson,可以对照片和视频进行注解的系统,还有更多。
机器学习,数据科学和创新的循环
数据科学中,机器学习可以找到藏在数据中的“确知的未知”。
⻓期看来,很可能机器学习中最大的突破并不会任何一种单一的概念突破。更可能的情况是,最大的突破是,机器学习研究会获得丰厚的成果,从应用到数据科学及其他领域。如果公司在机器学习研究中投入 1 美元,则有 1 美元加 10 美分的回报,那么机器学习研究会有很充足的资金保证。换言之,机器学习是驱动几个主要的新市场和技术成⻓的领域出现的引擎。结果就是出现拥有精通业务的的大团队,能够获取足够的资源。这样就能够将机器学习推向更新的高度,创造出更多市场和机会,一种高级创新的循坏。
神经网络和深度学习的⻆色
可能更好的方式是看看机器学习的未来而不是单单看神经网络。
还有个原因是我们对神经网络的理解还是太少了。
神经网络和深度学习将会主导人工智能?

阅读全文
0 0