©作者 | 常馨

学校 | 北京邮电大学硕士生

研究方向 | NLP、信息检索

论文标题:

Adapt-and-Distill: Developing Small, Fast and Effective

Pretrained Language Models for Domains

收录会议:

ACL 2021

论文链接:

https://arxiv.org/abs/2106.13474

代码链接:

https://github.com/microsoft/unilm/tree/master/adalm

Abstract

大型预训练模型在许多自然语言处理任务中取得了巨大的成功。然而,当这些模型应用于特定的领域时,往往会出现领域迁移(domain shift)的问题,并且会因为延迟和容量限制原因,为微调和在线服务带来挑战。

在本文中,作者引入了框架 AdaLM,来开发用于特定领域的小型、快速且有效的预训练语言模型。

具体是通过适应(adapt)现有的通用预训练模型和在目标领域执行任务独立的知识蒸馏(knowledge distillation)来实现的。作者提出在 adaptation 适应阶段进行特定领域的词汇扩展,并根据语料库的出现概率来自动选择增量词汇的大小。

然后,为压缩用于特定领域的大型预训练模型,作者系统地探讨了不同的压缩策略。作者在生物医学和计算机科学领域上进行了实验,实验结果表明,在特定领域的任务中,该方法比 BERT-BASE 模型具有更好的性能,而且比 BERT-BASE 模型小 3.3 倍,快 5.1 倍。

Intro

BERT、GPT 等预训练语言模型在许多 NLP 任务中取得成功,这些模型有着上亿的参数量,它们在一般领域的大规模语料库上预训练,然后在目标领域的任务上微调。但是直接将这些模型用于特定领域并不简单,首先,庞大的模型尺寸和高延迟使得很难部署在资源有限的边缘设备上,如移动电话。其次,当目标域与一般域之间存在很大差别时,直接在特定任务上微调可能效果并不是最优的。第三,许多领域都有自己的特定术语,这些术语可能并不包含在预训练模型的词汇表中。

为了解决领域迁移问题,近期研究通过持续的预训练,使一般领域预训练模型适应到具体的特定领域。然而,特定领域包含许多域内术语,领域特定词汇在预训练模型的领域适应中起着至关重要的作用。因此在本文中作者提出了一种适应阶段的领域专用词汇扩展。由于我们需要将这些特定词汇划分为 bit 大小的小块,因此确定增量词汇量的大小也很重要。在本文,AdaLM 以语料库出现概率作为度量,来自动优化增量词汇的大小

本文系统探索了将一般 BERT 压缩到特定领域的四种不同策略。

最终在实验中,Adapt-and-Distill 在特定领域的任务中实现了 SOTA 的结果。本文模型结构有 6 层,384 个隐藏维度,该模型优于 BERT-BASE 模型,而且更小、更快。此外,注意到之前没有工作系统探究在特定领域实现有效、高效的小模型的不同策略。

Related Work

3.1 预训练模型的域适应

以往关于预训练模型领域适应的研究大多针对大模型,相关研究通过持续的预训练使大模型适应到不同的领域。但是许多专业领域包含自己的特定词汇,这些词汇并不包含在预训练模型的词汇表中。在生物医学领域有研究者提出了模型 PubMedBERT,从零开始创建词汇,并从零开始对模型进行预训练。

此外,许多领域中没有足够大的语料库来支持从头开始的预训练,有研究者使用域内频繁出现的词汇进行开放域的词汇扩展来解决该问题。但是这种方法忽略了特定领域的子词单位(如词前缀 blasto-:胚;germin-:萌芽),而这些子词是有助于概括领域知识的,避免出现没见过的词。

3.2 任务独立的知识蒸馏

知识蒸馏是一种有效的压缩大模型同时保持准确性的方法。本文关注的是任务独立的知识蒸馏方法,该方法中,知识蒸馏出来的小型预训练模型可以直接微调到下游任务中。

DistilBERT 使用软标签和嵌入输出来监督 student。

TinyBERT 和 MobileBERT 引入自注意分布和隐藏状态来训练 student 模型。

MiniLM 没有对 student 层数进行限制,利用 teacher 最后一个 transformer 层的自注意分布和价值关系来监督 student 模型。

MiniLM 的方法更加灵活,因此我们采用 MiniLM 来压缩大模型

Methods

4.1 Overview:实现特定领域小模型的四种策略

Pretrain-from-scratch:在特定领域从零开始预训练,首先对一个预训练模型进行随机初始化,然后在特定领域语料库上直接对小模型预训练。本文中,作者在 BERT 原始词汇表、从零开始词汇和扩展词汇上进行预训练。

Distill-then-adapt:我们首先使用 MiniLM 中任务独立的知识蒸馏将 BERT 模型蒸馏称一个小模型,然后用 MiniLM 对小模型初始化,并用 BERT 原始词汇和扩展词汇对模型进行持续训练。

Adapt-then-distill:我们选择不同的大模型作为teacher模型,例如 BERT 和不同词汇量的大模型。首先将这些模型适应到特定领域,然后利用 MiniLM 将其压缩为小模型。

Adapt-and-distill:在前面的方法中,在进行知识蒸馏时,我们对 student 模型进行随机初始化。为了得到更好的特定领域的小模型,作者在本文尝试探索了初始化 student 模型的影响。在该方法中,我们分别将大模型和小模型适应到特定领域,然后使用这两个模型分别初始化 teacher 模型和 student 模型。

4.2 Domain Adaptation

AdaLM 为预训练语言模型提供了一个简单有效的域适应框架,其输入为通用预训练语言模型、原始词汇、特定领域的语料库。通过词汇扩展和持续的预训练,AdaLM 将一般模型适应于特定领域。该域适应 pipeline 包含以下三个部分:

● 词汇扩展:给定原始词汇和特定领域语料库的情况下,使用特定领域的子词单位或术语来扩充原始词汇。本文中,我们从目标域中增加特定域的词汇表,同时保持原始 BERT 词汇表不变。

● 由于词汇表大小已经改变,我们不能直接使用 BERT 初始化模型。如图 3,我们使用 BERT 权重初始化原始 embedding 和 transformer 编码器。对于增量词汇表,我们首先用原始词汇表将其标记为子词汇,然后使用其子词 embedding 的平均池化结果来初始化。举例:'lymphoma'一词不在 BERT 的词汇表中,我们将其划分为三个子词(lym,##pho,##ma),'lymphoma' 的 embedding 向量由 'lym','##pho','##ma' 三者 embedding 向量的平均值来初始化。

● 在模型初始化和数据预处理之后,我们利用掩码语言模型损失,使用领域专用语料库对模型持续预训练。(掩码预测与 BERT 保持一致)

4.3 Vocabulary Expansion

这是 AdaLM 的核心模块。它增强了领域特定术语或子词单元来更好地利用领域知识。增量词汇量是词汇扩展的一个重要参数,本文作者引入了一个语料库出现概率作为度量,来自动优化增量词汇大小。我们假设每个子词独立出现,为语料库中的每个子词分配一个与其在语料库中出现频率相等的概率:

则一个子词序列 的概率为子词出现概率 的乘积,我们将其转换为对数形式 。

语料库的概率为 :

我们从 PubMed 语料库中采样了 550k 个句子并且计算了不同词汇量下的出现概率 。

通过比较 BERT 和 PubMedBERT 词汇表出现的概率,我们发现在生物医学领域, 呈对数趋势增加,词汇量达到 70k 后影响不大。PubMedBERT 词汇表的表现与 40k 大小词汇表类似。

作者采用一种简单的方法来确定增量词汇量的大小。即计算每一时刻下的语料库概率 ,当增长率 小于阈值 时,则将 i 时刻的词汇量视为最终的词汇量。

使用此种算法进行特定领域的词汇扩展。最终得到的生物医学领域扩展词汇量为 60k,计算机科学领域扩展词汇量为 50k。

Experiment Details

本文实验在生物医学和计算机科学两个领域上进行。

5.1 Datasets

● Domain corpus:

生物医学领域,我们从 PubMed 摘要中收集了 16GB 语料来适应我们的模型。使用最新的集合,使用与 PubMedBERT 相同的方法对语料库进行预处理。

计算机科学领域,使用 arXiv 数据集中的摘要文本,选取了计算机科学类的摘要,共收集了 300M 条。

● Fine-tuning tasks:

生物医学领域,我们选择了三个任务:命名实体识别(NER)、循证医学信息提取(PICO)、关系提取(RE)。我们在 NER 任务中执行实体级的 F1,在 PICO 任务中执行词级的 macro-F1,RE 任务使用正样本类别评价的 micro-F1。

计算机科学领域,我们对两个分类的下游任务进行微调。ACL-ARC 数据集主要侧重于分析科学工作如何通过不同类型的引文构建其贡献。SCIERC 数据集包括对科学实体及其关系的注释和共参聚类。

5.2 Implementation

使用未封装的 BERT-BASE 作为大模型(12 层,768 隐藏维度),MiniLM 作为小模型(6 层,384 隐藏维度)。

本文利用 MiniLM 来压缩大模型,并且遵循 MiniLM 的设置。对于生物医学任务,遵循 PubMedBERT 的设置来微调三个任务。对于计算机科学任务,遵循 Gururangan 等人研究的设置。

5.3 Results

作者有三个发现:

1、领域特定词汇在领域特定任务中起着重要作用,使用一般词汇进行词汇扩展后比仅使用领域特定词汇更好。

作者观察到,通过扩大词汇量,无论是大模型还是小模型,结果都有所改善。

对于大模型,AdaLM 在每个领域下都取得了最好的结果。

对于小模型,在生物医学领域,无论是从零开始训练还是 distill-then-adapt,增加词汇(AdaLM vocab)的模型都比一般词汇(BERT vocab)的模型或只有领域特定词汇(PubMed vocab)的模型性能更好。此外,可以注意到使用 Distill-then-Adapt 策略的模型f性能已经超越了 BERT 的性能。

在计算机科学领域,采用增量词汇的 distill-then-adapt 模型也表现出很好的性能。其中还可以注意到,从零开始训练时,增加词汇量的模型 b 比普通模型 a 的结果低,这可能是因为词汇量扩大后,从头开始训练的模型需要使用更多的未标记数据进行预测。

2、用一般的语言模型对领域特定文本进行连续的预训练比从头开始进行预训练效果更好。

在本文实验中,发现一般领域模型可以帮助我们的模型更好地学习到目标领域。在生物医学领域,在 distill-then-adapt 策略中使用 MiniLM 模型对模型 d、e、f 进行了初始化。无论使用哪种词汇,对一般语言模型在领域特定词汇上进行持续预训练都比从零开始预训练效果要好。另一方面,对于没有大量未标记文本的领域,比如计算机科学领域,持续预训练也表现出了更好的效果。d 比 b、c 要更好。

3、Adapt-and-Distill 是开发一个任务独立、特定领域的小型预训练模型的最佳策略。

在 Adapt-then-Distill 部分,验证了之前研究的的结论:好的 teacher 模型可以产生好的 student 模型。采用大模型中表现最好的 AdaLM 模型作为 teacher,在生物医学领域和计算机科学领域取得了很好的结果,优于其他特定领域的大模型。

此外,我们发现一个更好的初始化 student 模型也有助于得到一个更好的小模型。在 Adapt-and-Distill 部分,我们分别对大模型和小模型进行自适应,然后以自适应的大模型为 teacher,使用自适应的小模型进行初始化,对大模型进行压缩。在生物医学领域,由模型 f 初始化的模型j在小模型中取得了最佳的结果,而且比 BERT 模型还要好。在计算机科学领域,由模型 d 初始化的模型 g 是唯一的比 BERT 性能更好的小模型。

5.4 Analysis

5.4.1 Inference Speed

比较 AdaLM 和 BERT 模型在生物医学领域的参数量大小和推理速度。

首先可以发现词汇扩展对模型推理速度有着一定程度的改善。我们在使用 AdaLM 词汇的大模型中增加了 embedding 权重中大约 20M 的参数,但其推理速度比 BERT 和 PubMedBERT 略快。这是因为大部分领域特定的术语被分解成碎片子词,因此使用增量词汇表得到的 token 序列长度小于使用原始词汇表得到的序列长度,这就减小了计算量。同时,在嵌入层中,模型只需要将子词的 id 映射到它们的稠密表示中,这不受参数量的影响。小模型也表现出了同样的现象。

此外,小模型 AdaLM 表现出了巨大的潜力。与包含 768 个隐藏维度的 12 层大模型相比,包含 384 个隐藏维度的 6 层小模型的模型大小缩小了 3.3 倍,效率提高了 5.1 倍,但其性能与 BERT-BASE 相似甚至更好。

5.4.2 Impact of Training Time

本节作者通过计算域适应后的模型训练时间来检验模型性能。因为生物医学领域有着丰富的无标记文本,所以作者将特定领域的适应大模型与 BioBERT 进行对比。每经过 24 小时连续的预训练,就会在下游任务对适应模型进行调整。表 6 中 AdaLM 代表大型适应模型,训练时间 0 小时的 AdaLM 代表直接微调初始化的模型,而没有任何持续的预训练。

我们发现,BERT 略优于 0 小时的 AdaLM,但 24 小时后 AdaLM 的表现优于 BioBERT,这表明领域特定词汇对预训练模型的领域适应至关重要。该实验表现了模型在生物医学领域的优秀性能。而且在限制计算条件下,AdaLM 也表现出了比 BioBERT 更好的性能。

5.4.3 Impact of Vocabulary Size

作者在生物医学领域进行了不同词汇量的实验,选用生物医学领域的 AdaLM 大模型。

可以观察到 60k 词汇量的模型在消融研究中取得了最好的结果。令人惊讶的是,尽管拥有更大的词汇表,但 70k 和 80k 的模型并没有表现出更强的性能。对此一种可能的解释是,更大的词汇集可能包含一些更复杂但使用频率较低的词汇,这些词汇不能通过持续的预训练很好地学习。

例如:“ferrocytochrome” 包含在 70k、80k 规模的词汇表中,但是其在 60k 词汇表中被分割为(‘ferrocy’,‘##tochrom’,‘##e’),在采样数据中 ‘ferrocytochrome’ 出现次数少于 100 词,但是子词 ‘##tochrom’ 出现超过 10k 次,‘ferrocy’ 出现超过 200 次。由于这种稀疏性的原因,这些生僻词的表示就不能很好地学习到。

5.4.4 Vocabulary Visualization

与只使用领域特定词汇表、随机初始化的模型 PubMedBERT 相比,保持通用词汇表和通用语言模型的权重有助于我们更好地利用已有知识和 word embedding

因此为了评估扩展词汇的重要性,作者在生物医学领域的 AdaLM 模型中计算了预训练前后嵌入权值的 L2 距离。

我们观察到领域特定词汇在训练前发生了很大的变化,这表明本文模型学习了很多关于这些领域特定词汇的信息。我们还观察到许多原始子词的嵌入权值变化不大,这表明许多通用词汇可以直接用于持续训练

Conclusion

在本文中,作者研究了将一般通用 BERT 模型压缩到特定领域的几种变体。本文实验表明,为获得一个任务独立的、用于特定领域的预训练模型,最佳策略是将大模型和小模型分别适应到特定的领域,然后以适应的小模型初始化来压缩适应的大模型。本文结果表明,适应后的 384 个隐藏维度的 6 层小模型性能优于 BERT-BASE 模型,并且相比其模型小了 3.3 倍,快了 5.0 倍。

本文研究结果表明,领域特定词汇和一般领域语言模型在预训练模型的域适应中起着重要作用。在未来的研究中,领域适应中的其它问题还值得进一步的研究,如数据选择和有效适应等。

目前对于 Domain Adaptation 的研究方法主要可分为三类:Model-centric、Data-centric 和融合前两者的 Hybrid 方法。在这篇文章中,作者主要关注了模型架构、特征空间增强、数据选择、预训练技术等问题,简单地融合了 Model-centric 和 Data-centric 方法,验证了有效进行域适应的一些策略。

总体来讲本文虽然没有提出新颖的复杂模型,但是对于 NLP 中域适应问题的研究还是一个值得关注的方向的。此外由于在实际应用中,不仅目标域中的数据是没有标注的,甚至在源域中收集标签都很困难,因此 few-shot unsupervised domain adaptation 问题也值得进一步研究。

参考文献

[1] Ramponi A, Plank B. Neural Unsupervised Domain Adaptation in NLP---A Survey[J]. arXiv preprint arXiv:2006.00632, 2020.

[2] Yue X, Zheng Z, Zhang S, et al. Prototypical Cross-domain Self-supervised Learning for Few-shot Unsupervised Domain Adaptation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 13834-13844.

[3] Yao Y, Huang S, Wang W, et al. Adapt-and-Distill: Developing Small, Fast and Effective Pretrained Language Models for Domains[J]. arXiv preprint arXiv:2106.13474, 2021.

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

微软提出AdaLM,用于开发小型、快速且有效的领域预训练语言模型相关推荐

  1. EMNLP 2021 | 大道至简:微软提出可生成高质量文本表示的预训练语言模型

    ©作者 | 常馨 学校 | 北京邮电大学硕士生 研究方向 | NLP.信息检索 Abstract 基于自动编码器的语言模型在 Dense Retrieval(DR)中受到越来越多的关注,因为其训练编码 ...

  2. 《预训练周刊》第22期:Fastformer:加法注意力就是你所需要的、用于蛋白建模的大规模预训练语言模型...

    No.22 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第22期&l ...

  3. 微软统一预训练语言模型UniLM 2.0解读

    微软研究院在2月底发布的UniLM 2.0(Unified Language Model \ 统一语言模型)文章,相比于19年上半年发布的UniLM 1.0,更加有效地整合了自然语言理解(NLU)与自 ...

  4. scBERT:用于scRNA-seq细胞类型注释的大规模预训练语言模型

    目录 背景与动机 结果 scBERT gene embedding expression embedding 结果表现 背景与动机 单细胞RNA测序(scRNA-seq)已广泛用于在单细胞水平表征复杂 ...

  5. 论文浅尝 | 探索将预训练语言模型用于事件抽取和事件生成

    论文笔记整理:郝凯龙,南京大学硕士 链接:https://www.aclweb.org/anthology/P19-1522.pdf 动机 传统的 ACE 事件抽取任务依赖于人工标注的数据,耗费大量的 ...

  6. BERT论文翻译:用于语言理解的深度双向Transformer的预训练

    Jacob Devlin Ming-Wei Chang Kenton Lee kristina Toutanova Google AI Language {jacobdevlin, mingweich ...

  7. 【论文阅读】用于自动中文作文评分的多阶段预训练

    摘要 这篇文章提出了一个基于预训练的中文作品评分方法.方法包含3个成分:弱监督预训练,有监督的交叉提示(cross-prompt)微调 和 有监督的目标提示(target-prompt)微调. 一个文 ...

  8. 超越Facebook、谷歌、微软,百度发布全球首个百亿参数对话预训练生成模型PLATO-XL...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 和 AI 进行无障碍的对话,是什么样的体验?你或许能够在这篇文章里找到 ...

  9. 面向开放域密集检索多视图文档表示学习,微软提出​MVR,性能SOTA!(ACL 2022)...

    关注公众号,发现CV技术之美 本文分享 ACL 2022 论文『Multi-View Document Representation Learning for Open-Domain Dense Re ...

最新文章

  1. 洛谷 P1598 垂直柱状图【字符串+模拟】
  2. java.getRunTime.exe
  3. MEMS传感器的未来在哪?
  4. 【APICloud系列|28】 UIChatBox 模块(聊天输入框)的实现
  5. linux内核module_init,Linux内核模块中module_init和init_module有什么区别?
  6. 得到本机或者网络上共享打印机的状态和打印任务
  7. jquery load 和 iframe 比较
  8. php随机分配的方法,PHP生成指定随机字符串的简单实现方法
  9. FFmpeg的编解码(二)
  10. 使用xsd文件验证xml
  11. 2022焊工(初级)操作证考试题库及答案
  12. jmeter 计数器的使用
  13. 理解析取范式及合取范式的意义
  14. java星号心形代码_心形原创符号
  15. mysql 周平均值_SQL语句: 按周、月统计总值 和 平均值
  16. 验证码的java实现
  17. 实验九 使用异步方式实现文件读\写
  18. 漏电继电器LLJ-100FS
  19. 面试总结-----工程化软件项目开发的流程、步骤
  20. 屏幕录像软件使用心得

热门文章

  1. python requests详解_python的requests模块参数详解
  2. vivado开发编译流程
  3. linux重启终端后go命令,Linux基础命令之关机,重启,注销-Go语言中文社区
  4. 直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类
  5. 教你一步步发布一个开源库到 JCenter
  6. 运维人员究竟如何提升价值,持续获得高薪?
  7. linux中更新perl的版本
  8. 二分图最大匹配模板 HDU1083
  9. canvas中strokeRect的渲染问题strokeRect把一像素的边框渲染成两像素
  10. WPF Template模版之DataTemplate与ControlTemplate的关系和应用【二】