如何理解网络分层模型,你如何理解transformer模型? <#21---->


时间:

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以及残差连接。此外为了防止模型出现过拟合,还引入了dropout以及label smoothing,从而让模型更具鲁棒性。

4)Transformer相比于RNN和CNN的计算复杂度更低,而且利用self-attention使得在对序列进行编码时,最大的长度仅为1,避免了长程依赖的问题。而RNN则序列的长度n,CNN也得受限于卷积的感受野。因此Transformer有望替代RNN,成为对序列编码的标配。

对不起,请原谅,我学问低,看不明白,