循环神经网络(Recurrent Neural Network)

循环神经网络(RNN)是具有记忆功能的神经网络,常用于序列数据处理,如槽填充。RNN的变种如LSTM通过输入门、遗忘门和输出门管理长期记忆,解决了传统RNN的梯度消失和爆炸问题。LSTM在处理序列任务如语音识别、机器翻译和文本生成等方面展现出强大的能力。
摘要由CSDN通过智能技术生成

RNN是最常用的LSTM(LSTM由RNN转化而来)一般般用于记住之前的状态,以供后续神经网络的判断,它由input gate 、forget gate 、output gate 、和cell memory组成,每个LSTM本质上就是一个神经元,特殊之处在于有4个输入: z z z和三个门控制信号 z i , z f , z o z^{i},z^{f},z^{o} zi,zf,zo 组成 ,每个时间点的输入都是由当前输入值+上一个时间点的输出值+上一个时间点cell值来组成
槽填充
在智能客服、智能订票系统中,往往需要槽填充技术,他会分析用户说出的语句,将时间、地址等有效的关键词填到对应的槽上,并过滤掉无效的词语。
词汇转化为向量,可以使用1-of-N(one-hot)编码,word hashing或者是word vector等方式,此外我们可以尝试使用Feedforward Neural Network来分析词汇,判断出它是属于时间或是目的地的概率.
在这里插入图片描述

如上图所示:该神经网络会先处理“arrive”和“leave”这两个词汇,然后再处理“Taipei”,这时对NN来说,输入是相同的,它没有办法区分出“Taipei”是出发地还是目的地

这个时候我们就希望神经网络是有记忆的,如果NN在看到“Taipei”的时候,还能记住之前已经看过的“arrive”或是“leave”,就可以根据上下文得到正确的答案
这种有记忆力的神经网络,就叫做Recurrent Neural Network(RNN)

在RNN中,隐藏层每次产生的输出 a 1 , a 2 a_{1},a_{2} a1,a2,都会被存到记忆中,下次有输入的时候,这些神经元就不仅会考虑新的输入 x 1 , x 2 x_{1},x_{2} x1,x2,还会考虑存放在记忆中的 a 1 , a 2 a_{1},a_{2} a1,a2
在这里插入图片描述
注意到,每次NN的输出都要考虑memory中存储的临时值,而不同的输入产生的临时值也尽不相同,因此改变输入序列的顺序会导致最终输出结果的改变(Changing the sequence order will change the output)

RNN处理糟填充
“arrive”的向量作为 x 1 x^{1} x1输入RNN中,通过隐藏层生成 a 1 a^{1} a1,再根据 a 1 a^{1} a1生成 y 1 y^{1} y1,表示“arrive”属于每个槽的概率,其中 a 1 a^{1} a1会被存储到内存中。

“Taipei”的向量作为 x 2 x^{2} x2输入RNN中,此时隐藏层同时考虑 x 2 x^{2} x2和存放在存储器中的 a 1 a^{1} a1,生成 a 2 a^{2} a2,再根据 a 2 a^{2} a2生成 y 2 y^{2} y2,表示“Taipei”属于每个槽的概率,此时再把 a 2 a^{2} a2会被存储到内存中。
以此类推
在这里插入图片描述
上图为同一个RNN在三个不同时间点被分别使用了三次,并非是三个不同的NN

这个时候,即使输入同样是“Taipei”,我们依旧可以根据前文的“leave”或“arrive”来得到不一样的输出
在这里插入图片描述
Elman Network & Jordan Network
RNN有不同的变形:
Elman Network:将hidden layer的输出保存在memory里
Jordan Network:将整个neural network的输出保存在memory里
由于hidden layer没有明确的训练目标,而整个NN具有明确的目标,因此Jordan Network的表现会更好一些

双向回归神经网络(Bidirectional RNN)
RNN可以是双向的,可以同时训练一对正向和反向的RNN,把它们对应的隐藏层 x t x^{t} xt拿出来,都结给一个输出层,得到最后的 y t y^{t} yt
使用双向回归神经网络的好处是,NN在产生输出的时候,能够看到的范围比较广,RNN在产生 y t + 1 y^{t+1} yt+1的时候,它不只看了从句首 x 1 x^{1} x1开始到 x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值