文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

可控文本生成技术大图

一 文本生成技术

文本生成(Text Generation)是自然语言处理(Natural Language Processing,NLP)领域的一项重要且具有挑战的任务。顾名思义,文本生成任务的目的是生成近似于自然语言的文本序列,但仍可以根据输入数据进行分类。比如输入结构化数据的 Data-to-text Generation,输入图片的 Image Caption,输入视频的 Video Summarization,输入音频的 Speech Recognition 等。本文我们聚焦于输入文本生成文本的 Text-to-Text 任务,具体地包括神经机器翻译、智能问答、生成式文本摘要等。

随着深度学习的发展,众多新兴的技术已被文本生成任务所采用。比如,为了解决文本生成中的长期依赖、超纲词(Out-of-Vocabulary,OOV)问题,注意力机制(Attention Mechanism),拷贝机制(Copy Mechanism)等应运而出;网络结构上使用了循环神经网络(Recurrent Neural Networks),卷积神经网络(Convolutional Neural Networks),图神经网络(Graph Neural Networks),Transformer 等。为了顺应“预训练-精调”范式的兴起,在海量语料上自监督地训练出的大体量预训练语言模型(Pre-trained Language Model;PLM),也被广泛应用在文本生成任务中。

为了展示上述结构、模型、机制在文本生成任务上的应用,本章第一小节会简要梳理主流文本生成模型的结构,在第二小节会对于文本生成的评价指标的方案进行归纳。

1 文本生成模型的结构

文本生成模型的结构常来自于人类撰写文本的启发。此处按照模型结构的特征,将主流文本生成模型分为如下几种:

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

图1:各种文本生成模型结构图示

“编码器-解码器框架”首先使用 encoder 编码文本,再使用 decoder 基于原文编码和部分解码输出,自回归地解码(Autoregressively Decoding)出文本。这类似于,人类首先理解素材(源文本、图片、视频等),然后基于对原文的理解和已写出的内容,逐字地撰写出文本。也是目前序列到序列任务中应用最广泛的框架结构。

标准的 left-to-right 的单向语言模型,也可以根据前文序列逐字地解码出文本序列,这种依赖于前文语境来建模未来状态的解码过程,叫做自回归解码(Auto-regressive Decoding)。不同于编码器-解码器框架”使用 encoder 编码源文本,用 decoder 编码已预测的部分序列,AR LM 用同一个模型编码源文本和已解码的部分序列。

对于文本素材,人类会先理解单个句子,再理解整篇文本。在撰写文本的过程中,也需要先构思句子的大概方向,再逐字地撰写出内容。这类模型往往需要一个层次编码器对源文本进行 intra-sentence 和 inter-sentence 的编码,对应地进行层次 sentence-level 和 token-level 的解码。在 RNN 时代,层次模型分别建模来局部和全局有不同粒度的信息,往往能够带来性能提升,而 Transformer 和预训练语言模型的时代,全连接的 Self-Attention 弱化了这种优势。

知识增强的文本生成模型,引入了外部知识,因此除了针对源文本的文本编码器外,往往还需要针对外部知识的知识编码器。知识编码器的选择可以依据外部知识的数据结构,引入知识图谱、图片、文本作为外部知识时可以对应地选用图神经网络、卷积神经网络、预训练语言模型等。融合源文本编码与知识编码时,也可以考虑注意力机制,指针生成器网络(Pointer-Generator-Network),记忆网络(Memory Networks)等。

考虑到人工撰写稿件尚不能一次成文,那么文本生成可能同样需要有“修订”的过程。人工修订稿件时,需要基于原始素材和草稿撰写终稿,模型也需要根据源文本和解码出的草稿重新进行编解码。这种考虑了原文和草稿的模型能够产生更加合理的文本内容。当然也会增加计算需求,同时生成效率也会打折扣。

文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

表1:各种文本生成模型结构及其代表性模型

2 文本生成的评价指标

针对文本生成的评价指标,已有多年研究。根据不同的维度,可以对现有评价指标有着不同的分类。比如,部分评价指标仅考虑所生成的文本,来衡量其自身的流畅度、重复性、多样性等;另一部分指标还考虑到了源文本或目标文本,来考察所生成的文本与它们之间的相关性、忠实度、蕴含关系等。

此处,我们从执行评价的主体类型进行分类文本摘要生成,来梳理当前常用的文本生成的评价指标:

文本生成的目标是获得人类能够理解的自然语言。因此,邀请专家或受训练的标注者来对生成内容进行评价,或者比较多个模型的输出文本,是最直观的评价方式。人工评价在机器难以判别的角度也能发挥作用,比如:衡量生成文本句间的连贯性(Coherence),衡量生成文本近似于自然语言程度的通顺度(Fluency),衡量生成文本中的内容是否忠实于原文的事实正确度(Factuality),以及风格、格式、语调、冗余等。此外,为了衡量人工打标的可靠性,可以让多个标注者对进行同一样本打标,并使用 IAA(Inter-Annotator Agreement)来对人工评价结果进行评估。常用的是 Fleiss’

,以及 Krippendorff’s 。

基于规则统计的无监督自动指标,能够适应大体量测试集上的文本评价。最常见的就是 ROUGE-N(Recall-Oriented Understudy for Gisting Evaluation)和 BLEU-N(BiLingual Evaluation Understudy),这两个指标考虑了 N-gram overlapping 的召回率和精确率,能够衡量文本的通顺度及与源文本的字面一致性。通常,为了衡量文本用词的多样性,Distinct-N 计算仅出现过一次的 N-gram 占生成文本中总 N-gram 个数的百分比。

为了衡量输出文本在语义上的属性,常需要用训练好的判别模型。比如,为了建模目标序列与预测序列之间的相似度,可以使用 BERTScore 先利用 BERT 给出两个文本序列的语境化向量表征,再进行相似度矩阵的计算;GeDi 中使用 RoBERTa 训练出一个 Toxicity Classifier 来判别模型生成的文本是否包含恶意中伤的内容;自然语言推理任务中的文本蕴含(Textual Entailment)模型也可以用于衡量生成的摘要与原文之间在内容上的忠实程度。

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

表2:各种测评指标的性能优劣势

从上表我们可以看出,人工评价指标虽然灵活,不适合用于对海量样本评价。而无监督的自动评价指标,虽然能低成本地解决评测问题,但能够完成评价的角度甚少。“用模型来衡量模型”则是效率和灵活性之间的 trade-off。

但前提要保证判别模型本身的性能,才能保证测评结果的可靠性。Amazon 的工作证明开箱即用的 NLI 模型并不能保证内容忠实度评测的良好效果,由此看来,该类型的评价指标仍需要向 task-specific 和 data-specific 的方向上深挖,来弥合训练域与应用域之间的鸿沟。

二 可控文本生成

可控文本生成的目标,是控制给定模型基于源文本产生特定属性的文本。特定属性包括文本的风格、主题、情感、格式、语法、长度等。根据源文本生成目标序列的文本生成任务,可以建模为

文本摘要生成seq2seq_文本摘要生成_文本摘要生成代码

;而考虑了控制信号的可控文本生成任务,则可以建模为

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

目前可控文本生成已有大量的相关研究,比较有趣的研究有,SongNet(Tencent)控制输出诗词歌赋的字数、平仄和押韵;StylePTB(CMU)按照控制信号改变句子的语法结构、单词形式、语义等;CTRL(Salesforce)在预训练阶段加入了 control codes 与 prompts 作为控制信号,影响文本的领域、主题、实体和风格。可控文本生成模型等方案也多种多样,此处按照进行可控的着手点和切入角度,将可控文本生成方案分为:构造 Control Codes、设计 Prompt、加入解码策略(Decoding Strategy),以及 Write-then-Edit 共四类。

构造 Control Codes 指的是引入一些符号或文本作为条件,训练条件语言模型;为预训练语言模型设计 Prompt 也能实现对 PLM 所执行文本任务的控制;通过在解码阶段使用采样策略,也能够采样出具有特定属性的文本;最后,Write-then-Edit 指的是 PPLM 引入属性判别模型来根据产生的草稿计算梯度并反向传播,基于更新后的隐含状态来产生最终文本序列。

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

图2:可控文本生成技术方案类型图示

此处,我们尝试从时间维度来分析可控文本生成技术的发展过程和趋势。

首先,在预训练语言模型的热度高涨之前,使用解码策略来控制文本属性的方案较为流行,比如,引入多个判别器影响 Beam Search 中的似然得分的 L2W,以及改进解码采样策略的 Nucleur Sampling(2019)。

随着 GPT-2(2019)、T5(2019)的提出,使得基于 Prompt 来控制同一预训练语言模型来完成多种任务成为可能。因其能够更有效地利用模型在预训练阶段习得的知识,Prompting LM 的方式受到了学术界的重视,Prefix-Tuning(2021)等也推动基于 Prompt 的文本生成向前一步。

而针对于如何基于预训练语言模型做可控文本生成,学术界也一直往“低数据依赖、低算力需求、低时间消耗”方向上推进。CTRL(2019)凭借海量数据和大体量结构成为文本生成领域的代表性模型;PPLM (2019)则引入属性判别器,仅需精调小部分参数起到了“四两拨千斤”的效果;而 GeDi(2020)为了解决 PPLM 多次反传导致的解码效率低下,直接在解码阶段加入属性判别器来控制解码输出;CoCon(2021)同样仅精调插入 GPT-2 中的 CoCon 层来提高训练效率,并通过精巧的目标函数的设计来增强可控性能。

在本章,我们将针对上述提到的方案思路和模型细节,进行详细的介绍。

1设计Prompt

由于预训练任务与下游任务之间存在差距,为了充分利用模型在预训练阶段习得的知识,可以通过设计 prompt 的方法,将下游任务建模为预训练任务。下面是 Prompting PLM 在非生成任务上的应用,可以清晰地理解 prompt 相对于 fine-tuning 的价值。

我们对在 Masked Language Model 任务上预训练出的 BERT进行精调,做实体类型识别(Entity Typing)任务。常规地,需要向 BERT 输入

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

,然后用分类器根据

文本摘要生成seq2seq_文本摘要生成_文本摘要生成代码

的隐含状态对 New York 的实体类型做分类。然而,精调过程中的知识迁移无法避免地会造成知识损失,另外,为了训练新引入的分类器需要大量的训练样本,不适应 few-shot 场景。

将训练数据嵌入 prompt,下游的分类任务即可被转化为预训练的 MLM 任务。通过向模型输入

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

,利用模型更能胜任的 MLM 任务预测

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

对应的单词,即判断生成 New York 的实体类型。通过设计好的 prompt,可避免 fine-tuning。即不必调整 PLM 的结构和参数,完整保留预训练阶段的知识。也可以通过 prompt 的设计规避将下游任务训练样本的依赖,更适合 few-shot 和 zero-shot 场景。

Prompting 在非生成类任务上常用 Cloze-style 的 prompts 来适应用 MLM 预训练任务。而对于生成类任务,更常用的是 Prefix-style 的 prompts。相对于前者更侧重于充分利用 PLM,后者还能够对文本生成的任务实现可控。

GPT-2作为通用的多任务模型,不仅要考虑源文本的信息,还要考虑将执行的任务,故被建模为

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

。比如,将源文本嵌入模板

文本摘要生成seq2seq_文本摘要生成_文本摘要生成代码

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

作为 GPT-2 的输入,模型能够知晓下游任务是文本摘要,进而根据源文本自回归地续接出摘要。

T5 希望将多个自然语言处理任务整合成 text-to-text 的形式,来统一模型在预训练、精调阶段的任务。为了向 T5 模型明确所需执行的任务,源文本需要被嵌入模板。比如,输入

文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

来生成摘要,或输入

文本摘要生成seq2seq_文本摘要生成_文本摘要生成代码

来生成翻译等。T5 论文提到,任务前缀也是超参数,它们的 word,structure 对于下游任务的性能有潜在影响。这近似于预言了后来 prompting 的研究方向,Prompt Designing 也成为研究热点。通常对于不同的任务和数据集针对性设计 prompts 来适应,图2中展示了针对各生成相关任务的常用 prompts:

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

图3:不同任务下常用的 prompts,[X]是源文本,[Z]是以期生成的答案

2 构造ControlCodes

此处,Control Codes 指的是输入模型的控制信号。控制信号的数据类型选择非常广泛,包括符号、单词、文本段落等。为了使得模型在训练阶段能捕捉并拟合控制信号的作用,进而能泛化到推理阶段,控制信号需要与目标序列高度相关。

构造训练数据

GSum(Guided Summarization)引入了四种控制信号,包括重要句子、关键单词、显著实体三元组,以及检索到的相关摘要。结构上,GSum 基于 Transformer 改进。源文本和文本类型的控制信号共享编码器,在编码器顶层两者各自有一层专属编码器。解码器部分包含两个 Multihead Cross Attention 分别关注源文本编码和引导信号编码。

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

图4:GSum 模型结构图

为了保证控制信号与目标序列中存在可被捕捉的联系,实现摘要内容的可控,如何获取控制信号就显得尤为重要,即所构造的控制信号必须与目标序列高度相关。GSum 的训练和测试数据集中的控制信号的获取方式如下表所示:

文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

表2:GSum 的训练、测试集上中控制信号的构造方法

通过构造与目标序列高度相关的控制信号作为训练数据,模型实现了内容上的可控。然而,如果将训练数据集中控制信号的构造方法替换为上述测试集的方法,导致模型性能下降。究其原因是相较于训练阶段的控制信号的构造方法,推理阶段的方案获得的控制信号与目标序列之间的联系更弱了。更强的控制信号与目标序列属性之间的相关性,可能带来更好的控制性能。

类似地,CTRLsum 为了控制输出摘要的和内容长度,也考虑了如何在控制信号中体现目标序列的长度属性。针对内容可控,CTRLsum 首先根据原文中的句子与目标序列之间的 ROUGE 得分抽取出关键句子,然后筛选出关键句子与目标序列中的最长公共子序列,去除重复和停用词后获得关键词作为控制信号。

但 CTRLsum 并没有显式地给定控制信号,而是通过关键词的个数来“暗示”。首先,将训练集中的样本按照目标摘要的长度排序后平分为 5 桶;然后,统计各桶中的平均关键词个数。

在训练样本中,仅保留目标摘要所在桶所对应个数的关键词作为控制信号,测试阶段即可利用所输入关键词的个数来控制摘要长度,利用关键词的内容来控制摘要内容。

设计损失函数

通过设计损失函数来建模控制条件与目标输出之间联系的典型例子,是 CoCon(Content Conditioner)。结构上,CoCon 在 GPT-2 medium 的前 7 层和后 17 层之间一个 CoCon block,包括 Layer Normalization、Multihead Cross Attention 和 Feed Forward Networks。模型整体接受源文本输入后,利用 CoCon 模块引入控制条件信息,再做自回归解码以生成文本。

文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

图5:CoCon 模型结构图

为了构造训练数据,CoCon 从 GPT-2 Output Dataset 中采样出 30 wordpieces 长度的样本,从第 8 到 12 的位置上将文本切分为两段。CoCon 建立控制条件文本与目标文本之间关系的方式,由以下三个巧妙设计的损失函数来实现。为了方便介绍,我们考虑两个文本样本

文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

,分别被切分为

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

此处将前半段

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

作为源文本,后半段

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

作为条件,损失函数基于预测输出与

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

之间的负对数似然。之所以使用相同的后半段作为控制条件和目标序列,是为了让模型能够捕捉并利用控制控制条件中的信息。

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

将控制条件替换为符号

文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

,模型退化为非可控文本生成模型,训练出 CoCon 作为单向语言模型的性能。

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

首先将

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

作为源文本,将

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

作为条件输入 CoCon,生成文本

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

。然后使用

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

作为源文本

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

作为条件,希望模型能够生成

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

。这就要求模型 1)在生成的结果

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

中尽可能保留控制条件

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

中的信息;2)在生成过程中尽可能利用上控制条件中保留的信息,即依据

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

中保留的

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

的信息复原

文本摘要生成_文本摘要生成代码_文本摘要生成seq2seq

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

另外,在 CoCon 的训练中还有一个 Adversarial Loss,因其与可控无关,故在此不再展开。总体来看,CoCon 在没有对数据集做繁重特征工程的情况下,通过上述的损失函数,就能够习得控制条件对于输出的控制作用。这为可控文本生成也提供了一个非常有趣的思路。

3加入DecodingStrategy

不动预训练语言模型的参数与结构,仅通过解码阶段的策略入手,也能够影响解码输出的结果。切入点有两个,即 Beam Search 中似然得分的计算以及采样策略。

改进采样策略

Beam Search 是文本生成任务绕不开的话题。它介于局部最优的 Greedy Search,以及全局最优的 Global Search。Beam Search 在生成完整的预测文本序列的过程中,在每一个解码步都仅维护

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

个似然得分最高的 track 及其得分。在

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

个 track 的基础上进行下一步解码,获得

文本摘要生成代码_文本摘要生成seq2seq_文本摘要生成

个 track,再根据各自的似然得分进行采样,保留

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

个 track,直到解码过程终止。

其中,Beam Search 中每个 track 的似然得分计算方式如下:

文本摘要生成seq2seq_文本摘要生成_文本摘要生成代码

为了控制输出的文本长度,可以在似然得分上对于文本长度做惩罚,增加一个参数长度惩罚系数

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

文本摘要生成代码_文本摘要生成_文本摘要生成seq2seq

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

此处,

为解码长度,当

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

越大则对长度的惩罚项越大,鼓励从候选集中采样出更短的 track;

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

越小越鼓励采样更长的序列。

另一类解码策略从单词采样阶段入手,通常通过改变单词表上的概率分布,或根据规则限制候选集合的大小来实现。

单词表上的条件概率分布

文本摘要生成seq2seq_文本摘要生成_文本摘要生成代码

由解码状态映射到单词表容量的维度后,经过 softmax 进行归一化所得。可通过影响 softmax 函数来控制当前解码时刻单词表上的概率分布,进而影响 Beam Search 中的似然得分以及采样结果。常见方案有 softmax with temperature,即在 softmax 上增加一个温度系数

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

温度系数越大则概率分布越平缓,越小则概率分布越尖锐。

文本摘要生成_文本摘要生成seq2seq_文本摘要生成代码

输出趋向于 one-hot 分布文本摘要生成

文本摘要生成seq2seq_文本摘要生成_文本摘要生成代码

结果趋向于均匀分布。我们可以适当调高温度系数,在不影响输出文本语言学质量的情况下,提升用词的丰富性。

除了操控候选集合上的概率分布之外,还可以筛选候选集合中的成员。Top-K Sampling 通过设置候选集容量

,仅保留单词表中概率最大的

个单词,缓解了因采样了不置信的长尾单词对输出结果的影响。Nucleus Sampling 通过设置一个概率值

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

,仅保留最少数量的累积概率达到

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

的候选单词。相较于 Top-K Sampling,Nucleus Sampling 的候选词表的维度即可动态地扩展或压缩。

两种采样方式也可以和Softmax-with-temperature结合起来使用,通常

文本摘要生成seq2seq_文本摘要生成代码_文本摘要生成

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,加站长微信免费获取积分,会员只需38元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw