什么是循环神经网络 (RNN)?
了解循环神经网络 (RNN) 如何使用序列数据来解决语言翻译和语音识别中常见的时间问题。
黑色和蓝色背景
什么是循环神经网络 (RNN)?

循环神经网络 (RNN) 是一种使用序列数据或时序数据的人工神经网络。 这些深度学习算法常用于顺序或时间问题,如语言翻译、自然语言处理 (nlp)、语音识别、图像字幕等;它们包含在一些流行的应用中,比如 Siri、语音搜索和 Google Translate。 与前馈神经网络和卷积神经网络 (CNN) 一样,循环神经网络利用训练数据进行学习。 区别在于“记忆”,因为它从先前的输入中获取信息,以影响当前的输入和输出。 虽然传统的深度神经网络假设输入和输出相互独立的,但循环神经网络的输出依赖于序列中先前的元素。 尽管未来的活动也可能有助于确定特定序列的输出,但是单向循环神经网络无法在预测中说明这些事件。

让我们举个惯用语的例子来帮助解释循环神经网络 (RNN):“feeling under the weather”(感觉身体不舒服),这通常是指某人病了。 为了体现出这个惯用语的意思,必须按这个特定顺序进行表达。 因此,循环神经网络需要考虑到该惯用语中每个单词的位置,并使用这些信息来预测序列中的下一个单词。

循环神经网络 (RNN) 的另一个显著特征是它们在每个网络层中共享参数。 虽然前馈网络的每个节点都有不同的权重,但循环神经网络在每个网络层都共享相同的权重参数。 尽管如此,这些权重仍可通过反向传播和梯度下降过程进行调整,以促进强化学习。

循环神经网络 (RNN) 利用随时间推移的反向传播 (BPTT) 算法来确定梯度,这与传统的反向传播略有不同,因为它特定于序列数据。 BPTT 的原理与传统的反向传播相同,模型通过计算输出层与输入层之间的误差来训练自身。 这些计算帮助我们适当地调整和拟合模型的参数。 BPTT 与传统方法的不同之处在于,BPTT 会在每个时间步长对误差求和,而前馈网络则不需要对误差求和,因为它们不会在每层共享参数。

通过这个过程,循环神经网络 (RNN) 往往会产生两个问题,即梯度爆炸和梯度消失。 这些问题由梯度的大小定义,也就是损失函数沿着错误曲线的斜率。 如果梯度过小,它会更新权重参数,让梯度继续变小,直到变得可以忽略,即为 0。 发生这种情况时,算法就不再学习。 如果梯度过大,就会发生梯度爆炸,这会导致模型不稳定。 在这种情况下,模型权重会变得太大,并最终被表示为 NaN。 这些问题的一种解决方案就是减少神经网络中隐藏层的数量,以便消除循环神经网络 (RNN) 模型中的一些复杂性。

特色产品

Watson Studio

Watson Machine Learning Accelerator

循环神经网络 (RNN) 的类型

前馈网络将一个输入映射到一个输出,我们在上面的示意图中以这种方式展示了循环神经网络,但实际上它们并没有这种约束。 相反,它们的输入和输出的长度可变,不同类型的循环神经网络 (RNN) 有着不同的用例,例如音乐生成、观点分类和机器翻译。

循环神经网络 (RNN) 常用激活函数

正如有关神经网络的学习文章中所讨论的那样,激活函数决定了神经元是否应该被激活。 这种非线性函数通常将特定神经元的输出转换为 0 到 1 或 -1 到 1 之间的值。 

循环神经网络 (RNN) 架构变体

双向循环神经网络(BRNN):这是循环神经网络 (RNN) 的网络架构变体。 单向循环神经网络 (RNN) 只能从先前输入中抽取数据,做出有关当前状态的预测;而双向循环神经网络 (RNN) 还可以拉取未来的数据,从而提高预测的精度。 回到前面那个“feeling under the weather”的例子,如果模型知道该序列中的最后一个单词是“weather”,就更有可能预测该词组中的第二个单词是“under”。

长短期记忆 (LSTM):这是一种比较流行的循环神经网络 (RNN) 架构,由 Sepp Hochreiter 和 Juergen Schmidhuber 提出,用于解决梯度消失问题。 在他们的论文(链接位于 IBM 外部)中,他们着力解决长期依赖问题。 也就是说,如果影响当前预测的先前状态不是最近发生的,那么循环神经网络 (RNN) 模型可能无法准确预测当前状态。 例如,假设我们想要预测以下斜体句子“Alice is allergic to nuts. She can't eat peanut butter.”(Alice 对坚果过敏。她不能吃花生酱)。 “坚果过敏”上下文可以帮助我们预测不能吃的食物含有坚果。 但是,如果上下文是之前的几句话,那么循环神经网络 (RNN) 就很难甚至无法连接信息。 作为补救措施,LSTM 在神经网络的隐藏层中包含一些“元胞”(cell),共有三个门:一个输入门、一个输出门和一个遗忘门。 这些门控制着预测网络中的输出所需信息的流动。  例如,如果在先前的句子中,性别代词(比如 she)重复出现了多次,那么可将其从元胞状态中排除。

门控循环单元 (GRU):这种循环神经网络 (RNN) 变体类似于 LSTM,因为它也旨在解决 RNN 模型的短期记忆问题。 但它不使用“元胞状态”来调节信息,而是使用隐藏状态;它不使用三个门,而是两个:一个重置门和一个更新门。 类似于 LSTM 中的门,重置门和更新门控制要保留哪些信息以及保留多少信息。

循环神经网络 (RNN) 与 IBM Cloud

几十年来,IBM 已成为人工智能技术和神经网络开发的先驱,而 IBM Watson 的开发和演进更添一臂之力。 如果企业希望使用经过验证的分层 AI 采用和实施方法,将高级自然语言处理和深度学习技术运用于系统,那么 Watson 现在就是值得信赖的解决方案。

包括 IBM Watson Machine Learning 在内的 IBM 产品还支持热门的 Python 库,如 TensorFlow、Keras 和 PyTorch,这些库常用于循环神经网络 (RNN)。 通过使用像 IBM Watson StudioWatson Machine Learning 这样的工具,企业可以无缝地将开源 AI 项目整合到生产环境,同时在任何云中部署和运行自己的模型。

有关如何开始使用人工智能技术的更多信息,请探索 IBM Watson Studio

注册一个 IBMid 并创建 IBM Cloud 帐户
相关解决方案
Watson Studio

在任何云中构建和扩展值得信赖的 AI。 实现 ModelOps 的 AI 生命周期自动化。

探索 IBM Watson Studio
Cloud Paks

AI 驱动的混合云软件。

探索 IBM Cloud Paks
IBM Cloud 解决方案

混合。 开放。 永续。 您的数字化转型平台和合作伙伴。

探索云解决方案
资源 Watson Studio

在任何云中构建和扩展值得信赖的 AI。 实现 ModelOps 的 AI 生命周期自动化。

Watson Machine Learning Accelerator

加速深度学习工作负载。 利用 AI 模型训练和推理,加快实现价值。

采取下一步行动

了解 IBM Watson 如何成为值得信赖的解决方案,帮助企业将高级自然语言处理和深度学习技术运用于系统。

大幅提速