RECURRENT NEURAL NETWORKS TUTORIAL

RECURRENT NEURAL NETWORKS TUTORIAL

循环神经网络(Recurrent Neural Networks, RNNs, 递归神经网络)是一种在自然语言处理方面大有前途的模型。但有别于它的流行,我很难找到关于RNN的原理与实现的资源。这就是我要写这篇教程的原因。这是一篇系列教程,我将从如下几个方面来讲解,

1. RNN基础 Introduction to RNNs (this post)

2. 使用Python与Theano来实现RNN Implementing a RNN using Python and Theano

3. 理解定时后向传播算法与梯度消失问题 Understanding the Backpropagation Through Time (BPTT) algorithm and the vanishing gradient problem

4. 实现一个GRU/LSTM RNN Implementing a GRU/LSTM RNN

在教程中,我们会实现一个基于RNN的语言模型recurrent neural network based language model。语言模型的应用将包括两部分:

1. 允许我们给任意的句子评分,来评价它是否是一个真实的句子。这是对于语法和语义正确性的一种度量。这类模型往往用作机器翻译的一部分。

2. 允许我们生成新的文本(我认为这要酷得多)。训练基于莎士比亚的语言模型,使我们可以生成类似莎士比亚的文本。The Unreasonable Effectiveness of Recurrent Neural Networks论证了什么样的RNN语言模型能够胜任。

我假设你已经对基础的神经网络有了一定的认识。如果不,请看Implementing A Neural Network From Scratch,它可以指导你理解并实现一个非循环的网络。

什么是RNNs?

RNN背后的思想是充分利用顺序信息。在传统的神经网络中,我们假设所有的输入(和输出)是相互独立的。但是在很多情况下这是一个很坏的概念。如果你想预测一个句子中下一个单词是什么,你当然最好要知道前一个单词是什么。RNNs被称为循环,是因为它对序列中的所有元素执行相同的任务,每一次输出都依托于之前的计算。换一种想法,RNNs拥有对至今为止计算过的信息的“记忆”。理论上,RNNs可以利用任意长序列上的信息,但在实际中,它们通常只能回顾之前几步(稍后详细介绍)。典型的RNN是这样的:

上图展现了一个RNN展开(unrolled, unfolded)为全连接的形式。通过展开我们,

The above diagram shows a RNN beingunrolled(or unfolded) into a full network. By unrolling we simply mean that we write out the network for the complete sequence. For example, if the sequence we care about is a sentence of 5 words, the network would be unrolled into a 5-layer neural network, one layer for each word. The formulas that govern the computation happening in a RNN are as follows:

你可能感兴趣的:(RECURRENT NEURAL NETWORKS TUTORIAL)