主页
topics
什么是循环神经网络 (RNN)?
RNN 可用于根据过往的每日洪水、潮汐和气象数据预测每日洪水水位。但 RNN 也可用于解决序数或时间问题,例如语言翻译、自然语言处理 (NLP)、语音识别和图像字幕。RNN 已整合到 Siri、语音搜索和 Google Translate 等流行应用程序中。
使用此模型选择框架选择最合适的模型,同时平衡性能要求与成本、风险和部署需求。
与前馈和卷积神经网络 (CNN) 一样,循环神经网络利用训练数据进行学习。区别在于它们的“记忆”,因为它们从先前的输入中获取信息,用于影响当前的输入和输出。传统的深度神经网络假设输入和输出相互独立,而循环神经网络的输出则取决于序列中的先验元素。虽然未来的事件也有助于确定给定序列的输出,但单向递归神经网络无法在其预测中解释这些事件。
我们用一个俗语来辅助解释 RNN,例如 “feeling under the weather” 通常用来形容某人生病了。为了赋予这个俗语意义,需要以特定的顺序来进行表达。因此,循环网络需要考虑俗语中每个单词的位置,并利用这些信息来预测序列中的下一个单词。
循环网络的另一个显著特征是它们在网络的每一层共享参数。前馈网络在每个节点上具有不同的权重,而循环神经网络在网络的每一层内共享相同的权重参数。也就是说,这些权重仍然在反向传播和梯度下降过程中进行调整,以促进强化学习。
循环神经网络使用通过时间的反向传播 (BPTT) 算法来确定梯度,专门针对序列数据,因此与传统的反向传播略有不同。BPTT 的原理与传统的反向传播相同,即模型通过计算从输出层到输入层的误差进行自我训练。这些计算可支持我们适当调整和拟合模型的参数。BPTT 与传统方法的不同之处在于,BPTT 对每个时间步长的误差进行求和,而前馈网络不需要对误差进行求和,因为它们不会在每一层共享参数。
在此过程中,RNN 往往会遇到两个问题,称为梯度爆炸和梯度消失。这些问题由梯度的大小决定,梯度是沿误差曲线的损失函数的斜率。当梯度过小时,它会继续变小,更新权重参数,直到它们变得微不足道,即零 (0)。出现这种情况时,算法将不再学习。梯度爆炸:梯度太大时会发生这种情况,并创建不稳定的模型。这种情况下,模型权重会变得过大,最终表示为 NaN。针对此类问题的一种解决方案是减少神经网络中的隐藏层数量,从而消除 RNN 模型中的复杂性。
前馈网络将一个输入映射到一个输出,我们在上面的示意图中以这种方式展示了循环神经网络,但实际上它们并没有这种约束。 相反,它们的输入和输出的长度可变,不同类型的循环神经网络 (RNN) 有着不同的用例,例如音乐生成、观点分类和机器翻译。
热门的 RNN 架构版本包括
单向 RNN 只能从先前输入中抽取数据,做出有关当前状态的预测;而双向循环神经网络 (BRNN) 还可以拉取未来的数据,从而提高预测的准确性。回到前面“feeling under the weather”的示例,如果基于 BRNN 的模型知道序列中的最后一词是“weather”,它就更有可能预测词组中的第二个词是“under”。
LSTM 是一款热门的 RNN 架构,由 Sepp Hochreiter 和 Juergen Schmidhuber 提出,作为梯度消失问题的解决方案。在他们的文章(链接位于 ibm.com 站外)中,他们致力于解决长期依赖问题。也就是说,如果影响当前预测的先前状态不是最近的状态,则 RNN 模型可能无法准确预测当前状态。
例如,假设我们想要预测这句话中的斜体单词,“Alice 对坚果过敏。她不能吃花生酱。”坚果过敏的背景可以帮助我们预测不能吃的食物含有坚果。但是,如果这个背景来自再之前的几句话,那么 RNN 将难以甚至不可能连接信息。
为了解决这个问题,LSTM 在神经网络的隐藏层中设有“单元”,其中有三个门,即输入门、输出门和遗忘门。这些门控制着预测网络输出所需的信息流。例如,如果第三人称代词(例如“她”)在前面的句子中多次重复出现,则可以将其从单元状态中排除。
门控循环单元 (GRU) 类似于 LSTM,也可以解决 RNN 模型的短期记忆问题。但是它不使用“元胞状态”调节信息,而是使用隐藏状态;它使用两个门(而非三个门):一个重置门和一个更新门。类似于 LSTM 中的门,重置门和更新门控制要保留哪些信息以及保留多少信息。
几十年来,IBM 已成为人工智能技术和神经网络开发的先驱,而 IBM Watson 的开发和演进更添一臂之力。 如果企业希望使用经过验证的分层 AI 采用和实施方法,将高级自然语言处理和深度学习技术运用于系统,那么 Watson 现在就是值得信赖的解决方案。
包括 IBM Watson Machine Learning 在内的 IBM 产品还支持热门的 Python 库,如 TensorFlow、Keras 和 PyTorch,这些库常用于循环神经网络 (RNN)。 通过使用像 IBM Watson Studio 和 Watson Machine Learning 这样的工具,企业可以无缝地将开源 AI 项目整合到生产环境,同时在任何云中部署和运行自己的模型。
有关如何开始使用人工智能技术的更多信息,请探索 IBM Watson Studio。
IBM watsonx 集业务工具、应用程序和解决方案于一体,旨在降低 AI 使用成本和障碍,同时优化 AI 结果和使用可靠性。
IBM watsonx Assistant 是一款商用 AI 聊天机器人。凭借这项企业人工智能技术,用户可构建会话式 AI 解决方案。
构建、运行和管理 AI 模型。使用 PyTorch、TensorFlow 和 scikit-learn 等开源框架,Jupyter Notebook、JupyterLab 和 CLI 等工具,或 Python、R 和 Scala 等语言,在任何云端准备数据并构建模型。