可控文本生成技术大图
一文本生成技术文本生成(TextGeneration)是自然语言处理(NaturalLanguageProcessing,NLP)领域的一项重要且具有挑战的任务。顾名思义,文本生成任务的目的是生成近似于自然语言的文本序列,但仍可以根据输入数据进行分类。比如输入结构化数据的Data-to-textGeneration,输入图片的ImageCaption,输入视频的VideoSummarization,输入音频的SpeechRecognition等。本文我们聚焦于输入文本生成文本的Text-to-Text任务,具体地包括神经机器翻译、智能问答、生成式文本摘要等。随着深度学习的发展,众多新兴的技术已被文本生成任务所采用。比如,为了解决文本生成中的长期依赖、超纲词(Out-of-Vocabulary,OOV)问题,注意力机制(AttentionMechanism),拷贝机制(CopyMechanism)等应运而出;网络结构上使用了循环神经网络(RecurrentNeuralNetworks),卷积神经网络(ConvolutionalNeuralNetworks),图神经网络(GraphNeuralNetworks),Transformer等。为了顺应“预训练-精调”范式的兴起,在海量语料上自监督地训练出的大体量预训练语言模型(Pre-trainedLanguageModel;PLM),也被广泛应用在文本生成任务中。为了展示上述结构、模型、机制在文本生成任务上的应用,本章第一小节会简要梳理主流文本生成模型的结构,在第二小节会对于文本生成的评价指标的方案进行归纳。1文本生成模型的结构文本生成模型的结构常来自于人类撰写文本的启发。此处按照模型结构的特征,将主流文本生成模型分为如下几种:图1:各种文本生成模型结构图示Encoder-DecoderFramework“编码器-解码器框架”首先使用encoder编码文本,再使用decoder基于原文编码和部分解码输出,自回归地解码(AutoregressivelyDecoding)出文本。这类似于,人类首先理解素材(源文本、图片、视频等),然后基于对原文的理解和已写出的内容,逐字地撰写出文本。也是目前序列到序列任务中应用最广泛的框架结构。Auto-regressiveLanguageModel标准的left-to-right的单向语言模型,也可以根据前文序列逐字地解码出文本序列,这种依赖于前文语境来建模未来状态的解码过程,叫做自回归解码(Auto-regressiveDecoding)。不同于编码器-解码器框架”使用encoder编码源文本,用decoder编码已预测的部分序列,ARLM用同一个模型编码源文本和已解码的部分序列。HierarchicalEncoder-Decoder对于文本素材,人类会先理解单个句子,再理解整篇文本。在撰写文本的过程中,也需要先构思句子的大概方向,再逐字地撰写出内容。这类模型往往需要一个层次编码器对源文本进行intra-sentence和inter-sentence的编码,对应地进行层次sentence-level和token-level的解码。在RNN时代,层次模型分别建模来局部和全局有不同粒度的信息,往往能够带来性能提升,而Transformer和预训练语言模型的时代,全连接的Self-Attention弱化了这种优势。Knowledge-EnrichedModel知识增强的文本生成模型,引入了外部知识,因此除了针对源文本的文本编码器外,往往还需要针对外部知识的知识编码器。知识编码器的选择可以依据外部知识的数据结构,引入知识图谱、图片、文本作为外部知识时可以对应地选用图神经网络、卷积神经网络、预训练语言模型等。融合源文本编码与知识编码时,也可以考虑注意力机制,指针生成器网络(Pointer-Generator-Network),记忆网络(MemoryNetworks)等。Write-then-EditFramework考虑到人工撰写稿件尚不能一次成文,那么文本生成可能同样需要有“修订”的过程。人工修订稿件时,需要基于原始素材和草稿撰写终稿,模型也需要根据源文本和解码出的草稿重新进行编解码。这种考虑了原文和草稿的模型能够产生更加合理的文本内容。当然也会增加计算需求,同时生成效率也会打折扣。表1:各种文本生成模型结构及其代表性模型
文本生成的评价指标
针对文本生成的评价指标,已有多年研究。根据不同的维度,可以对现有评价指标有着不同的分类。比如,部分评价指标仅考虑所生成的文本,来衡量其自身的流畅度、重复性、多样性等;另一部分指标还考虑到了源文本或目标文本,来考察所生成的文本与它们之间的相关性、忠实度、蕴含关系等。
此处,我们从执行评价的主体类型进行分类,来梳理当前常用的文本生成的评价指标:
Human-centricevaluationmetrics
文本生成的目标是获得人类能够理解的自然语言。因此,邀请专家或受训练的标注者来对生成内容进行评价,或者比较多个模型的输出文本,是最直观的评价方式。人工评价在机器难以判别的角度也能发挥作用,比如:衡量生成文本句间的连贯性(Coherence),衡量生成文本近似于自然语言程度的通顺度(Fluency),衡量生成文本中的内容是否忠实于原文的事实正确度(Factuality),以及风格、格式、语调、冗余等。此外,为了衡量人工打标的可靠性,可以让多个标注者对进行同一样本打标,并使用IAA(Inter-AnnotatorAgreement)来对人工评价结果进行评估。常用的是Fleiss
,以及Krippendorffs。
Unsupervisedautomaticmetrics
基于规则统计的无监督自动指标,能够适应大体量测试集上的文本评价。最常见的就是ROUGE-N(Recall-OrientedUnderstudyforGistingEvaluation)和BLEU-N(BiLingualEvaluationUnderstudy),这两个指标考虑了N-gramoverlapping的召回率和精确率,能够衡量文本的通顺度及与源文本的字面一致性。通常,为了衡量文本用词的多样性,Distinct-N计算仅出现过一次的N-gram占生成文本中总N-gram个数的百分比。
Machine-learnedautomaticmetrics
为了衡量输出文本在语义上的属性,常需要用训练好的判别模型。比如,为了建模目标序列与预测序列之间的相似度,可以使用BERTScore先利用BERT给出两个文本序列的语境化向量表征,再进行相似度矩阵的计算;GeDi中使用RoBERTa训练出一个ToxicityClassifier来判别模型生成的文本是否包含恶意中伤的内容;自然语言推理任务中的文本蕴含(TextualEntailment)模型也可以用于衡量生成的摘要与原文之间在内容上的忠实程度。
表:各种测评指标的性能优劣势
从上表我们可以看出,人工评价指标虽然灵活,不适合用于对海量样本评价。而无监督的自动评价指标,虽然能低成本地解决评测问题,但能够完成评价的角度甚少。“用模型来衡量模型”则是效率和灵活性之间的trade-off。
但前提要保证判别模型本身的性能,才能保证测评结果的可靠性。Amazon的工作证明开箱即用的NLI模型并不能保证内容忠实度评测的良好效果,由此看来,该类型的评价指标仍需要向task-specific和data-specific的方向上深挖,来弥合训练域与应用域之间的鸿沟。
二可控文本生成
可控文本生成的目标,是控制给定模型基于源文本产生特定属性的文本。特定属性包括文本的风格、主题、情感、格式、语法、长度等。根据源文本生成目标序列的文本生成任务,可以建模为;而考虑了控制信号的可控文本生成任务,则可以建模为。
目前可控文本生成已有大量的相关研究,比较有趣的研究有,SongNet(Tencent)控制输出诗词歌赋的字数、平仄和押韵;StylePTB(CMU)按照控制信号改变句子的语法结构、单词形式、语义等;CTRL(Salesforce)在预训练阶段加入了controlcodes与prompts作为控制信号,影响文本的领域、主题、实体和风格。可控文本生成模型等方案也多种多样,此处按照进行可控的着手点和切入角度,将可控文本生成方案分为:构造ControlCodes、设计Prompt、加入解码策略(DecodingStrategy),以及Write-then-Edit共四类。
构造ControlCodes指的是引入一些符号或文本作为条件,训练条件语言模型;为预训练语言模型设计Prompt也能实现对PLM所执行文本任务的控制;通过在解码阶段使用采样策略,也能够采样出具有特定属性的文本;最后,Write-then-Edit指的是PPLM引入属性判别模型来根据产生的草稿计算梯度并反向传播,基于更新后的隐含状态来产生最终文本序列。
图:可控文本生成技术方案类型图示
此处,我们尝试从时间维度来分析可控文本生成技术的发展过程和趋势。
首先,在预训练语言模型的热度高涨之前,使用解码策略来控制文本属性的方案较为流行,比如,引入多个判别器影响BeamSearch中的似然得分的LW,以及改进解码采样策略的NucleurSampling()。
随着GPT-()、T5()的提出,使得基于Prompt来控制同一预训练语言模型来完成多种任务成为可能。因其能够更有效地利用模型在预训练阶段习得的知识,PromptingLM的方式受到了学术界的重视,Prefix-Tuning(01)等也推动基于Prompt的文本生成向前一步。
而针对于如何基于预训练语言模型做可控文本生成,学术界也一直往“低数据依赖、低算力需求、低时间消耗”方向上推进。CTRL()凭借海量数据和大体量结构成为文本生成领域的代表性模型;PPLM()则引入属性判别器,仅需精调小部分参数起到了“四两拨千斤”的效果;而GeDi(00)为了解决PPLM多次反传导致的解码效率低下,直接在解码阶段加入属性判别器来控制解码输出;CoCon(01)同样仅精调插入GPT-中的CoCon层来提高训练效率,并通过精巧的目标函数的设计来增强可控性能。
在本章,我们将针对上述提到的方案思路和模型细节,进行详细的介绍。
1设计Prompt
由于预训练任务与下游任务之间存在差距,为了充分利用模型在预训练阶段习得的知识,可以通过设计prompt的方法,将下游任务建模为预训练任务。下面是PromptingPLM在非生成任务上的应用,可以清晰地理解prompt相对于fine-tuning的价值。
我们对在MaskedLanguageModel任务上预训练出的BERT进行精调,做实体类型识别(EntityTyping)任务。常规地,需要向BERT输入,然后用分类器根据的隐含状态对NewYork的实体类型做分类。然而,精调过程中的知识迁移无法避免地会造成知识损失,另外,为了训练新引入的分类器需要大量的训练样本,不适应few-shot场景。
将训练数据嵌入prompt,下游的分类任务即可被转化为预训练的MLM任务。通过向模型输入,利用模型更能胜任的MLM任务预测对应的单词,即判断生成NewYork的实体类型。通过设计好的prompt,可避免fine-tuning。即不必调整PLM的结构和参数,完整保留预训练阶段的知识。也可以通过prompt的设计规避将下游任务训练样本的依赖,更适合few-shot和zero-shot场景。
Prompting在非生成类任务上常用Cloze-style的prompts来适应用MLM预训练任务。而对于生成类任务,更常用的是Prefix-style的prompts。相对于前者更侧重于充分利用PLM,后者还能够对文本生成的任务实现可控。
GPT-作为通用的多任务模型,不仅要考虑源文本的信息,还要考虑将执行的任务,故被建模为。比如,将源文本嵌入模板作为GPT-的输入,模型能够知晓下游任务是文本摘要,进而根据源文本自回归地续接出摘要。
T5希望将多个自然语言处理任务整合成text-to-text的形式,来统一模型在预训练、精调阶段的任务。为了向T5模型明确所需执行的任务,源文本需要被嵌入模板。比如,输入来生成摘要,或输入来生成翻译等。T5论文提到,任务前缀也是超参数,它们的word,structure对于下游任务的性能有潜在影响。这近似于预言了后来prompting的研究方向,PromptDesigning也成为研究热点。通常对于不同的任务和数据集针对性设计prompts来适应,图中展示了针对各生成相关任务的常用prompts:
图:不同任务下常用的prompts,[X]是源文本,[Z]是以期生成的答案
构造ControlCodes
此处,ControlCodes指的是输入模型的控制信号。控制信号的数据类型选择非常广泛,包括符号、单词、文本段落等。为了使得模型在训练阶段能捕捉并拟合控制信号的作用,进而能泛化到推理阶段,控制信号需要与目标序列高度相关。
构造训练数据
GSum(GuidedSummarization)引入了四种控制信号,包括重要句子、关键单词、显著实体三元组,以及检索到的相关摘要。结构上,GSum基于Transformer改进。源文本和文本类型的控制信号共享编码器,在编码器顶层两者各自有一层专属编码器。解码器部分包含两个MultiheadCrossAttention分别