首页 > 编程知识 正文

循环神经网络RNN 和 长短期记忆网络LSTM,循环神经网络

时间:2023-05-04 23:50:17 阅读:200778 作者:2248

循环神经网络(RNN)

循环神经网络是一种用于处理序列数据的神经网络。

RNN 的输入输出:用「动图」和「举例子」讲讲 RNN

右侧是 RNN 在时间上进行展开的示意图。这个过程由 Encoder 完成,目的是从序列输入中依次提取数据并将其编码为向量(表示输入)。

对于第  时刻, 是当前时刻的输入,用于实时更新状态; 是上一隐藏层的状态,用于记忆状态(对于文本而言,就是前文留下的对推断后文有用的信息)。

基于 Encoder-Decoder 的 RNN 模型可应用于机器翻译,输入是英文句子,输出为法语句子。Encoder 依次提取英文句子中的单词后,形成定长的向量表示,然后 Decoder 将此向量作为输入,依次产生每个法语单词,形成翻译后的英语句子。

RNN 模型也有明显的缺点:

训练慢:输入需要依次处理,无法并行化无法很好地处理长序列:序列太长会导致梯度消失和梯度爆炸长短期记忆网络(LSTM)

Long Short Term Memory network 是一种特殊的 RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。相比于普通的 RNN,LSTM 能够在更长的序列中有更好的表现。

相比 RNN 只有一个传递状态,LSTM 有两个传递状态  和 。LSTM 包含遗忘门(决定了要从上一个状态中舍弃什么信息),输入门(决定了要往当前状态中保存什么新的信息)和输出门(决定了要从状态中输出什么信息)。

LSTM 前向传播的过程 更新遗忘门输出:

第一步是由遗忘门(sigmoid layer)决定舍弃什么信息。

更新输入门两部分输出:

第二步是决定存储什么新信息,分为两部分:

一是输入门(sigmoid layer)决定将要更新哪些值;

二是创建候选值(),存储的是当前时间点可能会存入  的信息。

结合以上两部分来更新 :

删除决定要忘记的信息,然后存储决定要保存的新信息。

更新输出门输出

 首先决定要输出哪部分(sigmoid layer),然后输出决定要输出的部分。

Reference

https://zhuanlan.zhihu.com/p/36455374

https://towardsdatascience.com/illustrated-guide-to-transformer-cf6969ffa067

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

https://towardsdatascience.com/animated-rnn-lstm-and-gru-ef124d06cf45

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。