第10章 循环神经网络——语言模型
循环神经网络(recurrent neural network,RNN)是一种深度学习架构,它广泛地应用在自然语言处理(natural language processing,NLP)中。这类架构使得开发人员能够为当前的预测提供上下文信息,并且一些特别的架构可以在任何输入序列中处理长期依赖问题。本章将展示如何构建一个序列到序列的模型,它将在许多NLP应用中发挥作用。本章将通过构建一个字符级的语言模型来解释这些概念,并让读者了解模型如何产生和原输入序列相似的句子。
本章将包含以下主题。
- RNN的直观解释。
- LSTM网络。
- 语言模型的实现。
10.1 RNN的直观解释
到目前为止,本书介绍的所有深度学习架构都无法记住它们之前接收的输入信息。比如,如果给一个前馈神经网络(FNN)输入如HELLO这样的一串字符,当网络接收到E的时候,它并没有保留(或者说遗忘了)它刚刚读取了H的信息。这对于基于序列的学习来说是一个很严重的问题。同时由于它没有任何它之前读取的字母的记忆,因此这类网络很难用来预测下一个字符。这对诸如语言建模、机器翻译、语音识别等应用是没有意义的。
出于这个原因,我们引入了RNN,RNN是一组能够保留并记住之前遇到过的信息的深度学习架构。
现在解释一下RNN是怎么在相同的字符序列HELLO上工作的。当RNN细胞(单元)接收到E这个输入时,它也接收到了它早先接收到的字符H。将现在的字符与过去的字符一起作为RNN细胞的输入给这些架构带来了很大的好处,即短期记忆,还使得这些架构可用于在这个特定的字符序列中预测(猜测)H之后最可能出现的字符,即L。
之前提到的架构会为输入分配权重;RNN遵循相同的优化过程为其多个输入(当前输入和过去输入)分配权重。因此,在这种情况下,网络将为它们中的每一个输入分配一个权重矩阵。为了做到这一点,我们将使用 ...
Get 深度学习:核心原理与案例分析 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.