RNNs
什么是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的更多相关文章
- 开始学习深度学习和循环神经网络Some starting points for deep learning and RNNs
Bengio, LeCun, Jordan, Hinton, Schmidhuber, Ng, de Freitas and OpenAI have done reddit AMA's. These ...
- RNNs在股票价格预测的应用
RNNs在股票价格预测的应用 前言 RNN和LSTMs在时态数据上表现特别好,这就是为什么他们在语音识别上是有效的.我们通过前25天的开高收低价格,去预测下一时刻的前收盘价.每个时间序列通过一个高斯分 ...
- 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 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- CNN for NLP (CS224D)
斯坦福课程CS224d: Deep Learning for Natural Language Processing lecture13:Convolutional neural networks - ...
- (转)The Neural Network Zoo
转自:http://www.asimovinstitute.org/neural-network-zoo/ THE NEURAL NETWORK ZOO POSTED ON SEPTEMBER 14, ...
- (转)LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION
LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION Wed 21st Dec 2016 Neural Networks these days are th ...
- (译) Conditional Variational Autoencoders 条件式变换自编码机
Conditional Variational Autoencoders --- 条件式变换自编码机 Goal of a Variational Autoencoder: 一个 VAE(variati ...
- RNN 入门教程 Part 4 – 实现 RNN-LSTM 和 GRU 模型
转载 - Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano ...
随机推荐
- 如何实现Asp与Asp.Net共享Session
<iframe align="top" marginwidth="0" marginheight="0" src="http ...
- 兔子--android中百度地图的开发
效果: API Key的申请地址:http://lbsyun.baidu.com/apiconsole/key 申请注意事项: 安全码:以下界面的SHA1 fingerprint值+;+包名 比如: ...
- Mac终端Screen命令使用指南
(1)创建会话 使用命令“screen -S RunWork”来创建一个screen会话,命令执行之后,就会得到一个新的shell窗口,为了便于标示可以用快捷键Ctrl-a A(就是按下Ctrl+a键 ...
- log4j2设置日志文件读写权限(filePermissions)
spring-boot使用log4j2作为日志插件的时候需要设置日志文件的读写权限,可以File 上增加filePermissions,如: <File name="File" ...
- Android之Handler与AsyncTask的区别
1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可 ...
- 《jquery权威指南2》学习笔记------基础函数
Math.floor(Math.random() * 7 + 1); Math.random() 生成0和1之间的随机小数Math.random() * 7 生成0和7之间的随机小数Math.rand ...
- JZOJ.5289【NOIP2017模拟8.17】偷笑
Description berber走进机房,边敲门边喊:“我是哔哔”CRAZY转过头:“我警告你,哔哔刚刚来过!”“呵呵呵呵……”这时,哔哔站了起来,环顾四周:“你们笑什么?……”巧了,发出笑声的人 ...
- poj 1386
Play on Words Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11312 Accepted: 3862 De ...
- 【IIS】IIS 7.0/7.5 无法启动 w3svc 服务
一般情况下,window IIS安装完毕后,会启动C:\inetpub\ 产生 类似C:\inetpub\temp\apppools的文件夹,如果IIS被改动过,此文件夹不会自动生成.需要手动添加. ...
- JRebel插件安装配置与破解激活(多方案)详细教程
JRebel 介绍 IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费不少生命啊.目前对于idea热部署最好的解决方案就是安装JRebel插件 ...