徐超
机器学习尤其是深度学习将 NLP 推向了前所未有的高度,近几年出现的预训练模型更是绽放异彩。在训练机器学习模型时一般假设训练数据与测试数据(或者目标领域中的数据)的分布一致,然而这种假设经常不成立。这时候我们就面临着 dataset shift 的问题,在 NLP 中经常被称为 domain shift。并且目标领域的带标签数据很难获取(Y scarcity),甚至连预训练模型用的数据都是过于稀疏的,很少有跟目标领域相关的语料(X scarcity)。这就需要使用一种特殊类型的迁移学习技术——Domain Adaptation(领域自适应)。
何为 Domain Adaptation
领域(Domain)的形式化定义为 ,其中 是特征空间, 是特征在特征空间的边缘分布函数。任务(Task)的定义为 ,其中 是 label 空间, 是从训练数据 (X, Y) 中学习到的。Domain Adaptation 的目的是从某个源领域(source domain) 中的数据学习 使得它可以在另一个目标领域 获得很好的泛化性能,其中 。Domain Adaptation 本质上是一种特殊形式的迁移学习,即直推式迁移学习(transductive transfer learning)。
Domain 在 NLP 中的含义
在 NLP 中,关于 Domain 的组成并没有形成共识,一般将某个特定的语料定义为一个 domain,这个语料可能属于某个主题、体裁、笔风、创作流派甚至某种语言。但这种定义显然比较模糊,我们有必要重新审议下 Domain 在 NLP 中的定义。Variety Space:由于 NLP 面临着数据在多个维度(这些维度可能未知)上的不同质性,Plank(2016)提出了一个的直接的定义——Variety Space。在 Varziety Space 理论中一个语料可被视为一个子空间或者子区域,Variety Space 中的一个样本。具体来说,语料是由一些实例组成,这些实例是从一个潜在未知的高维的 variety space 中抽取出来的,这个空间的维度是模糊的潜在因素,可以与体裁(例如科学论文、新闻报导或者散文),子领域(例如财经、政治、环保与娱乐等),社会人口方面(如两性),甚至抽样方式(如句子长度,主管偏好)以及其他未知因素相关。
Domain Adaptation 的类型
按照现在 Data Science 界流行的分类方式,可以分为:
另外还有综合运用 Model-Centric 与 Data-Centric 技术的综合方法,统称为 Hybird 法。
3.1 Feature-centric
在 Feature-centric 方法中存在两个不同的研究方向:
沿着这两个方向,Feature-centric 方法包含两类子方法:Pivots-based DA 与 Autoencoder-based DA 。Pivots-based DA 旨在通过使用源领域与目标领域的无标签数据去寻找两个领域通用的特征。最简单的便是 Frustratingly Easy Domain Adaptation (FEDA),假设 x 是原始特征特征,那么源领域与目标领域在增强后的特征空间可表示为
其中第一组特征表示通用共享特征,其他为各个领域特有的特征。如果有 K 个领域,那么增强后的特征空间的维度将是原始特征空间的 K+1 倍,实际每个实例在增强后的特种空间内是一个稀疏向量,优化后并不会增加太多内存开销。这个方法虽然很简单,但却取得了很好的效果,已成为一个很强的 baseline。
这种方法为何如此有效呢?假设你的任务是坐词性标注,假设词表里面有两个词,“the” 与 “monitor” 其中 “the”在不同领域都是限定词,但 “monitor” 在源领域是动词在目标领域是名词。采用 one hot 编码,在源领域与目标领域的特征向量分别为 [1,1,1,1,0,0] 与 [1,1,0,0,1,1] ,采用 FEDA 可以为限定词的分类模型赋予权重 [1,0,0,0,0,0] ,即给予共享的通用特征 “the” 很高的权重,表示它在各个领域都是限定词。类似的,为名词分类模型赋予权重 [0,0,0,0,0,1] ,表示 “monitor” 仅仅在目标领域是名词。
Structural Correspondence Learning(SCL)是比较 General 的方法,它可以应用在目标领域没有带标签数据的场景。这种方法比较 tricky,需要手动的构建 Pivot Feature。所谓 Pivot Feature 就是频繁地在多个跨领域出现并且行为表现也相似的特征。以下面这句摘自 MEDLINE 语料中的句子为例The oncogenic mutated forms of the ras proteins are constitutively active and interfere with normal signal transduction.这句话里面的 “signal” 在此处是名词,但如果词性标注模型是用 WSJ 语料训练的,会将其错误的识别为形容词。对比 MEDLINE 语料中 signal 这个词的上下文与 WSJ 语料中名词的上下文,可以发现一些共同的 Pattern,比如都出现在 required、from 与 for 这些词前面,因此可以用这些共同的 Pattern 作为 Feature,训练的模型就可以获得很好的跨领域泛化能力。这些 Pattern 就是 Pivot Feature。
实际为了增加 feature 取值的平滑度,降低过拟合风险,会为每个 Pivot Feature 训练一个二分类模型,给定一个句子,每个 Pivot Feature 的值即为这句话输入对应二分类模型得到的 score。此外,还对这些二分类模型的权重做了 SVD 分解,整个流程如下。
Autoencoder-based DA:众所周知,深度学习可以捕捉到输入数据中潜在的生成因子,这些因子可以解释数据的多样性。Denoising Autoencoder(DAE)就是一种通过无监督地学习输入数据的潜在表征,从而捕捉这些潜在因子的模型。Autoencoder-based DA 假定这种表征具有跨领域的泛化能力,其具体步骤分为两步:
SDA的缺点是计算量较大,并且对高维特征的扩展能力较差,一个改进方案是使用marginalized stacked denoising autoencoder(MSDA)。
3.2 Loss-centric methods
Loss-centric methods 中具有代表性的是 Domain adversaries 与 instance-level 的 Reweighting 方法。Domain adversaries:这种方法的灵感来自 GAN,旨在学习一种可以减少源领域与目标领域的分布差异的潜在特征表征方式。也是分两步走,先通过对抗学习,来训练通用的特征提取器
Reweighting:这种方法的核心思想是给每条训练数据赋予一个权重,这个权重的大小与目标领域的相似度成正比。这种方法目前还很不成熟,这方面的 paper 只见过这篇,文中提出的方法需要目标领域有的 few shot 数据,权重是通过先训练一个目标领域的分类器计算的。
文中很多对统计学的概念的论述并不清楚,而且最后对 weight 的计算做了很多很突兀的简化处理,比如某个权重因子全部设为 1 或者要么是 0 要么是 1。
3.3 Data-centric methods
Data-centric方法主要有三种:Pseudo-labeling、Data selection 与 Pre-training。Pseudo-labeling:即虚标法,这种方法使用类似于 self-training, co-training and tri-training 等 Bootstrap 方法来迭代地标注数据 训练模型。
具有代表性的是 Multi-task Tri-training,这种方法地创新之处在于三个模型的底层参数共享,如下图所示,都是 BiLSTM 的 encoder,模型之间的区别仅在于头部分类器部分,所以大大减少了计算量。当然这种方法提出的比较早,现在你大可以使用各种 Transformer 结构的 Encoder。
在训练过程中,每个 epoch 都会抽取一定数量的无标签样本,然后用三个模型去做标注,如果有一个模型的标注的置信度超过某个阈值,就将这个样本加入到训练数据中。
Data selection:这种方法旨在从源数据中选择合适的样本用来训练目标领域的模型,通常会使用一些衡量领域相似度的指标(比如基于词或者主题分布的 Jensen-Shannon divergence)来选择数据。具有代表性的是 Dynamic data selection 方法,简单却很有效。这个方法在每个 epoch 会选择一定数量 的句子用于训练模型,挑选的方式是根据某个基于领域相似度计算出来的分布。 没经过 个 epoch 会缩减一次,缩减的因子为 ,即
Pre-training:如今,在基于 transformer 结构的的预训练模型上做微调几乎已经成为标准范式。虽然训练预训练模型的语料非常大,但也不可能覆盖到所有垂直领域,进一步预训练还是有提升空间的,这就是 Adaptive pre-training,即在通用预训练模型的基础上,基于垂直领域的数据与更具体地辅助任务上做进一步地预训练。这方面的而代表性工作是多阶段预训练,每个阶段使用在分布上更加接近具体任务的无标签数据,一般在通用预训练模型的基础上在做两个阶段的预训练:DAPT(domain-adaptive pretraining):在目标领域的数据上做预训练。TAPT(task-adaptive pretraining):在具体任务的无标签数据上做训练。Broad-domain -> domain-specific -> task-specific
混合法综合运用了 model-centric 与 data-centric 方法,一般比较复杂,但效果也会更好,这里比较推荐看一下 CGCT 方法,这种方法综合运用了 Domain adversaries、GCN、Curriculum Learning、Co-Teaching 等方法,是非常好的学习案例,而且效果也不错,作者也公布了源码,可以拿来使用,具体详见:https://zhuanlan.zhihu.com/p/386924263
[1] Alan Ramponi, Barbara Plank. Neural Unsupervised Domain Adaptation in NLP—A Survey.
[2] Hal Daume´ III. Frustratingly Easy Domain Adaptation.
[3] John Blitzer, Ryan McDonald, and Fernando Pereira. 2006. Domain adaptation with structural correspondence learning.
[4] Xavier Glorot, Antoine Bordes, and Yoshua Bengio. 2011. Domain adaptation for large-scale sentiment classification: A deep learning approach.
[5] Jing Jiang and ChengXiang Zhai. 2007. Instance weighting for domain adaptation in nlp.
[6] Sebastian Ruder and Barbara Plank. 2018. Strong baselines for neural semi-supervised learning under domain Shift.
[7] Suchin Gururangan, Ana Marasovi´c, Swabha Swayamdipta, Kyle Lo, Iz Beltagy, Doug Downey, and Noah A. Smith. 2020. Don’t stop pretraining: Adapt language models to domains and tasks.
感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
· 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
· 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
· PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道: