递归神经网络(RNN)是流行的模型,在许多NLP任务中显示出巨大的前景。但是,尽管它们最近很受欢迎,但我只找到了有限数量的资源来全面解释RNN是如何工作的,以及如何实现它们。
作为本教程的一部分,我们将实现一个基于递归神经网络的语言模型。语言模型的应用是双重的:首先,它允许我们根据任意句子在现实世界中发生的可能性对任意句子进行评分。这为我们提供了语法和语义正确性的衡量标准。此类模型通常用作机器翻译系统的一部分。其次,语言模型允许我们生成新文本(我认为这是更酷的应用程序)。在莎士比亚上训练语言模型可以让我们生成类似莎士比亚的文本
我假设你对基本的神经网络有些熟悉。如果你不是,你可能想转到从头开始实现神经网络,它指导你完成非循环网络背后的想法和实现。
什么是核糖核酸?
RNN背后的想法是利用顺序信息。在传统的神经网络中,我们假设所有输入(和输出)都是相互独立的。但对于许多任务来说,这是一个坏主意。如果你想预测句子中的下一个单词,你最好知道哪些单词在它之前。RNN 之所以被称为递归,是因为它们对序列的每个元素执行相同的任务,输出依赖于前面的计算。
考虑RNN的另一种方法是,它们有一个“记忆”,可以捕获有关到目前为止计算的信息。理论上,RNN可以在任意长的序列中使用信息,但在实践中,它们仅限于回顾固定数量的步骤(稍后会详细介绍)。下面是一个典型的RNN的样子:
递归神经网络及其前向计算所涉及的计算的时间展开
上图显示了RNN被展开(或展开)到一个完整的网络中。通过展开,我们只是意味着我们写出完整序列的网络。例如,如果我们关心的序列是一个 5 个单