没有合适的资源?快使用搜索试试~ 我知道了~
首页循环神经网络(RNN--Recurrent-Neural-Networks)介绍
循环神经网络(RNN--Recurrent-Neural-Networks)介绍
需积分: 23 736 浏览量
更新于2023-05-23
评论
收藏 1.14MB PDF 举报
循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。
资源详情
资源评论
资源推荐

循环神经网络(RNN, Recurrent Neural Networks)介绍
标签: 递归神经网络 RNN 神经网络 LSTMCW-RNN
2015-09-23 13:24 25873 人阅读 评论(13) 收藏 举报
分类:
数据挖掘与机器学习(23)
版权声明:未经许可, 不能转载
目录(?)[+]
循环神经网络(RNN, Recurrent Neural Networks)
介绍
这篇文章很多内容是参考:
http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introd
uction-to-rnns/,在这篇文章中,加入了一些新的内容与一些自己的理解。
循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理
(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上
与 RNNs 有关的学习资料很少,因此该系列便是介绍 RNNs 的原理以及如何实现。主要分
成以下几个部分对 RNNs 进行介绍:
1. RNNs 的基本介绍以及一些常见的 RNNs(本文内容);
2. 详细介绍 RNNs 中一些经常使用的训练算法,如 Back Propagation Through
Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学
习算法,以及梯度消失问题(vanishing gradient problem)
3. 详细介绍 Long Short-Term Memory(LSTM,长短时记忆网络);

4. 详细介绍 Clockwork RNNs(CW-RNNs,时钟频率驱动循环神经网络);
5. 基于 Python 和 Theano 对 RNNs 进行实现,包括一些常见的 RNNs 模型。
不同于传统的 FNNs(Feed-forward Neural Networks,前向反馈神经网络),RNNs
引入了定向循环,能够处理那些输入之间前后关联的问题。定向循环结构如下图所示:
该 tutorial 默认读者已经熟悉了基本的神经网络模型。如果不熟悉,可以点击:
Implementing A Neural Network From Scratch 进行学习。
什么是 RNNs
RNNs 的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层
再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网
络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面
的单词,因为一个句子中前后单词并不是独立的。RNNs 之所以称为循环神经网路,即一个
序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应

用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入
不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs 能够对任何长度的序
列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态
相关,下图便是一个典型的 RNNs:

From Nature
RNNs 包含输入单元(Input units),输入集标记为{x0,x1,...,xt,xt+1,...},而输出单元
(Output units)的输出集则被标记为{y0,y1,...,yt,yt+1.,..}。RNNs还包含隐藏单元(Hidden
units),我们将其输出集标记为{s0,s1,...,st,st+1,...},这些隐藏单元完成了最为主要的工作。
你会发现,在图中:有一条单向流动的信息流是从输入单元到达隐藏单元的,与此同时另一
条单向流动的信息流从隐藏单元到达输出单元。在某些情况下,RNNs 会打破后者的限制,
引导信息从输出单元返回隐藏单元,这些被称为“Back Projections”,并且隐藏层的输入
还包括上一隐藏层的状态,即隐藏层内的节点可以自连也可以互连。
上图将循环神经网络进行展开成一个全神经网络。例如,对一个包含 5 个单词的语句,
那么展开的网络便是一个五层的神经网络,每一层代表一个单词。对于该网络的计算过程如
下:
xt 表示第 t,t=1,2,3...步(step)的输入。比如,x1 为第二个词的 one-hot 向量(根
据上图,x0 为第一个词);

PS:使用计算机对自然语言进行处理,便需要将自然语言处理成为机器能够识别的
符号,加上在机器学习过程中,需要将其进行数值化。而词是自然语言理解与处理
的基础,因此需要对词进行数值化,词向量(Word Representation,Word
embeding)[1]便是一种可行又有效的方法。何为词向量,即使用一个指定长度的实
数向量 v 来表示一个词。有一种种最简单的表示方法,就是使用 One-hot vector
表示单词,即根据单词的数量|V|生成一个|V| * 1 的向量,当某一位为一的时候其他
位都为零,然后这个向量就代表一个单词。缺点也很明显:
1. 由于向量长度是根据单词个数来的,如果有新词出现,这个向量还得增加,
麻烦!(Impossible to keep up to date);
2. 主观性太强(subjective)
3. 这么多单词,还得人工打 labor 并且 adapt,想想就恐
4. 最不能忍受的一点便是很难计算单词之间的相似性。
现在有一种更加有效的词向量模式,该模式是通过神经网或者深度学习对词
进行训练,输出一个指定维度的向量,该向量便是输入词的表达。如
word2vec。
st 为隐藏层的第 t 步的状态,它是网络的记忆单元。 st 根据当前输入层的输出与上
一步隐藏层的状态进行计算。st=f(Uxt+Wst−1),其中 f 一般是非线性的激活函
数,如 tanh 或 ReLU,在计算 s0 时,即第一个单词的隐藏层状态,需要用到 s−1,
但是其并不存在,在实现中一般置为 0 向量;
ot 是第 t 步的输出,如下个单词的向量表示,ot=softmax(Vst).
需要注意的是:
剩余25页未读,继续阅读











上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0