Neural Network and Deep Learning-学习笔记3-深度学习

在前⾯的章节中,我们使⽤了全连接的邻接关系的⽹络来完成这个⼯作,即⽹络中的神经元与相邻的层上的每个神经元均连接:

在之前的工作中,这种连接方式的网络在 MNIST数据集上已经得到了超过 98% 的分类准确率。但是仔细推敲,使⽤全连接层的⽹络来分类图像是很奇怪 的。原因是这样的⼀个⽹络架构不考虑图像的空间结构。例如,它在完全相同的基础上去对待相 距很远和彼此接近的输⼊像素。这样的空间结构的概念必须从训练数据中推断。但是如果我们 使⽤⼀个设法利⽤空间结构的架构,⽽不是从⼀个⽩板状态的⽹络架构开始,会怎样?

1. 介绍CNN

卷积神经⽹络采⽤了三种基本概念: 局部感受野local receptive fifields 共享权重shared
weights ,和 混合/池化pooling 。让我们逐个看下:

局部感受野

在之前看到的全连接层的⽹络中,输⼊被描绘成纵向排列的神经元。但在⼀个 卷积⽹络中,把输⼊看作是⼀个 28 × 28 的⽅形排列的神经元更有帮助。

我们把输⼊像素连接到⼀个隐藏神经元层。但是我们不会把每个输⼊像素连接 到每个隐藏神经元。相反,我们只是把输⼊图像进⾏⼩的,局部区域的连接。如下图,⼀个 5 × 5 的区域,对应于 25 个输⼊像素。

这个输⼊图像的区域被称为隐藏神经元的 局部感受野。它是输⼊像素上的⼀个⼩窗⼝。每个 连接学习⼀个权重。⽽隐藏神经元同时也学习⼀个总的偏置。你可以把这个特定的隐藏神经元 看作是在学习分析它的局部感受野。

 对于每个局部感受野,在第⼀个隐藏层中 有⼀个不同的隐藏神经元。

 然后我们往右⼀个像素(即⼀个神经元)移动局部感受野,连接到第⼆个隐藏神经元:

如此重复,构建起第⼀个隐藏层。注意如果我们有⼀个 28 × 28 的输⼊图像,5 × 5 的局部感 受野,那么隐藏层中就会有 24 × 24 个神经元。这是因为在抵达右边(或者底部)的输⼊图像之 前,我们只能把局部感受野横向移动 23 个神经元(或者往下 23 个神经元)。

例子中显⽰的局部感受野每次移动⼀个像素。实际上,有时候会使⽤不同的步长(step)。比如可以往右(或下)移动 2 个像素的局部感受野,这种情况下我们使⽤了 2 个步长

共享权重和偏置/卷积核/滤波器

我已经说过每个隐藏神经元具有⼀个偏置和连接到它的局部感受野的 5 × 5 权重。我没有提及的是我们打算对 24 × 24 隐藏神经元中的每⼀个使⽤相同的权重和偏置。对第 j, k 个隐藏神经元,输出为:

 这⾥ σ 是神经元的激活函数 —— 可以是我们在前⾯章⾥使⽤过的 S 型函数。b 是偏置的共享 值。wl,m 是⼀个共享权重的 5 × 5 数组。最后,我们使⽤ ax,y 来表⽰位置为 x, y 的输⼊激活值。

 这意味着第⼀个隐藏层的所有神经元检测完全相同的特征3,只是在输⼊图像的不同位置。这表明卷积⽹络能很好地适应图像的平移不变性:例如稍稍移动⼀幅猫的图像,它仍然是⼀幅猫的图像。

因为这个原因,我们有时候把从输⼊层到隐藏层的映射称为⼀个特征映射。我们把定义特征映射的权重称为共享权重。我们把以这种⽅式定义特征映射的偏置称为共享偏置

共享权重和偏置经常被称为⼀个卷积核或者滤波器

共享权重和偏置的⼀个很⼤的优点是,它⼤⼤减少了参与的卷积⽹络的参数。对于每个特征映射我们需要 25 = 5 × 5 个共享权重,加上⼀个共享偏置。所以每个特征映射需要 26 个参数。 如果我们有 20 个特征映射,那么总共有 20 × 26 = 520 个参数来定义卷积层。作为对⽐,假设 我们有⼀个全连接的第⼀层,具有 784 = 28 × 28 个输⼊神经元,和⼀个相对适中的 30 个隐藏 神经元,正如我们在本书之前的很多例⼦中使⽤的。总共有 784 × 30 个权重,加上额外的 30 个偏置,共有 23, 550 个参数。换句话说,这个全连接的层有多达 40 倍于卷基层的参数。

混合/池化

除了刚刚描述的卷积层,卷积神经⽹络也包含混合层(pooling layers)。混合层通常紧接着在卷积层之后使⽤。它要做的是简化从卷积层输出的信息。
⼀个混合层取得从卷积层输出的每⼀个特征映射6并且从它们准备⼀个凝缩的特 征映射。例如,混合层的每个单元可能概括了前⼀层的⼀个(⽐如)2 × 2 的区域。作为⼀个具 体的例⼦,⼀个常⻅的混合的程序被称为最⼤值混合(max-pooling)。在最⼤值混合中,⼀个混 合单元简单地输出其 2 × 2 输⼊区域的最⼤激活值,正如下图说明的:卷积层有 24 × 24 个神经元输出,混合后我们得到 12 × 12 个神经元。

 我们将最⼤值混合分别应⽤于每⼀个特征映射。所以如果有三个特征映射,组合在⼀起的卷积层和最⼤值混合层看起来像这样:

最⼤值混合并不是⽤于混合的仅有的技术。另⼀个常⽤的⽅法是 L2 混合(L2 pooling)。这⾥ 我们取 2×2 区域中激活值的平⽅和的平⽅根,⽽不是最⼤激活值。虽然细节不同,但其直观上和 最⼤值混合是相似的:L2 混合是⼀种凝缩从卷积层输出的信息的⽅式。在实践中,两种技术都被 ⼴泛应⽤。

 综合在⼀起: 我们现在可以把这些思想都放在⼀起来构建⼀个完整的卷积神经⽹络。它和 我们刚看到的架构相似,但是有额外的⼀层 10 个输出神经元,对应于 10 个可能的 MNIST 数字 (’0’,’1’,’2’ 等):

这个⽹络从 28 × 28 个输⼊神经元开始,这些神经元⽤于对 MNIST 图像的像素强度进⾏编码。接着的是⼀个卷积层,使⽤⼀个 5×5 局部感受野和 3 个特征映射。其结果是⼀个 3×24×24 隐藏特征神经元层。下⼀步是⼀个最⼤值混合层,应⽤于 2 × 2 区域,遍及 3 个特征映射。结果 是⼀个 3 × 12 × 12 隐藏特征神经元层。

⽹络中最后连接的层是⼀个全连接层。更确切地说,这⼀层将最⼤值混合层的每⼀个神经元连接到每⼀个输出神经元。这个全连接结构和我们之前章节中使⽤的相同。然⽽,注意上⾯的图⽰,为了简化,只使⽤了⼀个箭头,⽽不是显⽰所有的连接。

这个卷积架构和之前章节中使⽤的架构相当不同。但是总体的描述是相似的:⼀个由很多简单的单元构成的⽹络,这些单元的⾏为由它们的权重和偏置确定。⽽总体的⽬标仍然是⼀样的: ⽤训练数据来训练⽹络的权重和偏置,使得⽹络可以胜任分类输⼊数字。 


2. 其他深度学习模型

递归神经⽹络(RNN

  在前馈神经⽹络中,单独的输⼊完全确定了剩下的层上的神经元的
激活值。可以想象,这是⼀幅静态的图景:⽹络中的所有事物都被固定了,处于⼀种“冰冻结
晶”的状态。但假如,我们允许⽹络中的元素能够以动态⽅式不断地⽐那话。例如,隐藏神经元
的⾏为不是完全由前⼀层的隐藏神经元,⽽是同样受制于更早的层上的神经元的激活值。这样
肯定会带来跟前馈神经⽹络不同的效果。也可能隐藏和输出层的神经元的激活值不会单单由当
前的⽹络输⼊决定,⽽且包含了前⾯的输⼊的影响。
拥有这类时间相关⾏为特性的神经⽹络就是 递归神经⽹络 ,常写作 RNN 。当然有不同的⽅式
来从数学上给出 RNN 的形式定义。你可以参考 维基百科上的 RNN 介绍 来看看 RNN 。在我写作
本书的时候,维基百科上介绍了超过 13 种不同的模型。但除了数学细节,更加⼀般的想法是,
RNN 是某种体现出了随时间动态变化的特性的神经⽹络。也毫不奇怪, RNN 在处理时序数据和
过程上效果特别不错。这样的数据和过程正是语⾳识别和⾃然语⾔处理中常⻅的研究对象。
RNN 被⽤来将传统的算法思想,⽐如说 Turing 机或者编程语⾔,和神经⽹络进⾏联系上。
2014 年的论⽂ 提出了⼀种 RNN 可以以 python 程序的字符级表达作为输⼊,⽤这个表达来预
测输出。简单说,⽹络通过学习来理解某些 python 的程序。 第⼆篇论⽂ 同样是 2014 年的,使
RNN 来设计⼀种称之为“神经 Turing 机”的模型。这是⼀种通⽤机器整个结构可以使⽤梯度
下降来训练。作者训练 NTM 来推断对⼀些简单问题的算法,⽐如说排序和复制。
不过正如在⽂中提到的,这些例⼦都是极其简单的模型。学会执⾏ print(398345+42598) 并不
能让⽹络称为⼀个正常的 python 解释器!对于这些想法,我们能推进得多远也是未知的。结果
都充满了好奇。历史上,神经⽹络已经在传统算法上失败的模式识别问题上取得了⼀些成功。
另外,传统的算法也在神经⽹络并不擅⻓的领域⾥占据上⻛。今天没有⼈会使⽤神经⽹络来实
Web 服务器或者数据库程序。研究出将神经⽹络和传统的算法结合的模型⼀定是⾮常棒的。
RNN RNN 给出的启发可能会给我们不少帮助。 RNN 同样也在其他问题的解决中发挥着作⽤。
在语⾳识别中,RNN 是特别有效的。

⻓短期记忆单元(Long short-term memory units,LSTMs)

影响 RNN 的⼀个挑战是前期的 模型会很难训练,甚⾄⽐前馈神经⽹络更难。原因就是我们在上⼀章提到的不稳定梯度的问题。 回想⼀下,这个问题的通常表现就是在反向传播的时候梯度越变越⼩。这就使得前期的层学习 ⾮常缓慢。在 RNN 中这个问题更加糟糕,因为梯度不仅仅通过层反向传播,还会根据时间进⾏ 反向传播。如果⽹络运⾏了⼀段很⻓的时间,就会使得梯度特别不稳定,学不到东西。幸运的是, 可以 引⼊⼀个称为⻓短期记忆(long short-term memory)的单元进⼊ RNN 中。LSTM 最早是由 Hochreiter 和 Schmidhuber 在 1997 年提出,就是为了 解决这个不稳定梯度的问题。LSTM 让 RNN 训练变得相当简单,很多近期的论⽂(包括我在上⾯给出的那些)都是⽤了 LSTM 或者相关的想法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值