RNN(Recurrent Neural Network),中文称作循环神经网络,它一般以序列数据为输入,通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。
因为RNN结构能够很好利用序列之间的关系,因此针对自然界具有连续性的输入序列,如人类的语言,语音等进行很好的处理,广泛应用于NLP领域的各项任务,如文本分类,情感分析,意图识别,机器翻译等.
RNN模型的分类:
这里我们将从两个角度对RNN模型进行分类.第一个角度是输入和输出的结构,第二个角度是RNN的内部构造.
按照输入和输出的结构进行分类:
N vs N-RNN
它是RNN最基础的结构形式,最大的特点就是:输入和输出序列是等长的.由于这个限制的存在,使其适用范围比较小,可用于生成等长度的合辙诗句.
N vs 1-RNN
有时候我们要处理的问题输入是一个序列,而要求输出是一个单独的值而不是序列,要在最后一个隐层输出h上进行线性变换。
大部分情况下,为了更好的明确结果,还要使用sigmoid或者softmax进行处理.这种结构经常被应用在文本分类问题上.
1 vs N-RNN
我们最常采用的一种方式就是使该输入作用于每次的输出之上.这种结构可用于将图片生成文字任务等.
N vs M-RNN
这是一种不限输入输出长度的RNN结构,它由编码器和解码器两部分组成,两者的内部结构都是某类RNN,它也被称为seq2seq架构。
输入数据首先通过编码器,最终输出一个隐含变量c,之后最常用的做法是使用这个隐含变量c作用在解码器进行解码的每一步上,以保证输入信息被有效利用。
按照RNN的内部构造进行分类:
传统RNN
内部计算函数
tanh的作用: 用于帮助调节流经网络的值,tanh函数将值压缩在﹣1和1之间。
传统RNN的优势:
由于内部结构简单,对计算资源要求低,相比之后我们要学习的RNN变体:LSTM和GRU模型参数总量少了很多,在短序列任务上性能和效果都表现优异。
传统rnn的缺点:
传统RNN在解决长序列之间的关联时,通过实践,证明经典RNN表现很差,原因是在进行反向传播的时候,过长的序列导致梯度的计算异常,发生梯度消失或爆炸。
LSTM
LSTM (Long Short-Term Memory)也称长短时记忆结构,它是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸现象,同时LSTM的结构更复杂。
LSTM缺点:由于内部结构相对较复杂,因此训练效率在同等算力下较传统RNN低很多.
LSTM优势:LSTM的门结构能够有效减缓长序列问题中可能出现的梯度消失或爆炸,虽然并不能杜绝这种现象,但在更长的序列问题上表现优于传统RNN.
它的核心结构可以分为四个部分去解析: