前言:

近年来,多个大规模预训练语言模型GPT、BART、T5等被提出,这些预训练模型在自动文摘等多个文本生成任务上显著优于非预训练语言模型。但对于开放式生成任务,如故事生成、新闻生成等,其输入信息有限,而要求输出内容丰富,经常需要生成多个句子或段落,在这些任务上预训练语言模型依然存在连贯性较差、缺乏常识等问题。本次与大家分享一篇建模长文本篇章结构的工作,用以提升生成文本的连贯性。

论文题目:DISCODVT: Generating Long Text with Discourse-Aware Discrete Variational Transformer

论文作者:Haozhe Ji, Minlie Huang

论文单位:清华大学

论文链接: https://github.com/cdjhz/DiscoDVT,EMNP2021

动机(Motivation)

文本的全局连贯性一般表现为:

  • 内容表达的流畅度和
  • 内容之间的自然过渡。

如下图示例文本中的话语关系词(after, then, and, but等),这些篇章关系词将连续的文本片段(text span)进行合理安排,从而形成结构、逻辑较好的文本。虽然预训练语言模型在关联与主题相关的内容时表现较好,但用好的篇章结构来安排内容仍然存在很多挑战。针对此问题,研究者提出建模文本内部片段与片段之间的篇章关系,利用篇章结构指导生成,以期能够改进生成文本的连贯性。

nlp 付费转化 nlp生成文章_nlp 付费转化


图 1 EDU片段和篇章关系示例

方法(Method)

2.1 任务定义

首先,长文本生成的任务可以定义为:给定输入nlp 付费转化 nlp生成文章_深度学习_02,模型自动生成nlp 付费转化 nlp生成文章_深度学习_03,nlp 付费转化 nlp生成文章_nlp 付费转化_04的过程,即nlp 付费转化 nlp生成文章_深度学习_05

基于以上的讨论,该工作基于VQVAE的方法提出DiscoDVT(Discourse-aware Discrete Variational Transformer),首先引入一个离散code序列nlp 付费转化 nlp生成文章_自然语言处理_06学习文本中每个局部文本片段(span)的高层次结构,其中每一个nlp 付费转化 nlp生成文章_人工智能_07从大小为nlp 付费转化 nlp生成文章_语言模型_08的code vocabulary中得到。随后作者进一步提出一个篇章关系预测目标,使离散code能够捕获相邻文本片段之间显式的篇章关系,比如图1中的篇章关系,after,then等。

整个方法包括后验网络nlp 付费转化 nlp生成文章_人工智能_09、生成器nlp 付费转化 nlp生成文章_nlp 付费转化_10和先验网络nlp 付费转化 nlp生成文章_nlp 付费转化_11,使用类似VAE的学习目标,该方法通过最大化ELBO来优化。

nlp 付费转化 nlp生成文章_自然语言处理_12

训练过程分为两个阶段,第一阶段联合训练后验网络和生成器,使后验网络根据nlp 付费转化 nlp生成文章_自然语言处理_13推导出离散的code序列nlp 付费转化 nlp生成文章_深度学习_14,其中要求nlp 付费转化 nlp生成文章_深度学习_14能够学习到nlp 付费转化 nlp生成文章_自然语言处理_13的高层次结构,生成器则根据nlp 付费转化 nlp生成文章_语言模型_17和code序列nlp 付费转化 nlp生成文章_深度学习_14重构nlp 付费转化 nlp生成文章_自然语言处理_13

第二阶段训练先验网络,使其能够根据nlp 付费转化 nlp生成文章_语言模型_17,预测离散code序列nlp 付费转化 nlp生成文章_深度学习_14

两阶段训练完成之后,在生成阶段,先验网络首先根据nlp 付费转化 nlp生成文章_语言模型_17预测离散code序列z,随后z用于指导生成文本,z中带有篇章结构信息,因此能够提升生成文本的连贯性。

2.2 学习离散隐变量

nlp 付费转化 nlp生成文章_自然语言处理_23

图 2 模型整体框架

这部分主要解决如何学习隐变量code序列nlp 付费转化 nlp生成文章_深度学习_14,使其能够保留文本nlp 付费转化 nlp生成文章_自然语言处理_13的篇章结构。模型框架如上图所示,在编码阶段,首先使用编码器编码nlp 付费转化 nlp生成文章_自然语言处理_13得到语境化的表示,随后使用CNN和Discrete Variational Bottleneck技术得到离散code序列;在解码阶段,首先使用transposed cnn将code embedding序列的长度重新调整到到文本nlp 付费转化 nlp生成文章_自然语言处理_13的长度,然后添加到解码器的嵌入层中进行step-wise的控制,重构生成nlp 付费转化 nlp生成文章_自然语言处理_13。重构生成的优化目标能够使离散code序列保存文本nlp 付费转化 nlp生成文章_自然语言处理_13中高层次的结构信息。

具体计算过程如下:

定义code vocabulary的大小为nlp 付费转化 nlp生成文章_语言模型_08,以及随机初始化的code embedding matrix为nlp 付费转化 nlp生成文章_语言模型_31

  • 首先使用Bart encoder编码nlp 付费转化 nlp生成文章_人工智能_32得到语境化的表nlp 付费转化 nlp生成文章_深度学习_33;
  • 为了抽象出与文本的全局结构相对应的high-level feature, 使用多层CNN-
  • nlp 付费转化 nlp生成文章_自然语言处理_34进行卷积操作,得到span-level的表示nlp 付费转化 nlp生成文章_nlp 付费转化_35;
  • 随后使用Discrete Variational Bottleneck技术获得离散code。具体地,将CNN的输出nlp 付费转化 nlp生成文章_自然语言处理_36线性映射到离散空间:
    nlp 付费转化 nlp生成文章_人工智能_37

训练阶段通过gumbel-softmax方法采样得到soft categorical distribution nlp 付费转化 nlp生成文章_人工智能_38:

nlp 付费转化 nlp生成文章_深度学习_39

随后categorical distribution nlp 付费转化 nlp生成文章_人工智能_38nlp 付费转化 nlp生成文章_语言模型_31相乘得到code embedding nlp 付费转化 nlp生成文章_nlp 付费转化_42

在推理阶段则通过argmax方式得到离散code序列nlp 付费转化 nlp生成文章_深度学习_14

nlp 付费转化 nlp生成文章_nlp 付费转化_44

  • 为了能够使每个code能够指导局部文本的生成,首先利用Transposed CNN网络(与步骤2中使用的CNN对称),将code embedding nlp 付费转化 nlp生成文章_自然语言处理_45 重新调整到nlp 付费转化 nlp生成文章_深度学习_46。(这里类似上采样的操作,将离散的code embedding序列的长度,恢复到原始文本nlp 付费转化 nlp生成文章_人工智能_32的长度,可以看到nlp 付费转化 nlp生成文章_深度学习_48的长度恢复为nlp 付费转化 nlp生成文章_深度学习_49。)之后,nlp 付费转化 nlp生成文章_深度学习_48与解码器输入的token embedding相加用于重构文本nlp 付费转化 nlp生成文章_人工智能_32。重构优化目标如下:

nlp 付费转化 nlp生成文章_深度学习_52

2.2.1 篇章关系建模

为了将文本的篇章结构抽象为latent representation,作者设计了一个辅助的篇章关系感知目标,将篇章关系嵌入到离散化的code中。使用bi-affine建模相邻EDU片段nlp 付费转化 nlp生成文章_人工智能_53nlp 付费转化 nlp生成文章_nlp 付费转化_54的篇章关系,使得nlp 付费转化 nlp生成文章_人工智能_53nlp 付费转化 nlp生成文章_nlp 付费转化_54EDU片段对应的latent representation能够预测出两者之间的篇章关系nlp 付费转化 nlp生成文章_nlp 付费转化_57。最大化下述的对数概率:

nlp 付费转化 nlp生成文章_人工智能_58

nlp 付费转化 nlp生成文章_深度学习_59

其中,$ \bar{h}inlp 付费转化 nlp生成文章_深度学习_60{i+1}nlp 付费转化 nlp生成文章_自然语言处理_61inlp 付费转化 nlp生成文章_深度学习_62i+1$个EDU 片段的隐表示(latent representation)。

2.2.2 正则化隐变量

此外,作者在前期的实验中发现模型倾向于仅利用这个code vocabulary中少量的离散code,这种现象会损害离散code的表达能力。为了鼓励模型尽可能等概率的利用离散code,作者还引入基于熵的正则方法。

nlp 付费转化 nlp生成文章_人工智能_63

nlp 付费转化 nlp生成文章_人工智能_64

2.2.3 训练目标

在第一阶段中,联合上述的几个优化目标来训练后验网络和生成器,总的优化目标为:

nlp 付费转化 nlp生成文章_深度学习_65

离散code学习完成之后,作者使用额外的一个基于编码-解码的先验网络来学习给定nlp 付费转化 nlp生成文章_语言模型_17条件下离散code的先验分布nlp 付费转化 nlp生成文章_自然语言处理_67,优化目标如下:

nlp 付费转化 nlp生成文章_深度学习_68

这里因为离散code已经学习完成,得到后验网络nlp 付费转化 nlp生成文章_人工智能_09,对于原始的数据集D={x_i,y_i}_{i=1}{|D|}中的每一个$y$,可以通过后验网络得到离散code序列$z$,从而形成一个数据集D_z={x_i,z_i}_{i=1}{|D_z|},该数据集用于训练先验网络。

实验

3.1 数据集

作者在公开的故事生成数据集WritingPrompts和Wikiplots数据集上评测所提方法,数据统计信息如下表所示。

nlp 付费转化 nlp生成文章_语言模型_70

3.2 baseline模型对比

对比的baseline模型如下:

  • Seq2Seq: 它是采用与Bart相同框架的编码-解码模型,没有经过预训练;
  • Bart:采用预训练Bart模型,并在下游数据集上对其微调;
  • Bart-LM: 同样采用预训练Bart模型,先使用bookcorpus数据对其继续训练,随后在下游数据集进行微调;
  • BART-CVAE:基于CVAE的框架,引入连续隐变量到Bart模型,将隐变量加到解码器的embedding层指导生成文本;
  • Aristotelian Rescoring:它采用内容规划的方法,给定输入nlp 付费转化 nlp生成文章_自然语言处理_71,它首先生成一个基于SRL的情节,然后根据情节打分模型修改情节,最后基于修改的情节生成文本。

3.3 结果分析

下表展示了所有模型在两个数据集的自动评测结果。

nlp 付费转化 nlp生成文章_人工智能_72

可以看到,在两个数据集上,在基于参考的指标上,DiscoDVT生成的文本获得最高的n-gram重叠度(BLEU)和相似度(MSJ)。多样性方面,DiscoDVT在distinct指标上略微低于BART-CVAE,这里作者进一步检查了BART-CVAE的生成文本,发现BART-CVAE会生成不出现在参考文本中的虚假单词,从而提高了多样性。在重复度方面,由于DiscoDVT使用了step-wise的控制,因此rep-nlp 付费转化 nlp生成文章_语言模型_73有较大幅度领先。

基于规划的方法AR可以获得较高的多样性,但在基于参考的指标上BLEU、MSJ、rB上的结果较低,这可能是多阶段方法中的暴露偏差,对生成质量有负面影响。

nlp 付费转化 nlp生成文章_人工智能_74

人工评测结果显示,在生成文本的连贯性和信息度方面,大多数DiscoDVT生成文本的质量要优于BART, BART-LM和BART-CAVE baseline。

nlp 付费转化 nlp生成文章_人工智能_75

如上图所示,作者进一步对学习的code进行分析,可以发现离散的code确实能够学习到篇章关系,比如 and, so, when, however等。

nlp 付费转化 nlp生成文章_语言模型_76

作者利用discourse marker classifification任务评测生成的篇章关系词是否正确,如上图所示。在让步、因果、时序和连接4种篇章关系上,DiscoDVT生成文本中的篇章关系准确率最高,说明DiscoDVT生成的文本在篇章关系上质量更好。当去掉篇章关系建模的优化目标,生成的篇章关系准确率有明显下降,从而证明了篇章关系建模方法的有效性。

结语

本次分享展示了一种利用离散code来建模文本篇章结构的方法。该方法引入一个离散code序列学习文本的篇章结构,随后采用step-wise解码指导生成文本。为了建模显式的篇章关系,作者进一步提出了篇章关系建模优化目标。自动评测和人工评测结果证明了该方法的有效性。对于code的分析实验验证了离散code确实能够保留篇章关系的信息。

文本连贯性是自然语言生成的重要课题,目前改进的方法包括基于规划、建模高层次结构等方面,主要流程是首先生成文本大纲,再根据大纲生成完整的文本,其中大纲可以由关键词序列或者事件序列构成。整体来看,长文本生成中的篇章结构建模还仍不够成熟