原始的Transformer依靠两组嵌入来表示输入序列:
对于能够在多个输入段上运行的类似BERT的模型,还使用第三组可学习的分段嵌入(segment embedding)来区分属于不同句子的token。
所有这些嵌入都具有相同的尺寸,并被加在一起以获得输入最终的表示。本节介绍的方法旨在给嵌入注入更多结构,或优化其尺寸以提高效率。
Introduced in: Encoding word order in complex[1] embeddings by Wang et al.
尽管PE在输入中捕获了不同的位置,但它们没有明确考虑这些位置之间的关系,即顺序关系(标准PE只关注距离,不关注先后,可以自己推导看看)。Transformer-XL已通过利用单词之间的相对距离而不是原始位置索引来解决此问题。
本文提出的改进是将单词嵌入泛化为与位置相关的连续函数,并扩展到复数值域,以便从更丰富的表示形式中获益。生成的复值嵌入(complex-valued embeddings)引入了新的关于幅度、频率和初始相位的参数,这些参数确定了嵌入的各种属性(例如位置敏感性)。实验结果表明,具有参数共享方案的复值嵌入优于以前的嵌入方法,而可训练参数的数量却没有显着增加。
Introduced in: Tree-Structured Attention with Hierarchical Accumulation[2] by Nguyen et al.
在之前对树状结构注意的概述中,我们看到了如何使用层次累加来形成基于非叶子节点后代的表示。但是,此过程的缺点是没有考虑后代的层次结构。
通过将垂直和水平嵌入矩阵连接起来,分别表示分支内部的层次结构顺序和子树中同级节点之间的关系,使得分层嵌入(Hierarchical embeddings) 可以注入更多的结构信息。这些嵌入在注意力头之间共享,因此仅占总参数的0.1%。
Introduced in: ALBERT: A Lite BERT for Self-supervised Learning of Language Representations[3] by Lan et al.
在基于BERT和Transformer-XL的最新模型中,embedding大小
与隐藏层的大小
有关,即
。这在实际操作时有很大的弊端:要增强模型的上下文表示能力通常要增大隐层,这会导致嵌入矩阵的变大,因为
,其中
是词汇量。即使对于相对较小的隐藏层尺寸,这中关系也会导致数十亿个参数,而且这些参数在训练期间很少更新。
ALBERT作者建议在 和 (我感觉,这个 应该是 )之间插入一个投影使两个维度独立,这种方法在 时对减少参数量特别有效。一个 , 包含21M参数(表3中为89M,而BERT为110M)的ALBERT,可以在许多下游任务上获得与具有相同配置的BERT基础相当的性能。
原始的Transformer体系结构由编码器和解码器组成,每个编码器和解码器由相同层的堆叠序列组成,这些堆叠序列对具有相同尺寸的嵌入进行转换(因此称为Transformer)。Transformer编码器的每一层都由两个子层:一个多头自我注意机制和一个前馈网络组成,前者被残差连接所包围,然后进行层归一化。解码器还包括第三层,对编码器的输出执行多头自我注意,并解码器的自注意力子层也和编码器不同。因为由于自回归语言模型的要求,这里需要避免后文参与运算(否则就泄露了)。
Transformer的双向变体(如BERT)放弃了解码器结构,仅专注于编码器,以生成各种任务(包括MLM)所需的上下文嵌入。
特别的,Transformer-XL为Transformer网络引入了一种内存概念,其中在前段中获得的隐藏状态会被重用以更好地对长程依赖性进行建模,从而防止上下文碎片化。
关于Transformer-XL可以参考我们之前的文章[预训练语言模型专题] Transformer-XL 超长上下文注意力模型。
以下方法尝试在当前结构的基础上进一步改善长程建模、减少参数数量或优化模型执行的计算。
Introduced in: Compressive Transformers for Long-Range Sequence Modelling[4] by Rae et al.
在Transformer-XL的循环存储方法中,旧记忆会被丢弃,从而能够以先进先出的方式存储新的记忆。此方法仅考虑先后远近,而不考虑可能会丢弃的信息的相关性。
Compressive Transformers添加了新的压缩记忆机制,保存历史记忆的粗糙表示,而非直接丢弃旧记忆。作者尝试使用多种压缩函数,最后选择一种注意力重建损失函数(attention-reconstruction loss),该损失会丢弃网络未被注意(not attended)到的信息。压缩内存的使用显示了对少见单词建模的巨大改进,实验证明网络通过压缩机制学习到了如何保留有用的信息。
Introduced in: Reformer: The Efficient Transforme[5]r by Kitaev et al.
可逆性(reversibility)背后的主要思想是可以通过仅使用后续层的激活情况和模型参数来恢复网络任意层中的激活情况。当与Transformer模型结合时,它变得特别有趣,因为Transformers通常由一大堆堆叠的层组成,并且模型的内存复杂度随层数线性增长。
通过将自注意力和前馈子层组合成为单个可逆层,Reformer在Transformer体系结构中引入了可逆性。这允许仅在存储最上层的激活情况,并通过在反向传播期间反转各层来恢复所有其他激活,从而使模型大小与层数无关。通过在前馈和可逆层中进行分块独立计算,还可以进一步改进空间复杂性。
Introduced in: ALBERT: A Lite BERT for Self-supervised Learning of Language Representations[6] by Lan et al.
跨层参数共享是一种简单但非常有效的方法,可以大大减少深度Transformer模型内部的参数数量,正如ICLR 2019 在Universal Transformer[7]论文中所展示的那样。
ALBERT作者对自注意子层和前馈子层的跨层参数共享进行了实验,发现共享权重矩阵可以将模型的总参数数量大大减少,当结合前面的嵌入分解使 时,模型大小可以变为原来的七分之一,而对最终结果的影响很小。参数共享还可以使层间的过渡更加平滑,有效地稳定网络参数。
Introduced in: Depth-Adaptive Transformer[8] by Elbayad et al.
不管输入语句的复杂度如何,当前模型为每个输入执行的计算都是固定的。这个问题已经在Universal Transformer中被提出,Universal Transformer建议使用自适应计算时间(ACT)重复使用相同的层,但是由此导致的每层权重的增加大大降低了网络的计算速度。
Depth-adaptive Transformer通过使用标准Transformer编码器对序列进行编码并以可变步长对其进行解码来解决此问题。为此,将一个分类器连接到解码器的每层后面,然后使用首先在计算机视觉领域引入的anytime prediction方法,通过如图所示的对齐和混合训练(aligned and mixed training)对整个集合进行训练。作者探索了不同的机制来自适应地控制序列级别和token 级别的计算量,并得出结论:自适应可以缩减超过75%的解码器层,而不会对机器翻译任务造成任何性能损失。
(这篇没怎么看懂,大家可以参考知乎上的一些介绍)
在ICLR 2020上引入的许多方法为解决原始Transformer从自注意力计算到模型结构本身的问题提供了大量的解决方案。
其中的许多方法似乎对Transformer的未来发展很有帮助,而且重要的是,一旦其中一些方法被组合起来,就有可能相互补充产生更进一步的改进。
我希望在ICLR 2021能看到更多的工作,将现存的策略组合在一起,呈现它们之间最有效的组合。
Encoding word order in complex: https://iclr.cc/virtual_2020/poster_Hke-WTVtwr.html
[2]Tree-Structured Attention with Hierarchical Accumulation: https://iclr.cc/virtual_2020/poster_HJxK5pEYvr.html
[3]ALBERT: A Lite BERT for Self-supervised Learning of Language Representations: https://iclr.cc/virtual_2020/poster_H1eA7AEtvS.html
[4]Compressive Transformers for Long-Range Sequence Modelling: https://iclr.cc/virtual_2020/poster_SylKikSYDH.html
[5]Reformer: The Efficient Transforme: https://iclr.cc/virtual_2020/poster_rkgNKkHtvB.html
[6]ALBERT: A Lite BERT for Self-supervised Learning of Language Representations: https://iclr.cc/virtual_2020/poster_H1eA7AEtvS.html
[7]Universal Transformer: https://arxiv.org/abs/1807.03819
[8]Depth-Adaptive Transformer: https://iclr.cc/virtual_2020/poster_SJg7KhVKPH.html
推荐阅读
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
太赞了!Springer面向公众开放电子书籍,附65本数学、编程、机器学习、深度学习、数据挖掘、数据科学等书籍链接及打包下载
数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。