Transfomer:NLP领域的革命性模型

释放双眼,带上耳机,听听看~!
了解Transfomer在NLP领域的革命性作用,探讨其采用自注意力机制解决了RNN存在的问题,以及其在并行计算方面的优势。

在transfomer被提出之前,nlp领域大多都是使用类似于RNN/LSTM这样的时序网络,但是这些都是存在一定的问题的,比如RNN,它的记忆长度十分有限,并且只能串行运行,无法并行运行,并且RNN无法处理长序列的句子,每个时间点的输入都要依赖于上一个时间步的输出,长此以往,这就可能会导致梯度爆炸/消失的问题。LSTM与RNN一样,虽然在一定程度上解决了RNN存在的一些问题,但是其本身也是存在一些问题。LSTM和RNN一样是无法并行计算的,并且当序列长度超过一定限度后梯度还是会消失的。

Transfomer的提出就解决了上面的所提出的问题,transfomer来自Google在2017年的一篇论文 《Attention Is All You Need》。它在自然语言处理的多个任务上取得了非常好的效果,在针对循环神经网络处理序列问题, transformer不用循环而完全采用注意力机制来刻画输入输出的全局序列信息。因为transfomer使用self-attention来替换了RNN,并且transfomer依赖于attention机制,使得transfomer可以更好的进行并行运算。

Transfomer:NLP领域的革命性模型

Transfomer的几个模块:

1.    Embedding(包括 Context Embedding 即文本转换 以及 Positional Embedding 位置编码)这个位置编码是通过三角函数来获取位置的,因为transfomer不像是RNN那样通过时序获取输入和输出的,所以就通过位置编码的方式来获取每一个输入的位置。

2.    Encoder(包括 多头注意力机制,前馈网络,LayerNorm, 残差连接)

3.    Decoder(Masked多头注意力机制,通过自回归来使得上一个输出是下一个时刻的输入,前馈网络,LayerNorm,残差连接,decoder与encoder相比,多了一个子层,也就是Masked多头注意力机制)

4.    最后输出就是 Linear + softmax

左边是编码器,右边是解码器。解码器的输入是用上一个输出(可以看到图中的shifted right就是一个一个往右移动),编码器首先拿到一个输入,通过位置编码(Postitional Encoding)得到位置信息,模型为encoder—decoder结构,如图所示,encoder和decoder分别由N个encoder块和N个decoder块组成,每个模块由多头注意力和线性层组成。

编码器由6个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的自注意机制,第二个支层是一个简单的全连接前馈网络,对于每一层都使用了残差连接。在两个支层外面都添加了一个residual的连接,然后进行了layer nomalization(标准化维度)的操作。这样每个子层的输出是Transfomer:NLP领域的革命性模型,首先输入x,通过残差把输入和输出连接在一起,最后进行laynom的操作,由于残差需要输入和输出一样,为了方便起见,便把输出的维度都都设定为dmodel=512(dk=64,词向量维度是512)。模型所有的支层以及embedding层的输出维度都是。

模型的解码器也是堆叠了六个相同的层。不过每层除了编码器中那两个支层,解码器还加入了第三个支层,同样的是一个多头注意力机制。解码器在解码的过程中做了一个自回归,即当前的输入集是上一个时刻的输出,这也意味着在做预测的时候是没有办法看到之后的那些时刻的输出。但是编码器是可以看到整个输入的句子的,为了解决这个问题所以引用了一个masked多头注意力机制,保证在某个时间段t是没有办法看到t时刻以后的那些输入的。

Self-attention

Transfomer:NLP领域的革命性模型

对于每一个输入向量a,在图中也就是每一个词向量,经过self-attention之后都输出一个向量b,这个向量b是考虑了所有的输入向量才得到的,这里有四个词向量a对应就会输出四个向量b。那么对于输出的向量b是如何去考虑所有的输入向量呢?由论文的公式可知,通过向量的内积来获得两个向量之间的相关性。

Transfomer:NLP领域的革命性模型

向量的内积,其几何意义是表征两个向量的夹角,代表了一个向量在另一个向量上的投影。其值越大,代表了投影后的向量就越接近,也就是两个向量的相关度就越高。而一个矩阵乘以一个转置矩阵的运算,其实可以看成这个矩阵向量分别与其他矩阵向量计算内积。最后的到的值越大,代表这个矩阵和另外一个矩阵的向量的相似性。最后经过softmax归一化后,得到的值就是权重。

Transfomer:NLP领域的革命性模型

在《The Illustrated Transformer》中可以看到,公式中的qkv是输入的向量X乘以W_Q,W_K,W_V得到的,如果没有W_Q,W_K,W_V,那么计算权重的时候就非常依赖自己输入的X,通过乘以W_Q,W_K,W_V后,就得到了Q,K,V矩阵。

Transfomer:NLP领域的革命性模型

对比论文中的公式,在《The Illustrated Transformer》中的图解,可以看到,我们的输入经过Embedding后,得到了两个词向量,根据之前得到的QKV矩阵,计算出q1 x k1,q2 x k2,之后除以8(论文中的dk=64) ,在经过softmax归一化后得到了两个向量之间的相似度,最后乘以V矩阵,就可以得到thinking这个单词在经过注意力机制后加权求和的表示。

self-attention的每一个输入,经过attention层都是跟其他输入建立了联系的,所以这也是self-attention层是能够全局地提取到整个序列信息的原因。

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

fastText 文本分类器 | Bag of Tricks for Efficient Text Classification

2023-12-13 19:54:14

AI教程

梯度下降法复习:自适应学习率、Adagrad算法和随机梯度下降法

2023-12-13 20:02:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索