作为最流行的机器学习算法之一,神经网络在准确性和速度方面都优于其他算法。因此,透彻了解神经网络是什么、它是如何构建的以及它的范围和局限性是至关重要的。
循环神经网络 (RNN) 是一种处理时间序列或顺序数据的人工神经网络。这些深度学习算法通常用于语言翻译、自然语言处理 (NLP)、语音识别和图像字幕等顺序或时间问题;它们包含在 Siri、语音搜索和谷歌翻译等流行应用程序中。循环神经网络,如前馈和卷积神经网络 (CNN),从训练数据中学习。
什么是循环神经网络?
递归神经网络 (RNN ) 是一种神经网络,其中前一步的输出作为当前步骤的输入。在传统的神经网络中,所有的输入和输出都是相互独立的;然而,在预测句子的下一个词时,需要前面的词,因此必须记住前面的词。因此,RNN 诞生了,它借助隐藏层解决了这个问题。隐藏状态,它会记住一些关于序列的信息,是 RNN 的主要和最重要的特征。
RNN 有一个“记忆”,可以记住所有已经计算过的东西。它对每个输入使用相同的参数,因为它对所有输入或隐藏层执行相同的任务以生成输出。与其他神经网络不同,这降低了参数的复杂性。
为了确定梯度,递归神经网络使用时间反向传播 (BPTT) 算法,该算法与传统的反向传播略有不同,因为它特定于序列数据。BPTT 的工作原理与传统的反向传播相同,其中模型通过计算从输出层到输入层的误差来训练自己。这些计算使我们能够适当地调整和拟合模型的参数。BPTT 与传统方法的不同之处在于它在每个时间步对误差求和,而前馈网络不必对误差求和,因为参数不跨层共享。
RNN 在此过程中经常遇到两个问题:梯度爆炸和梯度消失。梯度的大小,即损失函数沿误差曲线的斜率,定义了这些问题。当梯度太小时,它会继续收缩,更新权重参数,直到它们变得无关紧要——即 0——然后停止。发生这种情况时,算法将停止学习。当梯度太大时,它会爆炸,导致模型不稳定。在这种情况下,模型权重将变得太大,并且将表示为 NaN。解决这些问题的一种方法是减少神经网络中隐藏层的数量,从而消除 RNN 模型中的一些复杂性。
循环神经网络如何工作?
要完全理解 RNN,您必须首先理解“正常”的前馈神经网络和时序数据。
顺序数据是简单的有序数据,其中相关项一个接着一个。财务数据或 DNA 序列是两个例子。最常见的顺序数据类型可能是时间序列数据,它只是按时间顺序列出的一系列数据点。
RNN 和前馈神经网络的名称来源于它们传递信息的方式。
在前馈神经网络中,信息仅沿一个方向流动:从输入层通过隐藏层流向输出层。数据直接通过网络流动。
前馈神经网络对它们接收到的输入没有记忆并且预测能力很差。前馈网络没有时间顺序的概念,因为它只考虑当前输入。除了训练之外,它根本无法回忆起过去的任何事情。
RNN 中的信息在循环中循环。当它做出决定时,它会考虑当前的输入以及它从以前的输入中学到的东西。
下面的两张图显示了 RNN 和前馈神经网络之间的信息流差异。
传统的 RNN 具有短期记忆。当与 LSTM 结合时,它们具有长期记忆(稍后会详细介绍)。
解释递归神经网络记忆概念的另一种有效方法是举个例子:考虑一个正常的前馈神经网络,它接收单词“神经元”作为输入并逐个字符地处理它。当它到达字符“r”时,它已经忘记了“n”、“e”和“u”,这使得这种类型的神经网络几乎不可能预测下一个会出现哪个字符。
另一方面,循环神经网络由于其内部记忆可以记住这些字符。它生成输出、复制它并将其循环回网络。
循环神经网络的类型
传统的神经网络在处理顺序数据时效率低下,因为它们具有独立的输入和输出层。因此,开发了一种称为循环神经网络的新神经网络,用于将先前输出的结果存储在内部存储器中。然后将这些结果用作网络的输入。因此,它可以用于模式识别、语音和语音识别、自然语言处理和时间序列预测等应用。
RNN 中的隐藏层用作存储循环中层输出的内存位置。
四种最常见的递归神经网络类型如下:
一对一:
一对一 RNN 是最基本的,具有单个输入和单个输出。它的功能类似于具有固定输入和输出大小的传统神经网络。图像分类包含一对一应用程序。
多对一:
当给定单个输入时,一对多 RNN 会产生多个输出。它接受固定大小的输入并返回一系列数据输出。它在音乐生成和图像字幕方面有应用。
一对多:
当多个输入单元或它们的序列需要单个输出时,使用多对一。固定输出需要一系列输入。情感分析是这种类型的递归神经网络的一个例子。
多对多:
多对多是一种从一系列输入单元生成一系列输出数据的方法。
这种类型的 RNN 进一步细分为两个子类:
- Equal Unit Size:在这种情况下,输入和输出单元的数量相同。名称实体识别是一个流行的应用程序。
- 单元大小不等: 输入和输出具有不同数量的单元。它的使用可以在机器翻译中找到。
RNN 网络的应用
现在您知道什么是递归神经网络,让我们看一下 RNN 的常见应用。
机器翻译:
RNN 可用于构建深度学习模型,无需人工干预即可将文本从一种语言翻译成另一种语言。例如,您可以将文本从您的母语翻译成英语。
文字创作:
RNN 还可用于构建用于文本生成的深度学习模型。基于文本中先前使用的单词/字符序列,经过训练的模型可以学习单词/字符出现的可能性。可以在字符、n-gram、句子或段落级别训练模型。
图片识别:
创建描述图像内容的文本的过程称为图像字幕。图像的内容可以描述对象以及对象在图像上的动作。例如,在下图中,使用 RNN 训练的深度学习模型可以将图像描述为“一位穿绿色外套的女士正在树下看书”。
语音识别:
这也称为自动语音识别 (ASR),它能够将人类语音转换为书面或文本格式。不要混淆语音识别和语音识别;语音识别主要侧重于将语音数据转换为文本,而语音识别则识别用户的声音。
各种用户日常使用的语音识别技术包括 Alexa、Cortana、Google Assistant 和 Siri。
时间序列的预测:
在对历史时间戳数据进行训练后,RNN 可用于创建预测未来结果的时间序列预测模型。股票市场就是一个很好的例子。
您可以使用股票市场数据构建一个机器学习模型,该模型可以根据模型从历史数据中学到的知识来预测未来的股票价格。这可以帮助投资者做出数据驱动的投资决策。
总结
RNN 有一个内部存储器,允许它记住或记忆来自它接收到的输入的信息,这有助于系统获得上下文。因此,如果您有顺序数据,例如时间序列,RNN 将非常适合处理它。
CNN 或前馈神经网络无法做到这一点,因为它们无法对前后输入之间的相关性进行排序。
RNN 在谷歌的语音搜索和苹果的 Siri 等热门产品中使用,用于处理用户输入并预测输出。
循环神经网络可以总结为一种多功能工具,可以在各种情况下使用。它们被用于多种语言建模和文本生成方法中。它们也用于语音识别。
当与卷积神经网络结合使用时,这种类型的神经网络用于为未标记的图像生成标签。这种组合效果非常好。
然而,递归神经网络有一个缺陷。他们很难学习长期依赖关系,这意味着他们不了解被多个步骤分隔的数据之间的关系。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:递归神经网络 (RNN)的类型和应用 - Python技术站