RNN基础知识

一、神经网络基础
神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下:在这里插入图片描述
将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特定的y,那么既然有了这么强大的模型,为什么还需要RNN(循环神经网络)呢?
二、为什么需要RNN(循环神经网络)
考虑这样一个问题,如果要预测句子的下一个单词是什么,一般需要用到当前单词以及前面的单词,因为句子中前后单词并不是独立的。比如,当前单词是“很”,前一个单词是“天空”,那么下一个单词很大概率是“蓝”。

循环神经网络的来源就是为了刻画一个序列当前的输出与之前信息的关系。从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面结点的输出。也就是说,循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上时刻隐藏层的输出。

三、RNN模型结构
首先看一个简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:
在这里插入图片描述
RNN 跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。

U是输入层到隐藏层的权重矩阵,o也是一个向量,它表示输出层的值;V是隐藏层到输出层的权重矩阵。

那么,现在我们来看看W是什么。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。

我们给出这个抽象图对应的具体图:

在这里插入图片描述
从上图就能够很清楚的看到,上一时刻的隐藏层是如何影响当前时刻的隐藏层的。

把上面的图展开,循环神经网络也可以画成下面这个样子:
在这里插入图片描述
现在看上去就比较清楚了,这个网络在t时刻接收到输入x t 之后,隐藏层的值是 s t ,输出值是 o t 。关键一点是,s t 的值不仅仅取决于x t ,还取决于s t − 1
先看左半边图,如果不看隐藏层中的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有关。
这样,所谓的隐藏层的循环操作也就不难理解了,就是每一时刻计算一个隐藏层地值,然后再把该隐藏层地值传入到下一时刻,达到信息传递的目的。
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述

请添加图片描述

这里用一个具体案例来看看RNN如何工作:

用户说了一句“what time is it?”,我们的神经网络会先将这句话分为五个基本单元(四个单词+一个问号)
在这里插入图片描述
然后,按照顺序将五个基本单元输入RNN网络,先将 “what”作为RNN的输入,得到输出01
在这里插入图片描述
随后,按照顺序将“time”输入到RNN网络,得到输出02。

这个过程我们可以看到,输入 “time” 的时候,前面“what” 的输出也会对02的输出产生了影响(隐藏层中有一半是黑色的)。

在这里插入图片描述
以此类推,我们可以看到,前面所有的输入产生的结果都对后续的输出产生了影响(可以看到圆形中包含了前面所有的颜色)

在这里插入图片描述
当神经网络判断意图的时候,只需要最后一层的输出05,如下图所示:
在这里插入图片描述
四、RNN前向传播算法
最后,给出经典RNN结构的严格数学定义。

输入为x1,x2,…,xt
对应的隐状态为h1,h2,…,ht
输出为y1,y2,…,yt,如,则经典RNN的运算过程可以表示为
在这里插入图片描述

其中,U,W,V,b,c均为参数,而f()表示激活函数,一般为tanh函数。

RNN虽然理论上可以很漂亮的解决序列数据的训练,但是它也像DNN一样有梯度消失时的问题,当序列很长的时候问题尤其严重。因此,上面的RNN模型一般不能直接用于应用领域。在语音识别,手写书别以及机器翻译等NLP领域实际应用比较广泛的是基于RNN模型的一个特例LSTM。

参考链接
https://blog.csdn.net/Tink1995/article/details/104868903?spm=1001.2014.3001.5502
https://blog.csdn.net/zhaojc1995/article/details/80572098
https://blog.csdn.net/weixin_44052055/article/details/122405166?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-122405166-blog-80572098.pc_relevant_vip_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-122405166-blog-80572098.pc_relevant_vip_default&utm_relevant_index=3

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值