您的当前位置:首页RNN&LSTM

RNN&LSTM

来源:小侦探旅游网

循环神经网络 RNN

1、前言

数据足够多的时候RNN已经不流行了,自然语言处理多用transformer来进行

2、怎样用时序数据来建模?

传统的one to one模型不适合处理时序性数据,通常情况来说输入和输出的长度都不固定 ,对于时序数据,最好输入和输出的长度都不固定 many to one / many to many,

3、simple RNN

新的状态ht,依赖于向量ht-1,xt以及矩阵A

4、搭建简单RNN

5、simpleRNN的缺陷

比如目前任务是给定半句话要求预测下一个单词:
(1),比如输入时cloud are in the 正确的输出应该是sky,(只借助前面几个词进行预测)RNN可以完成,RNN很擅长short-term dependence

状态h100 会把之前的输入忘记,RNN的记忆只有7秒


RNN->LSTM:
遗忘其实就是深度学习中老生常谈的梯度消失
LSTM或GRU的作用:它可以学习只保留相关信息来进行预测,忘记不相关的数据。在这种情况下,你记得的单词让你判断麦片是好的。

LSTM


LSTM比RNN复杂的多,RNN有一个参数矩阵,LSTM有四个

1、LSTM的内部结构


过去的向量通过传输带送到下一个时刻,不会发生太大的变化,LSTM就是靠传输带来避免梯度消失的问题

LSTM中有很多个Gates可以有选择的让信息通过

forget gate遗忘门由sigmoid函数和element-wise multiplication(两个矩阵对应位置元素进行乘积)两部分组成,

输入sigmoid是一个向量a,算出遗忘门向量f

f怎么算出来的呢

ft是上一个状态ht-1和当前状态xt的函数(图右侧的计算过程)
遗忘门有一个参数Wf需要通过反向传播在训练数据里学习

input gate输入门,运算过程和遗忘门差不多


输入门有一个参数Wi需要通过反向传播在训练数据里学习

New value 也很像,激活函数不一样是tanh


有一个参数Wc需要通过反向传播在训练数据里学习

output计算LSTM的输出,也就是状态向量ht


输出门有一个参数Wo需要通过反向传播在训练数据里学习

LSTM输出ht计算

所有xt状态的信息都积累到了ht里面

2、LSTM的实现

1、任务:电影评论情感分析

代码几乎一样就是层名变了


LSTM层是2080*4=8320个参数
也可以用dropout

但是dropout也不一定提升准确率,因为过拟合是由embedding层造成的(32万个参数)
LSTM总是要比simpleRNN要好

因篇幅问题不能全部显示,请点此查看更多更全内容