Transformer的七十二变

本文探讨了Transformer模型自2017年提出以来在自然语言处理中的发展,着重介绍了如何通过Star-Transformer和BP-Transformer优化计算复杂度,以及Transformer-XL和Compressive Transformer如何解决长程关系捕捉的问题。这些模型通过独特的结构和算法,如星状结构、二分注意力和循环机制,提升了Transformer处理长文本的能力,部分模型在实验中表现优于原始Transformer。
摘要由CSDN通过智能技术生成

©PaperWeekly 原创 · 作者|李明晓

学校|鲁汶大学博士生

研究方向|自然语言处理

自 2017 年 Google 提出 Transformer 后,其在各项 NLP 任务中都取得了 SOTA 的表现。然而其自身的结构缺陷导致了两个问题:

1)由于自注意力机制每次都要计算所有词之间的注意力,其所需计算复杂度为输入长度的平方;2)Transformer 需要事先设定输入长度,这导致了其对于长程关系的捕捉有了一定限制,并且由于需要对输入文档进行分割会导致语意上的碎片化。

近年来许多工作通过对 Transformer 结构的调整优化来缓解以上两个问题。

本文分为两部分,第一部分介绍和比较的三个模型(Star-Transformer 和 BP-Transformer)试图在时间复杂度和空间复杂度上优化 Transformer。第二部分介绍和比较的两个模型(Transformer-XL 和 Compressivetransformer)试图解决上面提出的第二个问题。

对 Transformer 不了解的可先阅读该博客:

https://jalammar.github.io/illustrated-transformer/

更高效的Transformer

1. Star-Transformer

论文标题:Star-Transformer

论文来源:NAACL 2019

论文链接:https://arxiv.org/abs/1902.09113

代码链接:https://github.com/fastnlp/fastNLP

原始的 Transformer 在计算注意力的时候,序列中每个元素要和所有元素进行计算,也是这样的计算方式导致了其复杂度为序列长度的平方。

同时 Transformer 这样所有元素直接相互作用的计算方式没能够很好地使用我们所知道的一些语言序列上的特性,比如语言序列中相邻的词往往本身就会有较强的相关性。

对于这个问题,Star-Transformer 在注意力机制的计算上进行了优化,构建了一个星状的结构,所有序列中直接相邻的元素可以直接相互作用,而非直接相邻的元素则通过中心元素实现间接得信息传递。

具体结构比较如下图所示,左边为正常的 Transformer,右边为 Star-Transformer。

下图为 Star-Transformer 的参数更新算法。在初始化阶段,卫星节点 的初始值为相应的词向量,而中心节点  的初始值为所有卫星节点词向量的平均值。

算法中参数更新分为两步:第一步为卫星节点的更新,第二步为中心节点的更新。两步的更新都是基于多头注意力机制。

对于卫星节点,计算多头注意力机制时只需考虑该节点状态与直接相邻节点,中心节点,该节点词向量和本节点上一时刻状态的信息交互(如下图中 )。

因为中心节点担负着所有卫星节点之间的信息交互,因此中心节点在更新时须与自己上一时刻的信息和所有卫星节点进行信息交互。同时为了表示位置信息,在卫星节点中还必须拼接上表示位置信息的可学习的向量。

该模型在使用中,针对序列的下游任务使用卫星节点的输出,而针对语言推理文本分类这种需要整个句子的任务则可以使用中心节点的输出。

作者的实验中表明,该非直接的联系方式同样能够学习到长程联系,同时在一些任务上的也取得了比 Transformer 更好的表现。

2. BP-Transformer

论文标题:BP-Transformer: Modelling Long-Range Context via Binary Partitioning

论文来源:NAACL 2019

论文链接:https://arxiv.org/abs/1911.04070

代码链接:https://github.com/yzh119/BPT

BP-Transformer 采用一个层级(从细粒度到粗粒度)的注意力计算机制来改进原始的 Transformer。其能够将 Transformer 在计算注意力时的时间复杂度从 降低到

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值