循环神经网络 (RNN) 在 TensorFlow 中

17 Mar 2025 | 4 分钟阅读

循环神经网络 (RNN) 是一种人工神经网络,主要用于语音识别自然语言处理 (NLP)。 RNN 用于深度学习以及开发模拟人脑中神经元活动的模型。

循环网络旨在识别数据序列中的模式,例如文本、基因组、手写体、口语和来自传感器、股票市场和政府机构的数值时间序列数据。

循环神经网络看起来类似于传统的神经网络,只是在神经元中添加了一个记忆状态。计算包括一个简单的记忆。

循环神经网络是一种面向深度学习的算法,它遵循一种顺序方法。在神经网络中,我们始终假设每个输入和输出都依赖于所有其他层。这些类型的神经网络被称为循环网络,因为它们按顺序执行数学计算。

Recurrent Neural Network in TensorFlow

RNN 的应用

当涉及到预测未来时,RNN 有多种用途。在金融行业中,RNN 可以帮助预测股票价格或股市走势(即正向负向)。

RNN 被用于自动驾驶汽车,因为它可以预测车辆的路线以避免交通事故。

RNN 广泛应用于图像字幕、文本分析、机器翻译情感分析例如,应该使用电影评论来了解观众在观看电影后感知到的感受。当电影公司没有更多时间审查、合并、标记和分析评论时,自动化这项任务非常有用。机器可以以更高的准确性完成这项工作。

以下是 RNN 的应用

1. 机器翻译

我们在翻译引擎中使用循环神经网络将文本从一种语言翻译成另一种语言。它们通过与其他模型(如 LSTM(长短期记忆)s)的组合来完成此操作。

Recurrent Neural Network in TensorFlow

2. 语音识别

循环神经网络已经取代了使用隐马尔可夫模型的传统语音识别模型。这些循环神经网络,连同 LSTM,更适合于对语音进行分类并将其转换为文本而不会丢失上下文。

Recurrent Neural Network in TensorFlow

3. 情感分析

我们使用情感分析来判断句子的积极性、消极性或中立性。因此,RNN 最擅长按顺序处理数据以找到句子的情感。

Recurrent Neural Network in TensorFlow

4. 自动图像标记器

RNN 与卷积神经网络结合使用,可以检测图像并以标签的形式提供它们的描述。例如,一张狐狸跳过栅栏的照片使用 RNN 解释得更好。

Recurrent Neural Network in TensorFlow

RNN 的局限性

RNN 应该在时间上携带信息。但是,当时间步太长时,传播所有这些信息非常具有挑战性。当一个网络有太多深层时,它变得无法训练。这个问题称为:梯度消失问题。

如果我们记得,神经网络会使用梯度下降算法来更新权重。当网络下降到较低层时,梯度会变得更小。

梯度保持不变,这意味着没有改进的空间。该模型从其梯度的变化中学习;这种变化会影响网络的输出。如果梯度差异太小(即,权重变化很小),则系统无法学习任何东西,因此无法输出。因此,面临梯度消失问题的系统无法收敛到正确的解决方案。

循环神经网络将执行以下操作。

循环网络首先将独立的激活转换为依赖的激活。它还为所有层分配相同的权重和偏差,这降低了 RNN 的参数复杂性。它通过将先前的输出作为下一个层的输入,为记忆先前输出提供了一个标准平台。

这三个具有相同权重和偏差的层,合并成一个循环单元。

Recurrent Neural Network in TensorFlow

用于计算当前状态 -

ht =f(ht-1, Xt)

其中 ht = 当前状态
Ht-1 = 先前状态
Xt = 输入状态

要应用激活函数 tanh,我们有 -

ht = tanh (Whhht-1+ WxhXt)

其中

Whh = 循环神经元的权重,
Wxh = 输入神经元的权重

计算输出的公式

Yt = Whyht

通过 RNN 训练

  • 网络采用输入的单个时间步。
  • 我们可以通过当前输入和先前状态来计算当前状态。
  • 现在,当前状态通过 ht-1 用于下一个状态。
  • 有 n 个步骤,最后,所有信息都可以连接起来。
  • 在完成所有步骤后,最后一步是计算输出。
  • 最后,我们通过计算实际输出和预测输出之间的差异来计算误差。
  • 将误差反向传播到网络中以调整权重并产生更好的结果。

下一个主题RNN 的工作原理