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, Part 1 – Introduction...
    Elinx阅读 5,211评论 0 2
  • 向左?还是向右? 或许我们需要一个方向才能知晓前行的脚步,面对选择常常无从选择,或者选了“左”,而“右”则成了萦绕...
    二二薇阅读 819评论 0 0
  • 产品最终的目的是服务是为了人们,但是企业最终的目的是盈利。 他们的目的在某些事件段上是一致的,但是在另一些事件段上...
    然而_然而_阅读 1,683评论 0 0
  • 正能量!负能量!正能量!负能量!正能量!负能量!正能量!负能量!正能量!负能量!最近感觉自己满满的都是负能量!说话...
    记忆and时光阅读 1,488评论 0 0