每天给你送来NLP技术干货!
©作者 | 吴迪
单位 | UCLA
研究方向 | NLP
排版 | PaperWeekly
前言
在现代自然语言处理(NLP)的应用中,使用预训练的表征进行迁移学习是很重要的一个方法。在深度学习开始被应用之后,迁移学习最早出现在使用预训练的特征向量,以及对预训练语言模型(pre-trained language model,PLM)进行微调(fine-tuning)[1]。基于预训练模型,adapter 给出了一个新的思路,即能否在模型中插入一些少量的参数,在下游某个任务微调时只对这些参数进行训练,而保持预训练模型原有的参数不变。如果使用 adapter 可以让我们达到和微调整个模型一样的效果(或者更好),那就可以带来很多好处:
Adapter 最早由 [2] 提出,应用在了计算机视觉的模型中,后来由 [1] 引入 NLP,近些年相关的工作越来越多。最近对 adapter 在 NLP 上的应用很感兴趣,在此文中整理一些学习 adapter 时相关论文的笔记,其中的很多算法都在开源库 AdapterHub 中有实现:
https://adapterhub.ml/
首先总结一下把 adapter 引入 NLP 的论文 [1]。本文的主要贡献就是提出了应用于 transformer 的 adapter 结构,并且展示了在经典的 NLP 任务上使用 adapter 进行参数高效的迁移学习的可行性。
网络结构:如下图所示,[1] 提出在 transformer层中插入 adapter 层。adapter 层的结构很简单,向下投射到一个较小维度,经过一层非线性激活函数,然后向上投射到原有的维度。另外,整个 adapter 层的输入和输出之间还有一个残差连接。这一类的 adapter 也被形象地称作 bottleneck adapter。以 BERT 为例,根据 bottleneck 层的大小不同,新增的参数量大致占原有模型的 0.5%-8%。
▲Bottleneck adapter的结构
初始化:所有的 adapter 参数都从均值为 0 标准差为 0.01 的正态分布中采样。这样可以保证刚开始训练时,adapter 主干的全连接网络的输出很小,主要由残差连接传递信息。
训练:冻结原有模型的全部参数,只训练 adapter 层的参数和 layer normalization 的参数。
实验:主要在分类任务(GLUE)和抽取式问答任务(SQuAD v1.1)上进行,比较微调整个 BERT-Large 和 BERT-Large 加 adapter 只微调 adapter 的性能。
实验发现:
论文 [3-5] 对 [1] 进行了改进和拓展,这些文章解决的主要问题如下:
想要结合来自多个任务的知识,传统的两个方法是按一定顺序微调(sequential fine-tuning)或者多任务学习(multi-task learning)。前者的一大问题是需要先验知识来确定顺序,且模型容易遗忘之前任务学到的知识,后者的问题是不同的任务互相影响,也难以平衡数据集大小差距很大的任务。Adapter 的一个优势是不用更新预训练模型的参数,而是插入比较少的新的参数就可以很好地学会一个任务。此时,adapter 的参数某种程度上就表达了解决这个任务需要的知识。受此启发,[3] 提出如果想要把来自多个任务的知识结合起来,就可以考虑把多个任务的adapter的参数结合起来。
[3] 提出的 AdapterFusion 的多任务学习框架分成两个阶段。首先,针对于每个任务,学习一组新的 adapter 参数。然后,针对于某个特定目标任务,学习一个融合模块把第一步的所有 adapter 结合起来。[3] 假设第二阶段的每个任务都被包括在第一阶段里了,不考虑第二阶段引入新的任务的情况。
网络结构:
▲AdapterFusion的结构
图中展示了 AdapterFusion 的结构(右)和在 transformer 层的放置位置(左)。单个 adapter 层(粉色)和 [1] 中没有区别,但是每个 transformer 层中只保留最顶端的一个 adapter 层,去掉了多头注意力层之后的 adapter 层。
AdapterFusion 层(蓝绿色)的结构就是一个注意力模块。Q 是原来 transformer 层中全连接层的输出,K 和 V 都是各个任务对应的 adapter 的输出。和 transformer 中的 cross attention 相似,先对 QKV 进行一层线性projection,然后 QK 点乘并计算 softmax,再用输出把 V(来自不同任务的 adapter 的输出)加权组合起来,具体公式如下。l 代表层数,t 代表序列位置,n 代表任务(一共 N 个)。抽象地说,任务 X 对应模型的每一层的 AdapterFusion就是根据上一层的输出,从众多任务的知识中选择并应用最适合任务 X 的知识。
初始化:QK 随机初始化,V 初始化成 identity matrix 加上一些小的随机噪声。
训练:
实验:作者挑选了 16 个不同种类、不同大小的任务进行多任务学习。类别包括常识、情感分析、自然语言推理、句子相关性;数据集大小包括 40k 以上、10k 以上、5k 以上、5k 以下。预训练模型使用 BERT-base 和 RoBERTa-base。
实验发现:
论文 [4] 主要的贡献是:1)建立了一系列 adapter 的训练/推理速度相关的测量结果;2)提出了剪枝整个 adapter 层的方法 AdapterDrop,加快了多任务同时推理的速度;3)建立了对 AdapterFusion 进行剪枝的结果。
Adapter 的训练和推理速度。作者们在两种不同的 GPU 上测量了 [1] 和 [3] 两种 adapter 结构和整个模型微调相比的训练和推理速度,结果如下图。Adapter 的训练会比整个模型微调快 60% 左右,推理会比使用原模型慢 4%-6%。
3.2.1 AdapterDrop
为了加快推理速度,在推理时可以对某几层的 adapter 进行剪枝。根据 [1] 的结论,靠近输入的 adapter 被剪掉后对性能影响更小。因此,AdapterDrop 的作者提出,推理时可以剪掉最下方 n 层的 adapter,也就是最靠近输入的前 n 层。为了尽可能地减小掉点,作者设计了两种训练方案:(1)specialized AdapterDrop:训练时固定 n,训练后的模型推理时也固定剪掉前 n 层;(2)robust AdapterDrop:训练时每个 batch 都随机选取 n 的大小,训练后的模型可以适应多个 n。由于原有模型其他参数是不训练的,在训练时梯度就可以只回传到保留 adapter 的最早一层即可(见下图)。
▲标准的adapter训练(中)和AdapterDrop的训练(右)
实验结果:在 GLUE 的多个任务上,两种 AdapterDrop 可以做到推理时 n=5 以下掉点都不太严重,而传统的 adapter 在 n>1 时性能下降就很快了。当去除掉五层的 adapter 时,训练速度可以加快 26%,多任务同时推理的速度可以加快 21%-42%,超过了原模型的推理速度。要注意为了更凸显 AdapterDrop 的优势,作者测量速度的场景是多任务同时推理,也就是说输入文本,模型生成多个任务的输出。
3.2.2 对 AdapterFusion 进行剪枝
作者首先测量了 AdapterFusion (AF,[3])的训练和推理时间,发现和原模型整体微调和推理相比,每层 8 个adapter 的 AF 的训练速度大约慢 47%,推理速度大约慢 62%,主要是因为 adapter 需要逐个推理。作者用 8 个 GLUE 的任务(去除 WNLI)训练了一个 AF 模型,在上面实验了两种加速 AdapterFusion 的思路:
Compacter 这一结构来自论文 [5]。作者沿用了 [1] 的 adapter 放置位置和训练方式,只是重新设计了更加轻量化的 adapter 结构,使得只需要新增原模型大约 0.05%-0.2% 的参数量便可在 GLUE 和 SuperGLUE 这些 benchmark 上达到比较好的表现。
网络结构:
▲Compacter的结构
实验:作者主要使用了 T5-base 在 GLUE 和 SuperGLUE 的任务上进行了实验。对比了 Compacter,整个模型微调,以及一系列参数高效的方法。对 compacter,作者实验了无低秩分解的版本进行对照,也实验了类似 [3] 每个transformer层只保留靠近输出的一个 adapter 的结构(称作 compacter++)。
实验结果:
这里的几篇论文 [6-12] 都利用了 adapter 设计了一些特定问题的解决方案,有的方法重在参数高效,有的方法重在对原模型的效果进行进一步提升。篇幅限制,这部分对每篇论文只做简略介绍。
本篇论文 [6] 主要应用了 adapter 来解决两个机器翻译(NMT)的问题:(1)域适应(domain adaptation)和(2)大规模多语种 NMT。作者主要采用的框架是先预训练一个基础模型,再根据每个目标任务插入一个新的 adapter 进行微调。文章主要的贡献是展现了在 NMT 任务上 adapter 类的方法可以做到和整个模型微调达到相似性能,同时更加参数高效。另外,多语种 NMT 任务上可以做到单个模型同时在资源少和多的语言上表现良好。
本篇论文 [8] 主要的贡献是用 adapter 以一种模块化的方式向预训练语言模型中插入知识,来解决一些知识密集型的 NLP 任务(关系分类、实体类型识别、问答等等)。作者通过训练两个 adapter 来把两种类型的知识引入 RoBERTa:(1)事实性知识,(2)语言学类的知识。两个 adapter 分别训练,互不影响。
▲K-Adapter的结构(左)和训练方式(右)
和前文总结过的 AdapterFusion 以及 K-Adapter 类似,MAD-X [9] 这篇论文的目标也是用 adapter 来学习和存储模块化的知识,做到“即插即用”。AdapterFusion 的目标是让小训练集的任务使用大训练集的任务的知识,而 MAD-X 的目标是在同一个任务下让低资源的语言使用高资源的语言的知识。
为了解耦语言和任务,作者提出分别训练相对应的 adapter,这样想要解决一个低资源语言 L 的任务 T 时,可以使用对应语言 L 的 adapter,搭配上在其他语言 L' 上训练的任务 T 的 adapter。在这个框架的基础上,作者还设计了 invertible adapter 作为学习语言知识的 adapter 的一部分。
网络结构:仍然是在每个 transformer 层中插入 adapter(下图),其中 language adapter 和 task adapter 沿用 AdapterFusion 的网络结构,invertible adapter 是一个 token 层面的映射函数,和 language adapter 一起训练,可以理解成在 multilingual embedding 上再为每种语言学习一个专用的 embedding 函数,但是比每种目标语言重新训练 embedding 更加参数高效。
▲MAD-X中三类adapter的放置方式(左)和invertible adapter的结构(右)
训练和推理:首先为每种语言训练 language adapter 和 invertible adapter,用的任务是 MLM。然后再插入某任务专用的 adapter,配合源语言的 language adapter 和 invertible adapter 在源语言的训练集上训练。推理时,使用目标语言的 language adapter 和 invertible adapter,再配合源语言的 task adapter。
实验和发现:
1. 作者主要在命名实体识别、问答、因果常识推理上进行跨语言迁移的实验,选取了 16 种来自各种语系并且训练集资源大小不一的语言两两配对进行实验。作者在 XLM-R 上加入 adapter,对比的基线模型包括 mBERT 和 XLM-R,还有在目标语言上进行预训练过的 XLM-R。
2. 对于预训练阶段没有出现过的语言,XLM-R 和只使用 task adapter 的 MAD-X 表现都很差,在目标语言进行预训练之后,XLM-R 效果有很大提升。
3. NER 任务上,language adapter 和 invertible adapter 都对性能影响很大。MAD-X 对高资源向低资源语言的迁移帮助最大。
4. 因果常识推理任务上,MAD-X 和目标语言上预训练的 XLM-R 表现类似;问答任务上,后者似乎在比 MAD-X 表现更好。但是 MAD-X 训练的参数更少。
下面列举了思路和 adapter 相近,但是网络结构设计不同的文章,这里就不详细介绍了,也推荐 ICLR 2022 的文章 [16](或者何俊贤大大亲自讲解的视频)。
▲三种 adapter 类的结构(adapter,prefix tuning,LoRA),图片来自 [16]。
参考文献
[1] Houlsby, N., Giurgiu, A., Jastrzebski, S., Morrone, B., Laroussilhe, Q. D., Gesmundo, A., Attariyan, M., & Gelly, S. (2019). Parameter-Efficient Transfer Learning for NLP. Proceedings of the 36th International Conference on Machine Learning, 2790–2799. https://proceedings.mlr.press/v97/houlsby19a.html
[2] Rebuffi, S. A., Bilen, H., & Vedaldi, A. (2017). Learning multiple visual domains with residual adapters. Advances in neural information processing systems,30. https://proceedings.neurips.cc/paper/2017/file/e7b24b112a44fdd9ee93bdf998c6ca0e-Paper.pdf
[3] Pfeiffer, J., Kamath, A., Rücklé, A., Cho, K., & Gurevych, I. (2021). AdapterFusion: Non-Destructive Task Composition for Transfer Learning. Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: Main Volume, 487–503. https://doi.org/10.18653/v1/2021.eacl-main.39
[4] Rücklé, A., Geigle, G., Glockner, M., Beck, T., Pfeiffer, J., Reimers, N., & Gurevych, I. (2021). AdapterDrop: On the Efficiency of Adapters in Transformers. Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing, 7930–7946. https://doi.org/10.18653/v1/2021.emnlp-main.626
[5] Karimi Mahabadi, R., Henderson, J., & Ruder, S. (2021). Compacter: Efficient Low-Rank Hypercomplex Adapter Layers. Advances in Neural Information Processing Systems, 34, 1022–1035. https://proceedings.neurips.cc/paper/2021/hash/081be9fdff07f3bc808f935906ef70c0-Abstract.html
[6] Bapna, A., & Firat, O. (2019). Simple, Scalable Adaptation for Neural Machine Translation. Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP), 1538–1548. https://doi.org/10.18653/v1/D19-1165 [7] Vilar, D. (2018). Learning Hidden Unit Contribution for Adapting Neural Machine Translation Models. Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 2 (Short Papers), 500–505. https://doi.org/10.18653/v1/N18-2080
[8] Wang, R., Tang, D., Duan, N., Wei, Z., Huang, X., Ji, J., Cao, G., Jiang, D., & Zhou, M. (2021). K-Adapter: Infusing Knowledge into Pre-Trained Models with Adapters. Findings of the Association for Computational Linguistics: ACL-IJCNLP 2021, 1405–1418. https://doi.org/10.18653/v1/2021.findings-acl.121
[9] Pfeiffer, J., Vulić, I., Gurevych, I., & Ruder, S. (2020). MAD-X: An Adapter-Based Framework for Multi-Task Cross-Lingual Transfer (arXiv:2005.00052). arXiv. http://arxiv.org/abs/2005.00052
[10] Üstün, A., Bisazza, A., Bouma, G., & van Noord, G. (2020). UDapter: Language Adaptation for Truly Universal Dependency Parsing. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), 2302–2315. https://doi.org/10.18653/v1/2020.emnlp-main.180
[11] Philip, J., Berard, A., Gallé, M., & Besacier, L. (2020). Monolingual Adapters for Zero-Shot Neural Machine Translation. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), 4465–4470. https://doi.org/10.18653/v1/2020.emnlp-main.361
[12] Lauscher, A., Majewska, O., Ribeiro, L. F. R., Gurevych, I., Rozanov, N., & Glavaš, G. (2020). Common Sense or World Knowledge? Investigating Adapter-Based Knowledge Injection into Pretrained Transformers. Proceedings of Deep Learning Inside Out (DeeLIO): The First Workshop on Knowledge Extraction and Integration for Deep Learning Architectures, 43–49. https://doi.org/10.18653/v1/2020.deelio-1.5
[13] Stickland, A. C., & Murray, I. (2019). BERT and PALs: Projected Attention Layers for Efficient Adaptation in Multi-Task Learning. Proceedings of the 36th International Conference on Machine Learning, 5986–5995. https://proceedings.mlr.press/v97/stickland19a.html
[14] Li, X. L., & Liang, P. (2021). Prefix-Tuning: Optimizing Continuous Prompts for Generation. Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1: Long Papers), 4582–4597. https://doi.org/10.18653/v1/2021.acl-long.353
[15] Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., Wang, L., & Chen, W. (2021). LoRA: Low-Rank Adaptation of Large Language Models (arXiv:2106.09685). arXiv. http://arxiv.org/abs/2106.09685
[16] He, J., Zhou, C., Ma, X., Berg-Kirkpatrick, T., & Neubig, G. (2022). Towards a Unified View of Parameter-Efficient Transfer Learning (arXiv:2110.04366). arXiv. http://arxiv.org/abs/2110.04366
📝论文解读投稿,让你的文章被更多不同背景、不同方向的人看到,不被石沉大海,或许还能增加不少引用的呦~ 投稿加下面微信备注“投稿”即可。
最近文章
EMNLP 2022 和 COLING 2022,投哪个会议比较好?
ACL'22 | 快手+中科院提出一种数据增强方法:Text Smoothing
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
整理不易,还望给个在看!