Transformer,transformer


你如何理解transformer模型?

Transformer,transformer


Transformer是Google在2017年发表的论文《Attention is all you need》中提出的模型 。其中使用了self-attention来替代此前的RNN和CNN对序列的编码方式,从而实现更快的并行训练以及更优的序列表示 。模型中有以下几个特点:1)为了能够捕获序列中的绝对位置和相对位置关系,在对序列的表示中加入了位置编码,其编码公示如下:其中pos表示序列的位置,dmodel为表示维度 。
这里使用了三角函数来表示是因为pos k的位置编码可以由pos的线形变换表示出来,从而蕴涵了相对位置信息,计算公式如下 。2)Multi-head的Self-Attention 。Self-Attention能够对句子进行编码,其中的self指的就是Q=K=V,即序列自己对自己进行Attention的编码,从而能捕获到序列中的语义信息,计算的公式如下 。
这里加入了multi-head的做法是基于一个词语会存在诸多语义,而在不同的语义空间中,对句子的编码结果也会显著不同 。因此在进行self-attention之前先对输入做线形变换,然后按照编码维度切分成h份,分别进行序列编码,再将结果拼接在一起 。3)为加速网络的训练,还在模型中加入了Layer Normalization以及残差连接 。
【Transformer,transformer】此外为了防止模型出现过拟合,还引入了dropout以及label smoothing,从而让模型更具鲁棒性 。4)Transformer相比于RNN和CNN的计算复杂度更低,而且利用self-attention使得在对序列进行编码时,最大的长度仅为1,避免了长程依赖的问题 。而RNN则序列的长度n,CNN也得受限于卷积的感受野 。

    推荐阅读