0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍四个为语言生成设计的预训练模型

深度学习自然语言处理 来源:NewBeeNLP 作者:Chilia 2022-12-05 14:50 次阅读

1.BART

BERT等预训练语言模型主要应用于文本理解(NLU), 而在文本生成任务(NLG)中表现不佳 -- 这主要是由预训练阶段和下游任务阶段的差异造成的。因此,BART提出了一种 符合生成任务的预训练方法。

BART的全称是Bidirectional and Auto-Regressive Transformers,顾名思义,就是兼具上下文语境信息(双向)和自回归(单向)特性的Transformer。BART其实并不是一个新的模型,因为它使用的结构还是传统的Seq2seq Transformer;它是一种针对生成任务而设计的预训练方法。

1.1 BART和GPT、BERT的区别与联系

BART预训练任务和GPT、BERT的对比如下图:

051aab28-7305-11ed-8abf-dac502259ad0.png

BERT: 只有Transformer Encoder部分,随机MASK掉一些token,然后利用上下文还原。

GPT:只有Transformer Decoder部分,采用自回归的方法训练,每个位置只能关注到其左边的token。

BART:使用了完整的Transformer(Encoder+Decoder)。其encoder端的输入是加了噪音的序列,decoder端的输入是right-shifted的序列,decoder端的目标是原序列。模型设计的目的很明确,就是在利用encoder端的双向建模能力的同时,保留自回归的特性,以适用于生成任务。

1.2 BART使用的noise

相对于BERT中单一的noise类型 (只有简单地用[MASK] token进行替换这一种noise),BART在encoder端尝试了 多种更加灵活的noise (甚至可以改变序列的长度)然后decoder端试图恢复这些noise。这样做是因为:BERT的这种简单替换导致的是encoder端的输入携带了有关序列结构的一些信息(比如序列的长度等信息),而这些信息在文本生成任务中一般是不会提供给模型的。相比而言,BART采用更加多样的noise, 意图是破坏掉这些有关序列结构的信息 ,防止模型去依赖这样的信息。

052e176c-7305-11ed-8abf-dac502259ad0.png

BART采用的noise

BART采用的一些noise包括:

Token Masking : BERT的方法--随机将token替换成[MASK] -> 训练模型推断单个token的能力

Token Deletion : 随机删去token -> 训练模型推断单个token_及其位置_的能力

Text Infilling : 随机将一段连续的token(称作span)替换成[MASK],span的长度服从 lambda=3 的泊松分布。注意span长度为0就相当于插入一个[MASK]。这个方法带来了更多的 灵活性 !->训练模型推断一个span对应多少token的能力

Sentence Permutation : 将一个document的句子打乱。->类似BERT中的 NSP 目标,训练模型推断不同句子之间关系的能力

Document Rotation : 从document序列中随机选择一个token,然后使得该token作为document的开头。->训练模型找到document开头的能力

这些noise变换方式还可以组合,带来了更多的灵活性。

1.3 BART在下游任务的应用

① Sequence Classification

将该序列同时输入给encoder端和decoder端,然后取decoder最后一个token对应的final hidden state表征。注意我们需要在decoder端序列末尾增加一个[EOS],让它能够关注到整个句子。

054918d2-7305-11ed-8abf-dac502259ad0.png

② Token Classification

将该序列同时输入给encoder端和decoder端,使用decoder的final hidden states作为每个token的表征

③ Sequence Generation

由于BART本身就是在sequence-to-sequence的基础上构建并且预训练的,它天然比较适合做序列生成的任务,比如生成式问答、文本摘要、机器对话等。encoder就是输入的序列,decoder用自回归的方法生成输出序列

④ Machine Translation

BART能够提升其他语言 翻译到英语 的效果。具体的做法是将BART encoder端的embedding层替换成随机初始化的encoder, 新的encoder也可以用不同的vocabulary 。通过这个新加的encoder,我们可以将新的语言映射到BART能解码到English(假设BART是在English的语料上进行的预训练)的空间。具体的finetune过程分两阶段:

第一步冻结大部分参数,只更新新加的encoder + BART positional embedding + BART的encoder第一层的self-attention 输入映射矩阵。

第二步更新全部参数,但是只训练很少的几轮。

055b7842-7305-11ed-8abf-dac502259ad0.png

2. MASS

Masked Sequence to sequence pre-training for Language Generation

https://arxiv.org/pdf/1905.02450.pdf

和BART类似,MASS也是使用完整的Transformer结构,并且对encoder输入进行一些破坏,让decoder试图还原之。MASS的提出早于BART,因此它提出的noise方法也没有BART那么丰富。具体做法就是mask掉句子的一部分,再用decoder去预测之,如下图所示:

05819acc-7305-11ed-8abf-dac502259ad0.png

和BART不同的是,这里的decoder只输入应该被预测的token,这是为了可以让decoder依赖于encoder的编码,让两者更好地共同训练。

BERT的MLM预训练任务和GPT的自回归生成任务,分别是MASS k = 1 和 k = m 的特例:

059065fc-7305-11ed-8abf-dac502259ad0.png

3. Pegasus

PEGASUS: Pre-training with Extracted Gap-sentences forAbstractive Summarization

https://arxiv.org/abs/1912.08777

PEGASUS是专门针对 生成式摘要 设计的预训练模型。基本思想就是将输入文档的重要句子remove/mask,然后通过其他句子预测它们。其实验效果刷新了12项summarization任务;在low-resource摘要方面展现惊人性能,仅用了1000个example就超过了6个数据集上的最新结果。

3.1 Gap Sentences Generation (GSG)

我们知道,预训练目标与下游任务越接近,下游任务就会表现越好。那么,为了更好的完成文本摘要,可以mask掉文本中重要的一些句子,然后 拼接 这些gap-sentences形成伪摘要。相应位置的Gap-sentences用[MASK1]来替换。Gap sentences ratio(GSR)表示选中的gap sentences占总文档的比例。选择Gap Sentence的方法有:

Random: 随机选m个句子

Lead: 选前m个句子

Principal: 选最重要的m个句子。如何衡量句子的重要性呢?文中又提出了四种方法:

① 独立选择(Ind.)/连续选择(Seq.): 句子重要性可根据一个句子与其它句子集的ROUGE1-F1来计算,其公式为独立选择就是选择得分最高的m个句子;连续选择则是贪婪地最大化选中句子集Scup{x_{i}}与其余句子集的ROUGE1-F1值,具体算法如下:

06142ca2-7305-11ed-8abf-dac502259ad0.jpg

② 计算ROUGE1-F1的方式也可分为两种 -- Uniq 和 Orig。Uniq把n-gram当成集合处理(去重);Orig则允许重复n-gram出现。

因此,Ind/Seq 和 Uniq/Orig两两组合可得到四种方式。最后的实验结果表明,选择了文档30%的句子作为Gap sentences,用Ind-Orig选重要句子效果最好。

3.2 预训练任务

本文MASK的方式有两种:

① MLM:选择输入文本的15%的tokens, 其中80%的被替换为[MASK2]、10%的被随机的token替换、10%未发生变化。在encoder部分恢复这些token。

② GSG:以[MASK1]去mask选中的重要句子,在decoder部分恢复这些句子。

最终实验表明,仅采用MLM效果最差,预训练在100-200K steps时,GSG+MLM的效果在提升,但之后包含MLM效果在下降。因而最后PEGASUS-LARGE仅采用GSG,PEGASUS-BASE采用GSG+MLM。

063ded30-7305-11ed-8abf-dac502259ad0.png

4. UniLM

Unified Language Model Pre-training forNatural Language Understanding and Generation

https://arxiv.org/abs/1905.03197

UniLM是一种简洁的预训练方法,其模型的框架与BERT一致,是由一个多层Transformer Encoder网络构成;但训练方式不同,它是通过联合训练三种不同目标函数得到 -- 通过控制mask来控制预测单词的 可见上下文词语数量 ,在同一个模型中同时实现了bidirectional, unidirectional和seq2seq prediction 三种任务,因此可以同时用于语言生成和语言理解。

模型的三种预训练目标如下图所示:

065f5aec-7305-11ed-8abf-dac502259ad0.png

seq2seq task在pretrain过程中,mask token可以出现在第一个文本序列中、也可以出现在第二个文本序列中;但是到了fine-tuning阶段时,mask token仅出现在第二个文本序列中。

Bidirectional LM: 跟Bert模型一致。同时,与bert模型一样,也进行NSP任务的预测。

Left-to-Right LM: 有从右到左和从左到右两者,类似GPT。

Seq2seq LM :如果[Mask]出现在第一段文本中,仅可以使用第一段文本中所有的token进行预测;如果预测[Mask]出现在第二段文本中时,可以采用第一段文本中所有的token,和第二段文本中左侧所有token预测。这种方法虽然不是seq2seq,但是通过mask可以做到seq2seq同样的效果。

综上,就是对于不同的语言模型,我们可以仅改变self-attention mask,就可以完成multi-task联合训练。

在预训练时的一个batch中,使用1/3的数据进行bidirectional task,1/3的数据进行seq2seq task,1/6的数据进行left-to-right unidirectional task,1/6的数据进行right-to-left unidirectional task。

模型结构与BERT-large模型一致(layer = 24, hidden_size = 1024, head = 16),约有340M参数,并由训练好的BERT-large模型进行初始化。MASK的概率为15%,在被掩掉的token中,有80%使用[MASK]替换,10%使用字典中随机词进行替换,10%保持越来token不变(这与BERT一致)。此外,在80%的情况下,每次随机掩掉一个token,在剩余的20%情况下,掩掉一个二元token组或三元token组。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GPT
    GPT
    +关注

    关注

    0

    文章

    351

    浏览量

    15311

原文标题:介绍几个语言生成的预训练模型

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文详解知识增强的语言训练模型

    ,在实际应用场景中效果不好。为了解决这个问题,将知识注入到PLMs中已经成为一非常活跃的研究领域。本次分享将介绍三篇知识增强的训练语言
    的头像 发表于 04-02 17:21 9536次阅读

    【大语言模型:原理与工程实践】大语言模型的基础技术

    ,这也是如今生成式 AI 中大语言模型最流行训练架构。(3) Encoder-Decoder训练
    发表于 05-05 12:17

    【大语言模型:原理与工程实践】大语言模型训练

    数据格式的转换、数据字段的匹配和整合等。通过数据级净化,可以进一步提高数据的质量和可用性,后续的数据分析和建模提供更有价值的数据支持。 在得到了大语言模型的数据之后,就是对其进行
    发表于 05-07 17:10

    语言模型:原理与工程时间+小白初识大语言模型

    语言模型进行训练,此处训练自然
    发表于 05-12 23:57

    新的训练方法——MASS!MASS训练几大优势!

    专门针对序列到序列的自然语言生成任务,微软亚洲研究院提出了新的训练方法:屏蔽序列到序列训练
    的头像 发表于 05-11 09:34 7061次阅读
    新的<b class='flag-5'>预</b><b class='flag-5'>训练</b>方法——MASS!MASS<b class='flag-5'>预</b><b class='flag-5'>训练</b>几大优势!

    训练语言模型设计的理论化认识

    在这篇文章中,我会介绍一篇最新的训练语言模型的论文,出自MASS的同一作者。这篇文章的亮点是:将两种经典的
    的头像 发表于 11-02 15:09 2673次阅读

    国内科学家团队发布超大规模AI训练模型

    据消息,北京智源人工智能研究院发布四个超大规模人工智能训练模型,统称为“悟道1.0”,涵盖中文语言、多模态、认知、蛋白质预测
    的头像 发表于 03-21 10:09 2254次阅读

    如何向大规模训练语言模型中融入知识?

    本文关注于向大规模训练语言模型(如RoBERTa、BERT等)中融入知识。
    的头像 发表于 06-23 15:07 4180次阅读
    如何向大规模<b class='flag-5'>预</b><b class='flag-5'>训练</b><b class='flag-5'>语言</b><b class='flag-5'>模型</b>中融入知识?

    Multilingual多语言训练语言模型的套路

    Facebook在Crosslingual language model pretraining(NIPS 2019)一文中提出XLM训练语言模型,整体思路基于BERT,并提出了针
    的头像 发表于 05-05 15:23 2923次阅读

    一种基于乱序语言模型训练模型-PERT

    由于乱序语言模型不使用[MASK]标记,减轻了训练任务与微调任务之间的gap,并由于预测空间大小输入序列长度,使得计算效率高于掩码
    的头像 发表于 05-10 15:01 1504次阅读

    如何更高效地使用训练语言模型

    基本的假设:训练模型在不同下游任务上学习的过程,可以被重新参数化(reparameterized)在同一低维本征子空间上的优化过程。
    的头像 发表于 07-08 11:28 1238次阅读

    利用视觉语言模型对检测器进行训练

    训练通常被用于自然语言处理以及计算机视觉领域,以增强主干网络的特征提取能力,达到加速训练和提高模型泛化性能的目的。该方法亦可以用于场景文本
    的头像 发表于 08-08 15:33 1355次阅读

    CogBERT:脑认知指导的训练语言模型

    另一方面,从语言处理的角度来看,认知神经科学研究人类大脑中语言处理的生物和认知过程。研究人员专门设计了训练模型来捕捉大脑如何表示
    的头像 发表于 11-03 15:07 1032次阅读

    训练模型的基本原理和应用

    训练模型(Pre-trained Model)是深度学习和机器学习领域中的一重要概念,尤其是在自然语言处理(NLP)和计算机视觉(CV)
    的头像 发表于 07-03 18:20 2347次阅读

    语言模型训练

    能力,逐渐成为NLP领域的研究热点。大语言模型训练是这一技术发展的关键步骤,它通过在海量无标签数据上进行训练,使
    的头像 发表于 07-11 10:11 385次阅读