递归神经网络基础知识:您需要了解的内容

已发表: 2024-09-19

循环神经网络 (RNN) 是数据分析、机器学习 (ML) 和深度学习领域的重要方法。本文旨在探索 RNN 并详细介绍其在更广泛的深度学习背景下的功能、应用以及优缺点。

目录

什么是 RNN?

RNN 的工作原理

RNN 的类型

RNN 与 Transformer 和 CNN 对比

RNN 的应用

优点

缺点

使用 Grammarly 更智能地工作
任何有工作要做的人的人工智能写作伙伴

什么是循环神经网络?

循环神经网络是一种深度神经网络,可以通过维护内部存储器来处理顺序数据,从而使其能够跟踪过去的输入以生成输出。 RNN 是深度学习的基本组成部分,特别适合涉及顺序数据的任务。

“循环神经网络”中的“循环”是指模型如何将过去输入的信息与当前输入的信息结合起来。来自旧输入的信息存储在一种内部存储器中,称为“隐藏状态”。它会重复出现——将之前的计算反馈回自身以创建连续的信息流。

让我们用一个例子来演示:假设我们想使用 RNN 来检测“He ate the pie happy”这句话的情绪(正面或负面)。 RNN 将处理单词he ,更新其隐藏状态以合并该单词,然后继续处理ate ,将其与从he学到的内容相结合,依此类推,直到句子完成。从长远来看,阅读这句话的人会更新他们对每个单词的理解。一旦他们阅读并理解了整个句子,人们就可以说出该句子是肯定的还是否定的。这种人类的理解过程正是隐藏状态试图模拟的。

RNN 是基本的深度学习模型之一。尽管 Transformer 已经取代了它们,但它们在自然语言处理 (NLP) 任务上做得非常好。 Transformer 是先进的神经网络架构,可以通过并行处理数据并能够发现源文本中相距较远的单词之间的关系(使用注意力机制)来提高 RNN 性能。然而,RNN 对于时间序列数据以及简单模型就足够的情况仍然有用。

RNN 的工作原理

为了详细描述 RNN 的工作原理,让我们回到前面的示例任务:对句子“He ate the pie happy”的情感进行分类。

我们从一个训练有素的 RNN 开始,它接受文本输入并返回二进制输出(1 代表正数,0 代表负数)。在将输入提供给模型之前,隐藏状态是通用的——它是从训练过程中学习到的,但还不是特定于输入的。

第一个单词He被传递到模型中。在 RNN 内部,其隐藏状态随后更新(至隐藏状态 h1)以合并单词He 。接下来,单词ate被传递到 RNN,并且 h1 被更新(到 h2)以包含这个新单词。这个过程不断重复,直到最后一个单词被传入。隐藏状态 (h4) 被更新以包含最后一个单词。然后更新的隐藏状态用于生成 0 或 1。

以下是 RNN 过程如何工作的直观表示:

递归神经网络过程

递归是 RNN 的核心,但还有一些其他考虑因素:

  • 文本嵌入: RNN 无法直接处理文本,因为它仅适用于数字表示。文本必须先转换为嵌入,然后才能由 RNN 处理。
  • 输出生成: RNN 在每一步都会生成输出。但是,在处理大部分源数据之前,输出可能不是很准确。例如,在仅处理句子的“He ate”部分后,RNN 可能不确定它代表的是积极情绪还是消极情绪——“He ate”可能会被认为是中性的。只有处理完完整的句子后,RNN 的输出才是准确的。
  • 训练 RNN:必须训练 RNN 才能准确执行情感分析。训练涉及使用许多带标签的示例(例如,“他愤怒地吃了馅饼”,标记为否定),通过 RNN 运行它们,并根据其预测的偏差程度调整模型。此过程为隐藏状态设置默认值和更改机制,使 RNN 能够了解哪些单词对于跟踪整个输入非常重要。

循环神经网络的类型

RNN 有多种不同类型,每种类型的结构和应用各不相同。基本 RNN 的主要区别在于输入和输出的大小。高级 RNN,例如长短期记忆 (LSTM) 网络,解决了基本 RNN 的一些局限性。

基本 RNN

一对一 RNN:该 RNN 接受长度为 1 的输入并返回长度为 1 的输出。因此,实际上不会发生递归,使其成为标准神经网络而不是 RNN。一对一 RNN 的一个例子是图像分类器,其中输入是单个图像,输出是标签(例如“鸟”)。

一对多 RNN:该 RNN 接受长度为 1 的输入并返回多部分输出。例如,在图像字幕任务中,输入是一个图像,输出是描述该图像的一系列单词(例如,“阳光明媚的日子里,一只鸟穿过河流”)。

多对一 RNN:该 RNN 接受多部分输入(例如,一个句子、一系列图像或时间序列数据)并返回长度为 1 的输出。例如,一个句子情感分类器(就像我们讨论的那样),其中输入是一个句子,输出是单个情感标签(正面或负面)。

多对多 RNN:该 RNN 接受多部分输入并返回多部分输出。一个例子是语音识别模型,其中输入是一系列音频波形,输出是表示口头内容的单词序列。

高级 RNN:长短期记忆 (LSTM)

长短期记忆网络旨在解决标准 RNN 的一个重大问题:它们会忘记长输入的信息。在标准 RNN 中,隐藏状态对输入的最近部分有很大的权重。在数千个单词长的输入中,RNN 会忘记开头句子中的重要细节。 LSTM 有一个特殊的架构来解决这个遗忘问题。他们有一些模块可以选择要明确记住和忘记的信息。因此,最近但无用的信息将被遗忘,而旧的但相关的信息将被保留。因此,LSTM 比标准 RNN 更常见——它们在复杂或长时间的任务上表现得更好。然而,他们并不完美,因为他们仍然选择忘记物品。

RNN 与 Transformer 和 CNN 对比

另外两种常见的深度学习模型是卷积神经网络(CNN)和 Transformer。它们有何不同?

RNN 与 Transformer 对比

RNN 和 Transformer 都在 NLP 中大量使用。然而,它们在架构和处理输入的方法上存在显着差异。

架构和处理

  • RNN: RNN 按顺序处理输入,一次处理一个单词,并保持一个隐藏状态,该状态携带来自先前单词的信息。这种顺序性质意味着 RNN 可能会由于这种遗忘而与长期依赖性作斗争,随着序列的进展,早期的信息可能会丢失。
  • Transformers:Transformers 使用一种称为“注意力”的机制来处理输入。与 RNN 不同,Transformer 同时查看整个序列,将每个单词与其他单词进行比较。这种方法消除了遗忘问题,因为每个单词都可以直接访问整个输入上下文。由于这种能力,Transformers 在文本生成和情感分析等任务中表现出了卓越的性能。

并行化

  • RNN: RNN 的顺序性质意味着模型必须完成对输入的一部分的处理,然后才能继续处理下一部分。这是非常耗时的,因为每一步都依赖于前一步。
  • 变压器:变压器同时处理输入的所有部分,因为它们的架构不依赖于顺序隐藏状态。这使得它们更加可并行化和高效。例如,如果处理一个句子每个单词需要 5 秒,则 RNN 处理 5 个单词的句子需要 25 秒,而 Transformer 只需要 5 秒。

实际意义

由于这些优点,变压器在工业中得到越来越广泛的应用。然而,RNN,特别是长短期记忆 (LSTM) 网络,对于更简单的任务或处理较短的序列时仍然有效。 LSTM 通常用作大型机器学习架构中的关键内存存储模块。

RNN 与 CNN

CNN 在处理数据和运行机制方面与 RNN 有着根本的不同。

数据类型

  • RNN: RNN 专为序列数据(例如文本或时间序列)而设计,其中数据点的顺序很重要。
  • CNN:CNN 主要用于空间数据,例如图像,其重点是相邻数据点之间的关系(例如,图像中像素的颜色、强度和其他属性与附近其他像素的属性密切相关)像素)。

手术

  • RNN: RNN 维护整个序列的记忆,使它们适合上下文和序列很重要的任务。
  • CNN:CNN 通过卷积层查看输入的局部区域(例如,相邻像素)来进行操作。这使得它们对于图像处理非常有效,但对于顺序数据则不太有效,因为长期依赖性可能更重要。

输入长度

  • RNN: RNN 可以处理结构定义较少的可变长度输入序列,使其能够灵活地处理不同的顺序数据类型。
  • CNN:CNN 通常需要固定大小的输入,这可能是处理可变长度序列的限制。

RNN 的应用

RNN 由于能够有效处理顺序数据而被广泛应用于各个领域。

自然语言处理

语言是一种高度顺序的数据形式,因此 RNN 在语言任务上表现良好。 RNN 在文本生成、情感分析、翻译和摘要等任务中表现出色。借助像 PyTorch 这样的库,有人可以使用 RNN 和几 GB 的文本示例创建一个简单的聊天机器人。

语音识别

语音识别的核心是语言,因此也是高度连续的。多对多 RNN 可用于此任务。在每一步中,RNN 都会接收之前的隐藏状态和波形,输出与波形相关的单词(基于该点之前的句子上下文)。

音乐一代

音乐也是高度连续的。歌曲中之前的节拍强烈影响未来的节拍。多对多 RNN 可以将一些起始节拍作为输入,然后根据用户的需要生成其他节拍。或者,它可以接受“旋律爵士乐”之类的文本输入,并输出旋律爵士乐节拍的最佳近似值。

RNN 的优点

尽管 RNN 不再是事实上的 NLP 模型,但由于一些因素,它们仍然有一些用途。

良好的顺序性能

RNN,尤其是 LSTM,在顺序数据上表现良好。 LSTM 凭借其专门的内存架构,可以管理长而复杂的顺序输入。例如,在 Transformer 时代之前,谷歌翻译曾经在 LSTM 模型上运行。当基于变压器的网络组合形成更先进的架构时,LSTM 可用于添加战略内存模块。

更小、更简单的模型

RNN 的模型参数通常比 Transformer 少。 Transformer 中的注意力层和前馈层需要更多参数才能有效运行。 RNN 可以用更少的运行和数据示例进行训练,从而使其对于更简单的用例更加高效。这会产生更小、更便宜、更高效的模型,但仍然具有足够的性能。

RNN 的缺点

RNN 失宠是有原因的:Transformers 尽管尺寸更大,训练过程也更大,但没有与 RNN 相同的缺陷。

内存有限

标准 RNN 中的隐藏状态严重偏差最近的输入,使其难以保留长期依赖关系。具有长输入的任务在 RNN 中表现不佳。虽然 LSTM 旨在解决这个问题,但它们只是缓解了这个问题,并没有完全解决它。许多人工智能任务需要处理长输入,这使得有限的内存成为一个重大缺点。

不可并行化

RNN 模型的每次运行都取决于前一次运行的输出,特别是更新的隐藏状态。因此,必须针对输入的每个部分顺序处理整个模型。相比之下,Transformer 和 CNN 可以同时处理整个输入。这允许跨多个 GPU 进行并行处理,从而显着加快计算速度。 RNN 缺乏并行性导致训练速度较慢、输出生成速度较慢以及可学习的最大数据量较低。

梯度问题

训练 RNN 可能具有挑战性,因为反向传播过程必须经历每个输​​入步骤(随时间的反向传播)。由于时间步长较多,指示应如何调整每个模型参数的梯度可能会退化并变得无效。梯度可能会因消失而失败,这意味着它们变得非常小,模型无法再使用它们来学习,或者因爆炸而失败,其中梯度变得非常大,模型超出其更新,从而使模型无法使用。平衡这些问题是很困难的。