史上最小白之RNN详解

RNN原理与应用

1.前言

网上目前已经有诸多优秀的RNN相关博客,但是我写博客的出发点主要是为了加深和巩固自己的理解,所以还是决定自己再进行一下总结和描述,如有不正确的地方欢迎指正~

2.区分RNN

循环神经网络(Recurrent Neural Network),递归神经网络(Recursive Neural Network),你有没有发现他们的缩写都是RNN,那他们两个是同一回事儿吗?网上有一些博客把这两就当成了同一个RNN来说明,包括我自己在学习的时候也一直认为循环神经网络跟递归神经网络没什么区别,直到我自己写博客的时候才发现他们原来根本就不是同一回事儿,这也许就是写博客的好处吧。对于递归神经网络 RNN我自己也不是很熟悉,这里就暂时先不介绍,等我完全搞懂了后再写吧。
下文所述的RNN全是指代循环神经网络。

3.循环神经网络 Recurrent Neural Network

3.1为什么需要循环神经网络 RNN

在这里插入图片描述
上图是一幅全连接神经网络图,我们可以看到输入层-隐藏层-输出层,他们每一层之间是相互独立地,(框框里面代表同一层),每一次输入生成一个节点,同一层中每个节点之间又相互独立的话,那么我们每一次的输入其实跟前面的输入是没有关系地。这样在某一些任务中便不能很好的处理序列信息。
什么是序列信息呢?
通俗理解就是一段连续的信息,前后信息之间是有关系地,必须将不同时刻的信息放在一起理解。
比如一句话,虽然可以拆分成多个词语,但是需要将这些词语连起来理解才能得到一句话的意思。
RNN就是用来处理这些序列信息的任务,比如NLP中的语句生成问题,一句话中的每个词并不是单独存在地,而是根据上下文信息,与他的前后词有关。
如:我吃XXX,吃是一个动词,按照语法规则,那么它后面接名词的概率就比较大,在预测XXX是什么的时候就要考虑前面的动词吃的信息,如果没考虑上下文信息而预测XXX是一个动词的话,动词+动词,很大概率是不符合语言逻辑地。
为了解决这一问题,循环神经网络 RNN也就应运而生了。

3.2循环神经网络 RNN的结构

在这里插入图片描述
先看左半边图,如果不看隐藏层中的W,把它忽略,那么这其实就相当于是一个全连接神经网络的结构。那么从左图中就可以看出RNN呢其实就只是相当于在全连接神经网络的隐藏层增加了一个循环的操作。至于这个循环的操作具体是怎样的呢?单看左图可能有些懵逼,那么现在看上右图。上右图是RNN网络结构按照时间线展开图。
Xt是t时刻的输入,是一个[x0,x1,x2…xn]的向量
U是输入层到隐藏层的权重矩阵
St是t时刻的隐藏层的值
W是上一时刻的隐藏层的值传入到下一时刻的隐藏层时的权重矩阵
V是隐藏层到输出层的权重矩阵
Ot是t时刻RNN网络的输出
从上右图中可以看出这个RNN网络在t时刻接受了输入Xt之后,隐藏层的值是St,输出的值是Ot。但是从结构图中我们可以发现St并不单单只是由Xt决定,还与t-1时刻的隐藏层的值St-1有关。
这样,所谓的隐藏层的循环操作也就不难理解了,就是每一时刻计算一个隐藏层地值,然后再把该隐藏层地值传入到下一时刻,达到信息传递的目的。
具体隐藏层值St计算公式如下:
S t = f ( U ⋅ X t + W ⋅ S t − 1 + b ) S_t=f(U\cdot X_t + W\cdot S_{t-1}+b) St=f

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值