循环神经网络 (RNN) 是一种使用序列数据或时序数据的人工神经网络。 这些深度学习算法常用于顺序或时间问题,如语言翻译、自然语言处理 (nlp)、语音识别、图像字幕等;它们包含在一些流行的应用中,比如 Siri、语音搜索和 Google Translate。 与前馈神经网络和卷积神经网络 (CNN) 一样,循环神经网络利用训练数据进行学习。 区别在于“记忆”,因为它从先前的输入中获取信息,以影响当前的输入和输出。 虽然传统的深度神经网络假设输入和输出相互独立的,但循环神经网络的输出依赖于序列中先前的元素。 尽管未来的活动也可能有助于确定特定序列的输出,但是单向循环神经网络无法在预测中说明这些事件。
让我们举个惯用语的例子来帮助解释 RNN:“feeling under the weather”(感觉身体不舒服),这通常是指某人病了。 为了体现出这个惯用语的意思,必须按这个特定顺序进行表达。 因此,循环神经网络需要考虑到该惯用语中每个单词的位置,并使用这些信息来预测序列中的下一个单词。
循环神经网络的另一个显著特征是它们在每个网络层中共享参数。 虽然前馈网络的每个节点都有不同的权重,但循环神经网络在每个网络层都共享相同的权重参数。 尽管如此,这些权重仍可通过反向传播和梯度下降过程进行调整,以促进强化学习。
循环神经网络利用随时间推移的反向传播 (BPTT) 算法来确定梯度,这与传统的反向传播略有不同,因为它特定于序列数据。 BPTT 的原理与传统的反向传播相同,模型通过计算输出层与输入层之间的误差来训练自身。 这些计算帮助我们适当地调整和拟合模型的参数。 BPTT 与传统方法的不同之处在于,BPTT 会在每个时间步长对误差求和,而前馈网络则不需要对误差求和,因为它们不会在每层共享参数。
通过这个过程,RNN 往往会产生两个问题,即梯度爆炸和梯度消失。 这些问题由梯度的大小定义,也就是损失函数沿着错误曲线的斜率。 如果梯度过小,它会更新权重参数,让梯度继续变小,直到变得可以忽略,即为 0。 发生这种情况时,算法就不再学习。 如果梯度过大,就会发生梯度爆炸,这会导致模型不稳定。 在这种情况下,模型权重会变得太大,并最终被表示为 NaN。 这些问题的一种解决方案就是减少神经网络中隐藏层的数量,以便消除 RNN 模型中的一些复杂性。
Watson Studio
Watson Machine Learning Accelerator
前馈网络将一个输入映射到一个输出,我们在上面的示意图中以这种方式展示了循环神经网络,但实际上它们并没有这种约束。 相反,它们的输入和输出的长度可变,不同类型的 RNN 有着不同的用例,例如音乐生成、观点分类和机器翻译。
双向循环神经网络(BRNN):这是 RNN 的网络架构变体。 单向 RNN 只能从先前输入中抽取数据,做出有关当前状态的预测;而双向 RNN 还可以拉取未来的数据,从而提高预测的精度。 回到前面那个“feeling under the weather”的例子,如果模型知道该序列中的最后一个单词是“weather”,就更有可能预测该词组中的第二个单词是“under”。
长短期记忆 (LSTM):这是一种比较流行的 RNN 架构,由 Sepp Hochreiter 和 Juergen Schmidhuber 提出,用于解决梯度消失问题。 在他们的论文 (PDF, 388 KB)(链接位于 IBM 外部)中,他们着力解决长期依赖问题。 也就是说,如果影响当前预测的先前状态不是最近发生的,那么 RNN 模型可能无法准确预测当前状态。 例如,假设我们想要预测以下斜体句子“Alice is allergic to nuts. She can't eat peanut butter.”(Alice 对坚果过敏。她不能吃花生酱)。 “坚果过敏”上下文可以帮助我们预测不能吃的食物含有坚果。 但是,如果上下文是之前的几句话,那么 RNN 就很难甚至无法连接信息。 作为补救措施,LSTM 在神经网络的隐藏层中包含一些“元胞”(cell),共有三个门:一个输入门、一个输出门和一个遗忘门。 这些门控制着预测网络中的输出所需信息的流动。 例如,如果在先前的句子中,性别代词(比如 she)重复出现了多次,那么可将其从元胞状态中排除。
门控循环单元 (GRU):这种 RNN 变体类似于 LSTM,因为它也旨在解决 RNN 模型的短期记忆问题。 但它不使用“元胞状态”来调节信息,而是使用隐藏状态;它不使用三个门,而是两个:一个重置门和一个更新门。 类似于 LSTM 中的门,重置门和更新门控制要保留哪些信息以及保留多少信息。
几十年来,IBM 已成为人工智能技术和神经网络开发的先驱,而 IBM Watson 的开发和演进更添一臂之力。 如果企业希望使用经过验证的分层 AI 采用和实施方法,将高级自然语言处理和深度学习技术运用于系统,那么 Watson 现在就是值得信赖的解决方案。
包括 IBM Watson Machine Learning 在内的 IBM 产品还支持热门的 Python 库,如 TensorFlow、Keras 和 PyTorch,这些库常用于循环神经网络。 通过使用像 IBM Watson Studio 和 Watson Machine Learning 这样的工具,企业可以无缝地将开源 AI 项目整合到生产环境,同时在任何云中部署和运行自己的模型。
有关如何开始使用人工智能技术的更多信息,请探索 IBM Watson Studio。