浅谈自然语言生成中的RNN和Transformer算法

1.简述

通常,在自然语言生成任务(机器翻译,文本摘要,对话系统等)中,RNN和Transfomer都是常用的算法。下面,我们浅谈下采用RNN和Transformer的区别。

2.RNN模型简介:

相比于词袋模型和前馈神经网络模型,RNN可以考虑到词的先后顺序对预测的影响,RNN包括三个部分:输入层、隐藏层和输出层。相对于前馈神经网络,RNN可以接收上一个时间点的隐藏状态,基本结构图如下:

 

计算公式如下:

\begin{array}{l} {h_t} = g(W{h_{t - 1}} + U{x_t} + b)\\ {y_t} = f(V{h_t}{\rm{ + }}c) \end{array}

 

对于每一个时间点,输入是{x_t}和上一个时间点的隐藏状态{h_{t - 1}},输出是当前时间点的隐藏状态{h_t}g()函数是激活函数,比如tanh或是sigmoid函数,f()函数通常是softmax函数。

2.Transformer模型简介:

Transformer模型是一种基于Attention机制来加速深度学习算法的模型,可以进行并行化计算,而且每个单词在处理过程中注意到了其他单词的影响,效果非常好。

论文地址:https://arxiv.org/abs/1706.03762,论文题目为:《Attention Is All You Need》。

 

Transformer模型有Encoder层和Decoder层,由结构图可以发现编码层和解码层里都包含了多头注意力层(Multi-Head Attention层)和前馈神经网络(Feed Forward层),解码层还包括一个Masked多头注意力层。每个层后面都加了Add&Norm,其中Add是残差连接,用于解决多层网络训练的问题,让网络只关注当前差异的部分,Norm是指Layer Normalization归一化,加快收敛。

3.Transformer和RNN的区别:

1.RNN采用一种类似于递归的方式运行,无法执行并行化操作,也就无法利用GPU强大的并行化能力,而Transfomer基于Attention机制,使得模型可以并行化操作,而且能够拥有全局的信息。

2.Transformer本身是不能利用单词之间的位置信息的,所以需要在输入中添加一个位置embedding信息,否则Transformer就类似于词袋模型了。

3.RNN利用循环顺序结构,对于长句需要的训练步骤很多,加大了训练的难度和时间。而Transfomer不需要循环,并行地处理单词,而且其多头注意力机制可以将很远的词联系起来,大大提高了训练速度和预测准确度。