什么是RNN网络?

RNNs背后的主要目的是要使用序列本身的顺序信息。在传统的神经网络里,我们假设输入(输出)是条件独立的。但是,在许多任务里,这是个非常非常差的假设。如果你想预测一个序列中的下一个单词是什么,你最好知道它的前一个词是什么。RNNs被叫做循环神经网络是因为它对于序列中的每个元素都做相同的操作,输出会依赖于之前的计算。用另一种说法,RNNs拥有了一个能捕获到目前为止所有计算的结果的记忆单元。从理论上讲,RNNs能使用任意长度的序列信息,但是,在实践中RNNs被限制到只能回溯几步(稍后再讨论这个问题)。下面是一个典型的RNN。

\[A recurrent neural network and the unfolding in time of the computation involved in its forward\\computation. Source: Nature\]

上面的示意图展示了一个RNN展开为整个网络时的样子。通过展开图,我们简单的认为我们写出了全完序列的网络结构。举个例子,如果我们关心的序列是由5个词组成的句子,网络将被展开为一个5层的神经网络,每层表示一个词。计算RNN时的公式如下。

  • \(x_t\) 是第\(t\) 步时间下的输入。举个例子,\(x_1\) 可以是一个one-hot 编码的向量,相当于句子的第二个词。
  • \(x_t\) 第\(t\)步的隐藏状态,\(s_t\)是基于之前的隐藏状态和当前输入计算出来的:\(s_t=f(Ux_t + Ws_{t-1})\),f通常是一个非线性函数,例如:ReLU函数。\(s_{t-1}\)是需要计算的第一个隐藏状态,通常全部初始化为0.
  • \(o_t\)是第\(t\)步的输出。例如:如果我们想预测一个句子中的下一个词是什么,\(o_t\)将会是一个关于我们词典的概率向量。\(o_t=\mathrm{softmax}(Vs_t)\)

这里还有一些需要注意的点:

  • 你可以把隐藏状态\(s_t\)当做是网络的记忆单元。\(s_t\)捕获了当前步之前所产生的信息。输出\(o_t\)只是根据第\(t\)步的记忆单元来计算。如上面简要提到的,在实践是它(记忆单元)是比较复杂的,因为\(s_t\)通常无法捕获到很多步之前的信息。
  • RNN不像每层都使用不同参数的传统神经网络,RNN所有步共享相同的参数(上面的 U,V,W)。这反映了一个事实,每一步我们都做同样的任务,只有输入不同。这大大减少了我们需要学习的参数数量。
  • 上面的示意图每个步骤均有输出,但对于一些任务来说,这个也许不是必要的。例如,当我们预测一个句子的情感的时候,我们可能只关注最后的输出,而不是每个词的情感。相似的,我们也不需要在每个步骤都有输入。RNN的主要特征是捕获了一个序列一些信息的隐藏状态。

RNNs 能做什么?

RNNs 在很多自然语言处理的任务中取得了很大成功。在此刻我要提醒你,最常使用的RNNs是LSTMs,LSTMs相比于普通的RNNs能更好的捕获到长距离依赖。但是不要担心,LSTMs大体上与我们将要在这个课上开发的RNN是一样的,LSTMs只是用一个不同的方法来计算隐藏状态。我们在之后会发文中会包含LSTMs细节。下面是一些RNN在自然语言处理上的应用的例子。

未完待续。。。

本文是翻译自wildml的一篇RNN导读文章。本人英语水平有限,仅共参考学习。

RNNs的更多相关文章

  1. 开始学习深度学习和循环神经网络Some starting points for deep learning and RNNs

    Bengio, LeCun, Jordan, Hinton, Schmidhuber, Ng, de Freitas and OpenAI have done reddit AMA's.  These ...

  2. RNNs在股票价格预测的应用

    RNNs在股票价格预测的应用 前言 RNN和LSTMs在时态数据上表现特别好,这就是为什么他们在语音识别上是有效的.我们通过前25天的开高收低价格,去预测下一时刻的前收盘价.每个时间序列通过一个高斯分 ...

  3. PP: Shallow RNNs: a method for accurate time-series classification on tiny devices

    Problem: time series classification shallow RNNs: the first layer splits the input sequence and runs ...

  4. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  5. CNN for NLP (CS224D)

    斯坦福课程CS224d: Deep Learning for Natural Language Processing lecture13:Convolutional neural networks - ...

  6. (转)The Neural Network Zoo

    转自:http://www.asimovinstitute.org/neural-network-zoo/ THE NEURAL NETWORK ZOO POSTED ON SEPTEMBER 14, ...

  7. (转)LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION

    LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION Wed 21st Dec 2016   Neural Networks these days are th ...

  8. (译) Conditional Variational Autoencoders 条件式变换自编码机

    Conditional Variational Autoencoders --- 条件式变换自编码机 Goal of a Variational Autoencoder: 一个 VAE(variati ...

  9. RNN 入门教程 Part 4 – 实现 RNN-LSTM 和 GRU 模型

    转载 - Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano ...

随机推荐

  1. hadoop杂记-为什么会有Map-reduce v2 (Yarn)

    转自:http://www.cnblogs.com/LeftNotEasy/archive/2012/02/18/why-yarn.html 前言: 有一段时间没有写博客了(发现这是我博客最常见的开头 ...

  2. 30Mybatis_mybatis和spring整合-原始dao开发

    这篇文章很重要, 第一步:我们讲一下整合的思路: 我们以前要用Mybatis是需要sqlMapConfig.xml(这个配置文件需要配置dataource,以及mapper.xml文件.)sqlMap ...

  3. Android 绘制圆环

    使用画圆弧的方式绘制圆环和进度条,使用sweepGradient进行渐变. 参考链接 http://blog.csdn.net/u011494050/article/details/39251239 ...

  4. Java分为三个体系

    Java分为三个体系 JavaSE(Java2 Platform Standard Edition,java平台标准版), JavaEE(Java 2 Platform,Enterprise Edit ...

  5. 嵌入式开发之davinci--- ccs 编译lib库

    (1)ccs 简介 (2)ccs 输出格式coff elf (3)ccs 编译lib 算法库 (4)ccs 存在的问题 ---------------------------------------- ...

  6. mac os x 记录 转载

    转载:远景网友(手机锋友t5sd3sf):http://bbs.feng.com/read-htm-tid-10434256.html 一个命令制作 OS X 原版安装U盘 1.要保证下载的原版安装包 ...

  7. Spring boot Junit Test单元测试

    Spring boot 1.40 JUnit 4 需要依赖包 spring-boot-starter-test.spring-test 建立class,加上如下注解,即可进行单元测试,别的帖子里说要加 ...

  8. Angular2 Observable 可观察对象

    可观察对象支持在应用中的发布者和订阅者之间传递消息.在需要进行事件处理,异步编程和处理多值的时候,可观察对象相对其他技术有显著的优点. 可观察对象是声明式的 —— 也就是说,虽然你定义了一个用于发布值 ...

  9. 类库服务寄宿到WebHost

    1.该Demo中包含一个类库项目.一个空的WebForm项目 2.新建WebForm项目 3.全局路由中注册类库服务 public class Global : System.Web.HttpAppl ...

  10. Spring_day04--SSH框架整合过程

    SSH框架整合过程 第一步 导入jar包 第二步 搭建struts2环境 (1)创建action,创建struts.xml配置文件,配置action (2)配置struts2的过滤器 第三步 搭建hi ...