递归神经网络:一般用于记住之前的状态,以供后续神经网络的判断
Example Application
Slot Filling(槽填充)
在智能客服、智能订票系统中,往往会需要slot filling技术,它会分析用户说出的语句,将时间、地址等有效的关键词填到对应的槽上,并过滤掉无效的词语
有一个问题,如下图,神经网络会先处理“arrive”和“leave”这两个词汇,然后再处理“Taipei”,这时对NN来说,输入是相同的,它没有办法区分出“Taipei”是出发地还是目的地
这个时候如果NN在看到“Taipei”的时候,还能记住之前已经看过的“arrive”或是“leave”,就可以根据上下文得到正确的答案

这种有记忆力的神经网络,就叫做Recurrent Neural Network(RNN)
在RNN中,hidden layer每次产生的output a1、a2,都会被存到memory里,下一次有input的时候,这些neuron就不仅会考虑新输入的x1、x2,还会考虑存放在memory中的a1、a2

Slot Filling with RNN
用RNN处理Slot Filling的流程举例如下:
- “arrive”的vector作为x1输入RNN,通过hidden layer生成a1,再根据a1生成y1,表示“arrive”属于每个slot的概率,其中a1会被存储到memory中
- “Taipei”的vector作为x2输入RNN,此时hidden layer同时考虑x2和存放在memory中的a1,生成a2,再根据a2生成y2,表示“Taipei”属于某个slot的概率,此时再把a2存到memory中
- 依次类推

这个时候,即使输入同样是“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 还可以是双向的,你可以同时训练一对正向和反向的RNN,把它们对应的hidden layer拿出来,都接给一个output layer,得到最后的结果

LSTM
长短期记忆(Long Short-term Memory):可以被理解为比较长的短期记忆,因此是short-term,而非是long-short term
Three-gate
LSTM有三个gate:
- 当某个neuron的输出想要被写进memory cell,它就必须要先经过一道叫做input gate的闸门,如果input gate关闭,则任何内容都无法被写入,而关闭与否、什么时候关闭,都是由神经网络自己学习到的
- output gate决定了外界是否可以从memory cell中读取值,当output gate关闭的时候,memory里面的内容同样无法被读取
- forget gate则决定了什么时候需要把memory cell里存放的内容忘记清空,什么时候依旧保存
整个LSTM可以看做是4个input,1个output:
- 4个input=想要被存到memory cell里的值+操控input gate的信号+操控output gate的信号+操控forget gate的信号
- 1个output=想要从memory cell中被读取的值

Memory Cell
如果从表达式的角度看LSTM,它比较像下图中的样子
- z z z是想要被存到cell里的输入值
- z i z_i zi是操控input gate的信号

本文深入探讨递归神经网络(RNN)及其变种LSTM的工作原理与应用,包括槽填充、情绪分析、关键词提取等任务,解析Elman、Jordan网络及双向RNN特性。
最低0.47元/天 解锁文章
1640

被折叠的 条评论
为什么被折叠?



