
泻药。大部分回答都是四五年前的了,现在是2022.7.13,我们刚好完成了部分迁移学习的调研,笔者也是做持续学习的,在这里就借NAACL‘22 Workshop上对信息抽取的迁移学习的讨论,来谈一下未来的发展。
迁移学习的本质是适应(adaptation)。适应可以是适应一个任务、适应一种模态、适应一个领域、适应一种语言、适应一份新数据等。所谓“适应”,有两方面的内涵:一是只有已经能用的东西才能“适应”新东西,二是这个能用的东西需要在别的场景下发挥作用。
这段话,已经跟你说明白了迁移学习各个方向的大致思路,剩下来的不过是记住术语而已。适应一个任务叫Cross-type/task Transfer(CV叫Multi-task Learning);适应一个领域(多用于CV)叫Cross-domain Learning或Meta-learning,也有一个响亮的名字Domain Adaptation;适应一种模态叫Cross-modal Transfer;适应一种语言叫Cross-lingual Transfer;适应一份新数据叫Knowledge Transfer,因为比较重要所以学界给了一个厉害的名字,叫持续学习(Continual/Life-long Learning),本质不过是时序上的适应。
探索一个方法的实现几乎都是一致的,由于笔者做的是信息抽取的迁移学习,就在这里借信息抽取谈一谈迁移学习的发展前景。
先说结论:迁移学习是整个深度学习领域的目前的主流范式,也是最热门的方向之一。
第一个范式时代是有监督时代。手写字体的识别精度很差,有人提出了可以用深度学习识别,出现了有监督学习。现在大家都在标注数据集,就是因为数据集质量越高,数量越大,模型效果越好。CV界的代表例是ImageNet,NLP界的代表例是BERT。
第二个范式时代是弱/无监督时代。数据标注成本太高,各种弱标注(标注部分数据或标签不足以完成整个任务)和无标注(纯文本或纯图片)方法诞生,例如对比学习、能量模型方法,从而产生了大量弱监督、无监督模型和方法。CV界的代表例是DC-GAN,NLP界的代表例是GPT-2。
第三个范式时代是少/零样本时代,也就是迁移学习(领域自适应)时代。对比学习等方法仍需要进行大量数据的训练,选择数据的成本甚至比有监督学习更高,因此不需要任何数据就能在新任务上work的泛化性愈发显得重要。迁移学习在CV和NLP界的方法基本一致,都没有专门的模型,而是使用各种tricks对模型进行调整。这是我们所处的时代,Domain Adaptation也是目前发展最快的范式。
第四个范式时代是无学习生成时代,一切都可以通过更改输入解决。CV界代表例是CLIP,NLP界代表例是GPT-3。
迁移学习的主流发展方向自从提出,至今都没有改变。由于迁移学习的根本目标是学习人脑的泛化能力,其主流方向一直是如何降低迁移学习的成本(迁移学习可规模化,一般称为Scalability),以及想办法弄清楚迁移学习的原理。
降低成本方面,例如Cross-task Transfer,热点就集中在如何减少人力成本。例如Information Extraction的Cross-task任务需要为模型的每一个任务设计一个专有的Template(模板),并且要尽量优化,那么可规模性就很差,1000个任务需要1000个模板,这是无法接受的。现在由于GPT-3的提出,用Prompt Tuning做Template的自动生成就变成了当前的研究热点。又例如Continual Learning,热点就集中在如何缩小Memory Replay的记忆成本(数据大小),因为学了后面的知识还要保存前面的知识是不可规模化的,假设一个机器学了三年的知识,存储的内容可能到达PetaByte的量级,存储和训练时间都成为问题。
工作原理方面,例如Cross-task Transfer,关键在于如何选择模板。怎样的模板才是好的?哪些词汇种子最好?为什么是最好的呢?这就是迁移学习的最优化工作,根据大量实验推导出迁移学习的最优情况,并且尝试分析为什么会有这么好的性能。就像大家调参时候常用的42号种子,相信没有几位同学知道原理是什么,如果有人发现了,估计观众将是整个DL社区,绝对是火出圈的作品。虽然目前还没人能解释清楚为什么42号最好,但是类似的最优化理论和框架建设都在蓬勃发展,而这和迁移学习中的原理挖掘是完全一致的。
如果你对具体内容感兴趣,请继续读,下面有每个热点导向的具体解释。
由于本文旨在提出目前的研究热点,不是基础性文章,我们不对基本的IE模型做深入分析。但是我们提供一个最近提出的通用IE模型让大家大概有一个概念:One IE。先看看OneIE的结构图:
怎么理解呢?先过embedding层,将word嵌入表征空间;再过tokenization层,识别出有意义的信息;第三步进行对识别出的信息的分类,获得token的类别;最后根据分类结果构造知识图,完成整个IE任务。
如此的架构可以提取出质量非常高的mention(type的实例),但是需要非常多的annotation。对于每一个domain,都必须重新设计一次annotation,费时费力。为了解决这个问题,迁移学习快速兴起。
IE的迁移学习基本上分为三个大方向:领域迁移、语言迁移、持续学习。
任务迁移在CV里面叫做Domain Adaption(领域迁移),本质就是为两个任务找到一个相同的semantic space,从而在新任务上达到不错的效果。
实现这个目标最火的方法就是为每个任务学习一个表征。
用种子(任务的关联词语)去学习一个任务的表征可以有效提升任务间的可迁移性。代表性工作流程:
另外也可以用任务的描述去学习任务的表征:
问题是,很难判断表征学习什么时候最优。大多数情况下,换掉一个表征/种子,发现结果更好了,但是我们无法说明为什么这样会更好。因此,搜索这个最优值的架构或者理论都将成为接下来研究的热点。本质上这就是在做最优化,跟NAS有异曲同工之妙。
QA的本质是模板。为什么这么说?看看下图立刻明白:
由于Large LM有很强的归纳能力,我们可以使用QA表现很好的Bert QA作为IE的替代,结果发现效果竟然比直接进行抽取更好。
GPT-3登场后,各种Prompt方法层出不穷,已经可以使用Prompt来做IE了,具体工作流程如下图:
原理是,针对每个task设计一个template,这个template里面有一些Tune过的标记,让GPT-3这种怪物识别成自己要回答的内容,从而得到针对每个标记的回答。
下面是这三种方法的总结。
语言迁移的基本思想与任务迁移基本一致,也是将不同语言的语义空间融合起来,如下图所示。
显式融合的基本做法有NMT(翻译)、Word Aligner(单词级别alignment)、字典法、多语言预训练模型。
隐式融合的基本做法是language-agnostic(语言不可知论)的语义特征学习,也就是让模型自己学习不同语言share的统一语义/结构空间。统一语义空间一定是可行的,因为不同的语言都想要表达一个意思;统一的结构空间在2019年才被明确证明可行,因为Subburathinam等学者发现不同的语言一般有相同的依赖结构。
语义特征的学习一般使用对抗训练法,原理如下:
另外,也可以使用Prompt方法生成对抗样本,在这里不做赘述。
这里就是笔者的工作方向了。持续学习就是模型不freeze。例如我训练了一个IE模型,在提取一次后,知识(模型里的参数)就固定了。持续学习,就是让模型不断地学习新知识,也就是参数可以不断使用新的Annotations进行更新。
持续学习基本上有两个挑战:一个是灾难性遗忘(Catastrophic Forgetting),也就是在学习新知识的时候会忘掉旧知识;一个是知识迁移(Knowledge Transfer),也就是将知识从旧任务迁移到新任务。
持续学习有三个基本方法:经验重演(Experience Replay)、知识蒸馏(Knowledge Distillation)、Task-specific Adapter(热插拔)。
经验重演法就是记录训练旧模型所用的数据,并且在用新任务上周期性地重新输入部分旧数据进行更新。同时,如果经过合理的调整,新数据也可以提升旧任务的性能。方法上,新数据训练旧任务很简单,直接训练即可;旧数据训练新任务可以通过用旧模型的参数初始化新模型来完成。
经验重演的原理非常简单,但作用明显,结果如下图所示(Yu等人,2021)。
经验重演也将在知识蒸馏法中用到。
知识蒸馏法就是删掉没用的或错误的知识。在特征上,可以使得模型提取和原模型相似的特征;在预测上,可以使得模型的预测输出和原模型尽可能相似;在输入样本的选择上,可以挑选与原来的样本形式相近的样本。总体架构如下图所示:
注意,这种方式隐式地使用了经验重演法,因为“相似”比的就是新的和旧的。
热插拔的本质就是模块化设计(笔者的老本行了)。每次增加一个新的任务,就固定老的模型参数,并且增加一些新的专门用来做新任务的参数。由于这个领域比较大,我们考虑专门出一篇文章讨论,在此不做赘述。
注意,几乎所有的研究都认为我们可以重新使用旧的数据来重演,但是在现实中这并不可行。一个机器如果要持续学习十年,那它的记忆必须一直扩张,总会超出界限。因此,这并不是一种非常现实的方法,也和人脑的工作方式相去甚远(不可能为了做本科毕设还要刷高考题)。因此,持续学习下一阶段的重点是找到一种方法,使得模型不需要存储旧知识,可以直接使用旧模型和新数据来进行模型的更新。
