BERT和GPT3结合模板设计,释放语言模型潜能
预训练模型(Pre-trained Models,PTMs)的出现将NLP带入了一个全新时代。其中主要包括以下三类:
- 单向特征表示的自回归预训练语言模型,统称为单向模型: ELMO/ULMFiT/SiATL/GPT1.0/GPT2.0;
- 双向特征表示的自编码预训练语言模型,统称为BERT系列模型:(BERT/MASS/UNILM/ERNIE1.0/ERNIE(THU)/MTDNN/ERNIE2.0/SpanBERT/RoBERTa)
- 双向特征表示的自回归预训练语言模型:XLNet;
BERT的MLM模型
2018年底,谷歌AI团队新发布的BERT模型,在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类!并且还在11种不同NLP测试中创出最佳成绩,包括将GLUE基准推至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进率5.6%)等。BERT突破了以往预训练表示的局限,提出一种新的预训练目标:遮蔽语言模型(masked language model,MLM),来克服标准语言模型的单向性。
MLM,可以翻译为“掩码语言模型”,实际上就是一个完形填空任务,随机Mask掉文本中的某些字词,然后要模型去预测被Mask的字词,示意图如下:
与从左到右的语言模型预训练不同,MLM 目标允许表征融合左右两侧的语境,从而预训练一个深度双向 Transformer。其中被Mask掉的部分,可以是直接随机选择的Token,也可以是随机选择连续的能组成一整个词的Token,后者称为WWM(Whole Word Masking)。
很长一段时间,MLM模型仅在BERT的预训练任务中起到了作用,一些开源的模型干脆没保留MLM部分的权重,比如brightmart版和clue版的RoBERTa。随着研究的深入,陆续有文章指出MLM可以作为一般的生成模型进行应用。
MLM模型与pattern设计
将MLM模型用于自然语言处理任务,给任务一个文本描述,然后转换为完形填空问题。
-
短文本分类任务:
下面报导一则______新闻。八个月了,终于又能在赛场上看到女排姑娘们了。
这样我们就将新闻主题分类也转换为完形填空问题了,一个好的MLM模型应当能预测出“体育”二字来。
- 推理任务:
还有一些简单的推理任务也可以做这样的转换,常见的是给定两个句子,判断这两个句子是否相容,比如“我去了北京”跟“我去了上海”就是矛盾的,“我去了北京”跟“我在天安门广场”是相容的,常见的做法就是将两个句子拼接起来输入到模型做,作为一个二分类任务。如果要转换为完形填空,那该怎么构造呢?一种比较自然的构建方式是:
我去了北京?______,我去了上海。
我去了北京?______,我在天安门广场。
其中空位之处的候选词为{是的,不是}。
上述的转化就是给输入的文本增加一个前缀或者后缀描述,并且Mask掉某些Token,转换为完形填空问题,这样的转换在原论文中称为Pattern,这个转换要尽可能与原来的句子组成一句自然的话,不能过于生硬,因为预训练的MLM模型就是在自然语言上进行的。显然同一个问题可以有很多不同的Pattern,比如情感分类的例子,描述可以放最后,变成“这趟北京之旅我感觉很不错。____满意。”;也可以多加几个字,比如“觉得如何?____满意。这趟北京之旅我感觉很不错。”。
Pattern-Exploiting Training(PET)
基于上述内容,我们可以发现,同一个任务可以有多种不同的Pattern。不同的pattern设定对模型的影响很大。原论文是这样处理的:
1、对于每种Pattern,单独用训练集Finetune一个MLM模型出来;
2、然后将不同Pattern对应的模型进行集成,得到融合模型;
3、用融合模型预测未标注数据的伪标签;
4、用伪标签数据Finetune一个常规的(非MLM的)模型。
P-tuning:自动搜索连续空间中的 pattern
人工设计表现最佳的 pattern 无异于大海捞针,通常需要异常庞大的验证集。在很多情况下,有效的pattern工程意味着过拟合测试集。而且,这很容易导致对抗 prompt 的产生,进而导致模型性能大幅下降。《GPT Understands, Too》的论文提出了一种名为 P-tuning 的新方法来自动搜索连续空间中的 prompt,以提高 GPT 模型的自然语言理解能力。实验结果表明,利用 P-tuning 方法,GPT 的自然语言能力可以匹敌 BERT。而且,P-tuning 还可以提高 BERT 在 few-shot 和监督场景下的性能。
P-tuning考虑了如下形式的模版:
P-tuning直接使用[unused*]的token来构建模版,[u1]~[u6]代表BERT词表里边的[unused1]~[unused6],也就是用几个从未见过的token来构成模板,这里的token数目是一个超参数,放在前面还是后面也可以调整。为了让“模版”发挥作用,我们用标注数据来求出这个模板。
此外,在上面的例子中,目标token如“很”、“体育”是认为选定的,那么它们可不可以也用[unused*]的token代替呢?答案是可以,但也分两种情况考虑:1、在标注数据比较少的时候,人工来选定适当的目标token效果往往更好些;2、在标注数据很充足的情况下,目标token用[unused*]效果更好些,因为这时候模型的优化空间更大一些。
- 点赞
- 收藏
- 关注作者
评论(0)