机器学习和神经网络 - 页 55

 

第 6.1 讲——小批量梯度下降概述



第 6.1 讲——小批量梯度下降概述[机器学习神经网络]

在本视频中,我们将讨论神经网络的随机梯度下降学习,重点关注在大型神经网络中广泛使用的小批量版本。线性神经元的误差面形成一个二次碗,其中横轴代表权重,纵轴代表误差。对于多层非线性网络,误差表面更复杂,但局部近似为二次碗的一小部分。

当使用全批学习时,沿着最陡的梯度方向下降可能不会到达期望的目的地。最速下降的方向通常几乎垂直于所需方向,导致收敛问题。这个问题在非线性多层网络中仍然存在,因为误差表面往往在某些方向上弯曲度很高,而在其他方向上弯曲度较小。

为了解决这个问题,采用了随机梯度下降 (SGD)。 SGD 不是计算整个数据集的梯度,而是计算数据子集或小批量数据的梯度。这种方法有几个优点,例如减少权重更新的计算量以及为多个训练案例并行化梯度计算的能力。

使用小批量有助于避免不必要的重量晃动。重要的是要有代表整个数据集的小批量,并避免不典型的小批量,例如所有示例都来自一个类。虽然有可用的全梯度算法,但由于其计算效率,小批量学习通常更适合大型和冗余训练集。

基本的小批量梯度下降学习算法涉及猜测初始学习率和监控网络性能。如果误差恶化或振荡,学习率就会降低。如果误差下降得太慢,可以提高学习率。根据这些观察自动调整学习率是有益的。在学习快要结束时,降低学习率通常有助于消除由小批量梯度引起的权重波动。验证集用于评估何时降低学习率并确定错误何时停止持续下降。

通过仔细调整学习率并在整个训练过程中对其进行调整,小批量梯度下降提供了一种在冗余数据集上训练大型神经网络的有效方法。

此外,值得注意的是,神经网络的学习算法主要有两种类型:全梯度算法和小批量算法。全梯度算法使用所有训练案例计算梯度,允许各种优化技术来加速学习。然而,这些为平滑非线性函数开发的方法可能需要修改才能有效地与多层神经网络一起工作。

另一方面,小批量学习有利于高度冗余和大型训练集。虽然小批量可能需要相对较大,但它们提供了计算效率。使用小批量允许同时并行计算多个训练案例的梯度,利用现代处理器的功能,例如图形处理单元 (GPU)。

在整个训练过程中,重要的是要与学习率取得平衡。应该根据网络的性能和观察到的错误行为来调整学习率。在学习快要结束时,降低学习率有助于获得一组最终的权重,这是一个很好的折衷方案,可以消除由小批量梯度引起的波动。

验证集在监控网络进度方面起着至关重要的作用。通过在单独的验证集上测量错误,可以评估错误是否持续停止减少并确定调整学习率的适当时间。这些验证示例不用于训练或最终测试。

小批量梯度下降学习算法为在冗余数据集上训练大型神经网络提供了一种实用且有效的方法。仔细调整学习率、使用验证集监控网络性能以及使用具有代表性的小批量有助于获得成功的培训结果。

 

第 6.2 讲——小批量梯度下降的一些技巧



第 6.2 讲——小批量梯度下降的一些技巧 [机器学习的神经网络]

在本视频中,我们将讨论在对小批量使用随机梯度下降时出现的几个问题。有许多技巧可以显着提高性能,通常被称为神经网络的“魔法”。我将介绍本视频中的一些关键技巧。

让我们从第一个问题开始:神经网络中的权重初始化。如果两个隐藏单元具有相同的权重和偏差,它们将始终接收相同的梯度并且永远不会彼此区分。为了使它们能够学习不同的特征检测器,我们需要用不同的权重来初始化它们。这通常是通过使用小的随机权重来打破对称性来完成的。重要的是要注意初始权重的大小不应该对所有单位都相同。具有较大扇入(传入连接)的隐藏单元往往会因较大的权重而饱和,因此在这种情况下首选较小的权重。另一方面,扇入较小的隐藏单元受益于较大的权重。初始权重的大小应与扇入的平方根成正比。

另一个重要因素是转移输入。为每个输入组件添加一个常数值会对学习速度产生重大影响。使用最速下降时,移动输入特别有效。建议移动每个输入组件,以便在整个训练数据中,它的平均值为零。

接下来,让我们考虑误差面及其与权重和训练案例的关系。在某些情况下,当权重满足不同的训练案例时,误差面会变长,使学习变得困难。然而,通过从每个输入分量中减去一个常量值,我们可以将误差表面转换为圆形,这使得学习更容易。

另一个要考虑的因素是隐藏单元的激活函数。双曲正切值介于 -1 和 1 之间,通常是首选,因为它们会导致隐藏单元活动的平均值接近于零。这可以促进后续层的更快学习。然而,逻辑激活函数具有优势,因为它们为小的负输入提供零输出,从而允许网络忽略这些输入的波动。双曲正切需要更大的输入来忽略这种波动。

缩放输入对于有效学习也至关重要。通过将输入分量转换为在整个训练集中具有单位方差,典型值为一或负一,我们可以改善误差面。缩放输入可确保权重的变化对所有输入组件产生相似的影响,从而实现更平衡的学习过程。

为了加速小批量学习,有四种主要方法可以考虑:

  1. 动量:动量不是直接根据梯度改变权重,而是使用梯度来加速权重的速度。这种方法允许权重保留来自先前梯度的信息。

  2. 自适应学习率:对每个参数使用单独的自适应学习率并根据经验测量对其进行调整可以改善学习。如果梯度不断变号,学习率就会降低。如果梯度保持一致,则学习率增加。

  3. RMSprop:此方法将学习率除以最近梯度幅度的运行平均值。它通过适当地缩放来有效地处理各种渐变。

  4. 全批学习:这种方法涉及使用整个训练集进行学习,并采用考虑曲率信息的高级优化技术。虽然它可能有效,但可能需要进一步调整才能与小批量一起使用。

这些只是一些可以显着提高小批量随机梯度下降性能的技术。

总之,我们已经讨论了与神经网络中的小批量随机梯度下降相关的几个重要问题和技术。这些技术作为神经网络的“魔法”,可以极大地提高其性能。让我们回顾一下要点:

  1. 权重初始化:为了让隐藏单元学习不同的特征检测器,以不同方式初始化它们的权重是至关重要的。通过使用打破对称性的小随机权重,我们可以确保每个单元在开始时彼此不同。初始权重的大小应与扇入的平方根成正比,这有助于获得良好的起点。

  2. 转移输入:通过向每个组件添加一个常数来转移输入会对学习速度产生重大影响。移动每个组件是有益的,这样平均而言,输入的值为零。这可以通过减去训练数据中输入值的平均值来实现。

  3. 缩放输入:缩放输入值是随机梯度下降中的另一种有用技术。转换输入,使每个组件在整个训练集中都具有单位方差,从而简化了学习过程。重新缩放输入有助于创建圆形误差曲面,从而使梯度下降更有效。

  4. 去相关输入组件:去相关输入向量的组件通过消除特征之间的相关性来改进学习。主成分分析是实现这一目标的一种有价值的方法。通过移除具有小特征值的分量并对剩余分量进行缩放,我们可以获得圆形误差曲面,使梯度下降更容易。

  5. 常见问题:神经网络训练中遇到的一些常见问题包括较大的初始学习率导致隐藏单元卡住、从小权重开始时学习缓慢以及过早地降低学习率。在调整学习率以确保最佳学习方面取得平衡很重要。

  6. 加速 Mini-Batch 学习:有四种主要方法可以加速 mini-batch 学习,这些方法明确设计用于更快的学习:动量、自适应学习率、RMSprop 和具有曲率信息的全批学习。这些技术利用动量、自适应调整和梯度幅度等各种机制来加速学习过程。

虽然这些技术显着提高了神经网络中小批量随机梯度下降的性能,但必须考虑手头的具体问题并尝试不同的方法以获得最佳结果。优化领域提供了更先进的方法,值得探索以在神经网络中更有效地学习。

总结了本视频中涉及的与神经网络中小批量随机梯度下降相关的挑战和技术的要点。

 

6.3 动量法



第 6.3 讲——动量法[机器学习的神经网络]

在本视频中,我们将讨论与使用小批量随机梯度下降相关的几个问题,并探索一些提高其有效性的技术。这些技术通常被认为是神经网络的“魔法”,我们将介绍其中的一些关键技术。

首先,让我们解决神经网络中权重初始化的问题。如果两个隐藏单元具有相同的权重和偏差,它们将始终接收相同的梯度并且无法学习不同的特征检测器。为了使它们能够学习不同的特征,以不同方式初始化它们的权重至关重要。我们通过使用打破对称性的小随机权重来实现这一点。此外,考虑到每个隐藏单元的扇入,初始权重具有不同的大小是有益的。例如,较大的权重可能会导致具有显着扇入的单元饱和,而较小的权重适用于具有较小扇入的单元。根据经验,初始权重的大小应与扇入的平方根成正比。

移动输入,或向每个输入组件添加一个常量,会对学习速度产生令人惊讶的显着影响。这种转变有助于最速下降,因为它可以显着改变误差面。通常建议将每个输入组件移动到整个训练集中的平均值为零。

使用最速下降法时,缩放输入是另一个重要的考虑因素。缩放涉及转换输入值以确保每个组件在整个训练集中具有单位方差,使它们成为一或负一的典型值。这种缩放允许更好的误差表面行为,避免大输入组件的高曲率和小输入组件的低曲率。

对输入组件进行去相关可以极大地促进学习。通过消除输入组件之间的相关性,我们减少了冗余并提高了学习效率。主成分分析 (PCA) 是实现去相关的常用技术。它涉及删除具有小特征值的组件,并通过将剩余组件除以其特征值的平方根来缩放剩余组件。这个过程导致线性系统的圆形误差表面,从而简化了学习。

现在让我们解决一些在神经网络训练中遇到的常见问题。从过大的学习率开始可能会将隐藏单元推向极端状态,此时它们的导数变得接近于零。这会导致学习停止,通常给人一种陷入局部最小值的印象。实际上,网络很可能陷入停滞状态。

使用平方误差或交叉熵误差进行分类时会出现另一个挑战。最初,网络快速学习到最佳猜测策略,即使输出单元等于预期比例为一。然而,超出这种猜测策略的进一步改进可能会很慢,尤其是在深度网络和小初始权重的情况下。

调整学习率时,必须找到合适的平衡点。过早或过多地降低学习率可能会阻碍进步,而在训练结束时降低学习率有助于稳定网络的性能。

现在让我们探索四种显着加速小批量学习的具体方法:

  1. 动量:不是直接根据梯度改变权重,动量涉及使用梯度来更新权重更新的速度。这种势头使网络能够记住之前的梯度并有助于加速学习。

  2. 自适应学习率:为每个参数分配一个单独的学习率并根据经验测量慢慢调整它可以增强学习。如果梯度的符号不断变化,表明振荡,学习率降低。如果符号保持一致,表明有进步,学习率就会增加。

  3. RMSprop:此方法涉及将权重更新除以最近梯度幅度的运行平均值。它根据梯度的大小动态调整权重更新,从而有效处理各种梯度范围。 RMSprop 是 Rprop 的小批量改编。

 

第 6.4 讲——每个连接的自适应学习率



第 6.4 讲——每个连接的自适应学习率 [机器学习的神经网络]

在本视频中,我们将探讨一种称为自适应学习率的方法,该方法最初由罗比·雅各布斯 (Robbie Jacobs) 在 80 年代末开发,随后由其他研究人员改进。自适应学习率背后的概念是根据对该连接的权重在更新期间如何表现的经验观察,为神经网络中的每个连接分配一个独特的学习率。这种方法允许通过在权重梯度保持反转时降低学习率并在梯度保持一致时增加学习率来微调学习过程。

为每个连接设置单独的自适应学习率是有利的,尤其是在深度多层网络中。在这样的网络中,不同权重之间的学习率可能会有很大差异,尤其是不同层中的权重之间。此外,在调整多个传入权重以纠正错误时确定超调效应大小的单元的扇形化也需要不同的学习率。较大的扇入会导致更显着的超调效应,因此有必要相应地调整学习率。

为了实现自适应学习率,手动设置全局学习率并将其乘以特定于每个权重的局部增益。最初,每个权重的局部增益都设置为 1。然后通过将学习率乘以局部增益和该权重的误差导数来确定权重更新。如果权重的梯度不改变符号,则通过增加局部增益来调整局部增益,如果梯度具有相反的符号则减小局部增益。采用加法增加和乘法减少,目的是在发生振荡时快速抑制大增益。

当梯度是随机的时,考虑自适应学习率的行为是很有趣的。在这种情况下,增益的增加和减少次数将相等,从而导致增益在 1 附近徘徊。如果梯度始终具有相同的方向,则增益会变得远大于 1,而始终相反的梯度可能会使增益远小于 1,表明在峡谷中振荡。

为了提高自适应学习率的有效性,重要的是将增益的大小限制在一个合理的范围内,例如 0.1 到 10 或 0.01 到 100。增益过大会导致不稳定并阻止权重收敛。虽然自适应学习率最初是为全批量学习设计的,但它们也可以应用于小批量学习。然而,较大的小批量是首选,以最大限度地减少采样误差的影响,并确保梯度中的符号变化反映穿越峡谷。

正如 Jacobs 所建议的那样,可以将自适应学习率与动量相结合。不是将当前梯度与先前梯度进行比较,而是确定当前梯度与该权重的速度(累积梯度)之间的符号一致。这种组合利用了动量和自适应学习率的优势。虽然自适应学习率可以处理轴对齐效果,但动量可以处理对角线椭圆并在对角线方向上快速导航,这是自适应学习率本身无法实现的。

还有一些额外的考虑因素和技术可以提高自适应学习率的性能。关键是要取得平衡,避免收益过大。如果增益变得太大,它们会导致不稳定并且不能足够快地减小,可能导致权重损坏。

此外,值得注意的是,自适应学习率主要是为全批学习而设计的,其中所有训练示例都在一次迭代中处理。然而,它们也可以应用于小批量学习,其中一次处理训练示例的子集。使用小批量时,重要的是要确保小批量大小相对较大,以减轻抽样误差的影响。这有助于确保梯度中的符号变化指示穿越峡谷,而不是仅仅由于小批量的采样可变性。

也可以将自适应学习率与动量相结合,这可以进一步增强优化过程。不是将当前梯度与先前梯度进行比较,而是可以评估当前梯度与该权重的速度(即累积梯度)之间的符号一致性。通过结合动量,可以实现动量和自适应学习率优势之间的协同作用。自适应学习率侧重于处理轴对齐效应,而动量能够有效处理对角线椭圆并在对角线方向上快速导航,这对单独的自适应学习率来说可能具有挑战性。

自适应学习率通过根据经验观察为每个连接分配单独的学习率,提供了一种微调神经网络学习过程的方法。他们解决了深度多层网络中不同权重的不同学习率的挑战,并考虑了单元的扇形展开。限制增益大小、适当的小批量选择以及将自适应学习率与动量相结合等技术可以进一步优化训练过程,从而提高性能和收敛性。

 

第 6.5 讲 — Rmsprop:归一化梯度



第 6.5 讲 — Rmsprop:归一化梯度 [机器学习的神经网络]

该视频介绍了一种称为 Rprop(弹性反向传播)的方法,最初是为全批学习而设计的。它与流行的反向传播算法有相似之处,但也有一些不同。演讲者随后讨论了如何扩展 Rprop 以处理小批量,这对于大型冗余数据集至关重要。由此产生的方法称为 iRprop(改进的 Rprop),结合了 Rprop 的优点和小批量学习的效率。

Rprop 背后的主要动机是解决不同梯度幅度的挑战。神经网络中的梯度范围可以从很小到很大,因此很难选择单一的全局学习率。 Rprop 通过仅考虑梯度的符号来解决这个问题,确保所有权重更新的大小相同。这种技术对于逃避小梯度的高原特别有用,因为即使梯度很小,权重更新也可能很大。

Rprop 将梯度的符号与基于正在更新的权重的自适应步长结合起来。它没有考虑梯度的大小,而是关注先前为该权重确定的步长。步长会随着时间的推移而调整,如果最后两个梯度的符号一致则乘法增加,如果不一致则乘法减小。通过限制步长,它可以防止它们变得太大或太小。

虽然 Rprop 适用于全批量学习,但在应用于小批量时面临挑战。它违反了随机梯度下降背后的核心思想,即在使用较小的学习率时,它依赖于连续小批量的平均梯度。演讲者解释说,Rprop 以其当前步长多次增加权重,并且只减少一次,导致权重幅度出现意外增加。

为了克服这个限制,演讲者引入了 RMSprop(均方根传播)作为 Rprop 的小批量版本。 RMSprop 确保用于划分梯度的数字在附近的小批量中保持一致。它通过为每个权重保持平方梯度的移动平均值来实现这一点。使用衰减因子(例如,0.9)对平方梯度进行加权,并与先前的均方相结合以计算更新后的均方。然后使用均方的平方根对梯度进行归一化,从而实现更有效的学习。

演讲者提到可以对 RMSprop 进行进一步的开发,例如将其与每个连接上的动量或自适应学习率相结合。此外,他们还参考了相关的方法,例如Nesterov动量和Yann LeCun小组提出的一种与RMSprop有相似之处的方法。

综上所述,演讲者根据数据集的特点推荐了不同的学习方法。对于没有太多冗余的小型数据集或大型数据集,非线性共轭梯度、LBFGS 或 L-BFGS-B 等全批处理方法是合适的。自适应学习率或 Rprop 也可用于神经网络。在大型冗余数据集的情况下,小批量方法是必不可少的。尝试的第一个选项是带动量的标准梯度下降法。 RMSprop 是另一种值得考虑的有效方法,因为它结合了 Rprop 和小批量学习的优势。演讲者建议探索进一步的增强,但由于网络和任务的多样性,目前还没有训练神经网络的简单方法。

 

第 7.1 讲——建模序列:简要概述



第 7.1 讲——序列建模:简要概述[机器学习的神经网络]

在此视频中,演讲者概述了用于序列的不同类型的模型。他们首先讨论自回归模型,该模型根据先前的项预测序列中的下一项。然后他们提到包含隐藏单元的自回归模型的更复杂变体。演讲者继续介绍具有隐藏状态和动力学的模型,例如线性动力系统和隐马尔可夫模型。尽管这些模型很复杂,但它们的目的是在序列建模的背景下展示递归神经网络与这些类型模型之间的关系。

使用机器学习对序列建模时,目标通常是将一个序列转换为另一个序列。例如,将英语单词转换为法语单词或将声压转换为用于语音识别的单词标识。在某些情况下,可能没有单独的目标序列,因此输入序列中的下一项可以作为教学信号。这种方法对于时间序列更自然,因为预测有自然顺序。然而,它也可以应用于图像,模糊监督学习和非监督学习之间的区别。

然后,演讲者在深入介绍递归神经网络 (RNN) 之前回顾了其他序列模型。他们解释说,可以通过在前馈神经网络中添加隐藏单元来扩展没有记忆的自回归模型。然而,他们强调无记忆模型只是序列模型的一个子类。另一种方法是使用具有隐藏状态和内部动态的模型,它可以将信息存储更长时间。这些模型,例如线性动力系统和隐马尔可夫模型,涉及概率推理和学习算法。

线性动力系统在工程中应用广泛,具有具有线性动力和高斯噪声的实值隐藏状态。另一方面,隐马尔可夫模型使用离散分布和概率状态转换。它们通常用于语音识别,并具有基于动态规划的高效学习算法。

演讲者解释了隐马尔可夫模型在表达前半部分和后半部分之间大量信息时的局限性。这种限制是由于隐藏状态的内存容量有限。这导致了递归神经网络的引入,它具有分布式隐藏状态和非线性动力学,使它们在记忆信息方面更有效。

递归神经网络可以表现出各种行为,包括振荡、稳定到点吸引子(对记忆检索有用)和混沌行为(在某些情况下有用)。 RNN 可以学习使用其隐藏状态的不同子集来实现多个程序的想法最初被认为使它们非常强大。然而,RNN 的训练在计算上具有挑战性,充分发挥其潜力一直是一项艰巨的任务。

该视频概述了不同的序列模型,介绍了递归神经网络的概念,并强调了它们的计算能力和训练中的挑战。

 

第 7.2 讲——使用反向传播训练 RNN



第 7.2 讲——使用反向传播训练 RNN [机器学习神经网络]

在本视频中,我将讨论时间反向传播算法,这是训练递归神经网络的常用方法。一旦您理解了递归神经网络和具有代表不同时间步长的多层的前馈神经网络之间的关系,该算法就很简单了。我还将介绍为递归神经网络提供输入和所需输出的各种方法。

该图说明了一个简单的循环网络,其中包含三个相互连接的神经元。每个连接都有一个时间延迟,并且网络以整数滴答的离散时间运行。要训练循环网络,我们需要认识到它本质上是时间前馈网络的扩展版本。循环网络在时间 0 处以初始状态开始,并使用其连接权重在时间 1 处生成新状态。它重复这个过程,利用相同的权重产生后续的新状态。

当存在权重约束时,反向传播在学习中是有效的。在卷积网络中也观察到了这一点。为了合并权重约束,我们像往常一样计算梯度,忽略约束,然后修改梯度以保持约束。例如,如果我们希望 w1 等于 w2,我们确保 w1 的变化等于 w2 的变化,方法是对 w1 和 w2 取导数,将它们相加或平均,并应用相同的数量来更新两个重量。只要权重最初满足约束,它们就会继续这样做。

时间反向传播算法只是一个术语,用于描述将循环网络视为具有共享权重的前馈网络并使用反向传播对其进行训练的过程。在时域中,正向传递在每个时间片累积活动,而反向传递从堆栈中提取活动并计算每个时间步的误差导数。这种在每个时间步的反向传递给算法起了名字——时间反向传播。

在向后传递之后,我们对每个权重的所有时间步长的导数求和或平均。然后我们用相同的量更新该权重的所有实例,与导数的总和或平均值成比例。如果我们不指定所有单元(例如隐藏单元或输出单元)的初始状态,则会出现额外的考虑因素。在这种情况下,我们需要在特定状态下启动它们。一种方法是设置默认值,例如 0.5,但它可能不会产生最佳结果。或者,我们可以通过将初始状态视为参数并根据误差函数相对于初始状态的梯度来调整它们来学习初始状态。

有多种方法可以为递归神经网络提供输入。我们可以指定所有单元的初始状态、单元的子集或单元子集在每个时间步的状态。后者通常在处理顺序数据时使用。同样,有不同的方法来指定循环网络的目标。如果我们想训练它在特定的吸引子处定居,我们可以为所有单元或多个时间步长指定所需的最终状态。通过在反向传播过程中包含每个时间步长的导数,我们可以轻松地合并这些规范并鼓励吸引子的学习。

时间反向传播算法是反向传播的直接扩展,用于训练递归神经网络。通过将循环网络视为具有共享权重的扩展前馈网络,我们可以应用反向传播并调整初始状态和权重以优化训练。存在各种方法来为循环网络提供输入和所需的输出,从而允许灵活地处理顺序数据和针对特定目标的训练。

 

第 7.3 讲——训练 RNN 的玩具示例



第 7.3 讲——训练 RNN [机器学习神经网络] 的玩具示例

在本视频中,我将解释循环神经网络 (RNN) 如何解决玩具问题。选择了一个玩具问题来展示 RNN 的功能,而这些功能是前馈神经网络不容易实现的。这里演示的问题是二元加法。在 RNN 学会解决问题后,我们可以检查它的隐藏状态,并将它们与解决相同问题的有限状态自动机的隐藏状态进行比较。

为了说明将两个二进制数相加的问题,我们可以训练一个前馈神经网络。但是,这种方法有局限性。我们必须预先确定输入数字和输出数字的最大位数。此外,应用于输入数字的不同位的处理没有泛化。因此,添加最后两位数字和处理进位的知识存在于特定的权重中。在处理一个长二进制数的不同部分时,知识需要以不同的权重进行编码,导致缺乏自动泛化能力。

图像中描述了二进制加法的算法。算法中的状态类似于隐马尔可夫模型中的状态,只是它们不是真正隐藏的。系统一次在一个状态下运行,在进入一个状态(打印 1 或 0)时执行一个动作。当处于一种状态时,它会接收输入,其中包含来自下一列的两个数字,从而导致到新状态的转换。例如,如果它处于进位状态,刚打印了一个 1,当遇到一个 1 1 时,它保持相同的状态并打印另一个 1。但是,如果它遇到一个 1 0 或 0 1,它会转换到进位状态,但会打印 0。类似地,0 0 会导致它进入无进位状态,在该状态下会打印 1。每个时间步都会继续执行此过程。

用于二进制加法的递归神经网络需要两个输入单元和一个输出单元。它在每个时间步接收两个输入数字,并生成与两个时间步前遇到的列对应的输出。为了解决时间延迟,网络需要延迟两个时间步长,其中第一步根据输入更新隐藏单元,第二步从隐藏状态生成输出。网络架构由三个相互连接的隐藏单元组成,尽管更多的隐藏单元可以用于更快的学习。这些隐藏单元具有不同权重的双向连接。隐藏单元之间的连接允许一个时间步的活动模式影响下一时间步的隐藏活动模式。输入单元与隐藏单元有前馈连接,允许网络观察列中的两个数字。类似地,隐藏单元与输出单元有前馈连接,从而能够产生输出。

分析递归神经网络学习的内容很有趣。它在其三个隐藏单元中学习四种不同的活动模式,这些隐藏单元对应于用于二进制加法的有限状态自动机中的节点。重要的是不要将神经网络中的单元与有限状态自动机中的节点混淆。自动机中的节点与循环神经网络的活动向量对齐。自动机每次都被限制在一种状态,就像 RNN 中的隐藏单元一样,在每个时间步都有一个活动向量。虽然 RNN 可以模拟有限状态自动机,但它的表示能力呈指数级增长。对于 N 个隐藏神经元,它可以有 N 个可能的二元活动向量的幂。虽然它只有 N 平方权重,但它可能无法充分利用整个表征能力。如果瓶颈在于表示,则 RNN 可以胜过有限状态自动机。

当输入流包含同时发生的两个独立进程时,这一点尤为重要。有限状态自动机需要以指数方式增加其状态数以处理并行过程。相比之下,循环神经网络只需要将隐藏单元的数量增加一倍,从而将单元数量增加一倍,并将它可以表示的二进制向量状态的数量增加四倍。

 

第 7.4 讲 — 为什么很难训练 RNN?



第 7.4 讲 — 为什么很难训练 RNN? [机器学习的神经网络]

在本视频中,我将讨论使循环神经网络 (RNN) 训练变得困难的梯度爆炸和消失问题。多年来,研究人员认为用 RNN 建模长期依赖性几乎是不可能的。然而,现在有四种有效的方法可以解决这个问题。

要理解为什么训练 RNN 具有挑战性,我们需要认识到 RNN 中前向和反向传递之间的关键区别。在正向传递中,使用逻辑函数等压缩函数来防止活动向量爆炸。 RNN 中的每个神经元都使用一个逻辑单元,它将输出限制在 0 和 1 之间。这可以防止活动水平不受控制地增长。

相反,后向传播是完全线性的。令人惊讶的是,如果我们在最后一层将误差导数加倍,则所有误差导数在反向传播期间也会加倍。梯度由特定点处逻辑曲线的斜率决定(视频中用红点标记)。一旦前向传递完成,这些切线的斜率就固定了。在反向传播期间,梯度通过非线性斜率固定的线性系统传播。然而,线性系统在迭代时往往会遇到梯度爆炸或消亡的问题。如果权重很小,梯度会呈指数级缩小并变得可以忽略不计。相反,如果权重很大,梯度会爆炸并压倒学习过程。与前馈神经网络相比,RNN 中的这些问题更为严重,尤其是在处理长序列时。

即使进行了仔细的权重初始化,捕获当前输出与许多时间步之前发生的事件之间的依赖关系仍然具有挑战性。 RNN 难以处理远程依赖性。该视频提供了一个示例,说明在训练循环神经网络以学习吸引子状态时梯度如何消失或爆炸。初始状态的微小差异不会导致最终状态发生变化(梯度消失),而边界附近的微小变化会导致显着的发散(梯度爆炸)。

为了应对这些挑战,有四种有效的 RNN 训练方法。第一种方法是长短期记忆 (LSTM),它改变网络的架构以提高记忆能力。第二种方法涉及使用可以有效处理小梯度的高级优化器。 Hessian-free 优化专为神经网络量身定制,擅长检测低曲率的小梯度。第三种方法涉及仔细初始化权重并在隐藏状态中创建弱耦合振荡器库。这允许网络回响并记住输入序列。然后训练隐藏单元和输出之间的连接,同时循环连接保持固定。第四种方法利用动量并将其与回声状态网络中使用的初始化技术相结合。这种修改改善了网络的动态,使其更加有效。

这些方法提高了训练 RNN 的能力,克服了梯度爆炸和消失带来的挑战。

 

第 7.5 讲——长期短期记忆



第 7.5 讲——长期短期记忆 [机器学习的神经网络]

在本视频中,我将解释用于训练循环神经网络的称为“长短期记忆”(LSTM) 的方法。 LSTM 旨在通过使用促进信息门控的专门模块在神经网络中创建持久的短期记忆。

LSTM 中的存储单元旨在将信息保留较长时间。它由具有乘法交互作用的逻辑和线性单元组成。当逻辑“写入”门被激活时,信息从循环网络的其余部分进入记忆单元。 “写”门的状态由循环网络决定。只要“保持”门打开,信息就会保留在存储单元中,这由系统的其余部分控制。为了从存储单元中读取信息,逻辑“读取”门被激活,存储的值被检索并影响循环神经网络的未来状态。

LSTM 使用逻辑单元,因为它们具有可微分的属性,可以通过它们进行反向传播。这允许网络在多个时间步长上学习和优化记忆单元。通过记忆单元的反向传播涉及基于误差导数更新权重,它可以通过数百个时间步长反向传播。

LSTM 在手写识别等任务中特别成功。它可以有效地存储和检索信息,即使是在手写草书的情况下。与其他系统相比,它在读写任务中表现出卓越的性能,加拿大邮政已开始将基于 LSTM 的系统用于此类目的。

视频中演示了基于LSTM的手写识别系统。系统将笔坐标作为输入,并生成可识别的字符作为输出。第一行显示识别的字符,第二行显示所选记忆单元的状态,第三行用笔坐标可视化实际书写,第四行说明反向传播到 XY 位置的梯度,表示过去事件对字符识别决策。

LSTM 已被证明是一种用于训练递归神经网络的强大方法,能够捕获和利用顺序数据中的长期依赖关系。