论文领读|基于 VQVAE 的长文本生成

​欢迎关注「澜舟论文领读」专栏!关注“澜舟科技”公众号探索更多 NLP 前沿论文!

本期分享者:杨二光

北京交通大学自然语言处理实验室四年级博士生,导师为张玉洁教授,研究方向为可控文本生成、复述生成、故事生成。在澜舟科技实习期间主要从事长文本生成、营销文案生成等课题。

前言:

近年来,多个大规模预训练语言模型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)进行合理安排,从而形成结构、逻辑较好的文本。虽然预训练语言模型在关联与主题相关的内容时表现较好,但用好的篇章结构来安排内容仍然存在很多挑战。针对此问题,研究者提出建模文本内部片段与片段之间的篇章关系,利用篇章结构指导生成,以期能够改进生成文本的连贯性。

论文领读|基于 VQVAE 的长文本生成_第1张图片
图 1 EDU片段和篇章关系示例

方法(Method)

2.1 任务定义

首先,长文本生成的任务可以定义为:给定输入 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1, x_2, \cdots ,x_N) x=(x1,x2,,xN),模型自动生成 y = ( y 1 , y 2 , ⋯ y M ) y=(y1,y2,⋯yM) y=(y1,y2,yM), y = ( y 1 , y 2 , ⋯   , y M ) y=(y_1, y_2, \cdots , y_M) y=(y1,y2,,yM)的过程,即 p ( y ∣ x ) p(y|x) p(yx)

基于以上的讨论,该工作基于VQVAE的方法提出DiscoDVT(Discourse-aware Discrete Variational Transformer),首先引入一个离散code序列 z = ( z 1 , z 2 , ⋯   , z L ) z=(z_1,z_2, \cdots ,z_L) z=(z1,z2,,zL)学习文本中每个局部文本片段(span)的高层次结构,其中每一个 z l z_l zl从大小为 K K K的code vocabulary中得到。随后作者进一步提出一个篇章关系预测目标,使离散code能够捕获相邻文本片段之间显式的篇章关系,比如图1中的篇章关系,after,then等。

整个方法包括后验网络 q ϕ ( z ∣ y ) q_\phi (z|y) qϕ(zy)、生成器 p θ ( y ∣ z , x ) p_\theta (y|z,x) pθ(yz,x)和先验网络 p ψ ( z ∣ x ) p_\psi (z|x) pψ(zx),使用类似VAE的学习目标,该方法通过最大化ELBO来优化。

在这里插入图片描述

训练过程分为两个阶段,第一阶段联合训练后验网络和生成器,使后验网络根据 y y y推导出离散的code序列 z z z,其中要求 z z z能够学习到 y y y的高层次结构,生成器则根据 x x x和code序列 z z z重构 y y y

第二阶段训练先验网络,使其能够根据 x x x,预测离散code序列 z z z

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

2.2 学习离散隐变量

论文领读|基于 VQVAE 的长文本生成_第2张图片

图 2 模型整体框架

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

具体计算过程如下:

定义code vocabulary的大小为 K K K,以及随机初始化的code embedding matrix为 E z E^z Ez

  • 首先使用Bart encoder编码 y y y得到语境化的表 H e = [ h 1 e , ⋯   , h M e ] H^e=[h_1^e,\cdots ,h_M^e] He=[h1e,,hMe];
  • 为了抽象出与文本的全局结构相对应的high-level feature, 使用多层CNN-
  • H e H^e He进行卷积操作,得到span-level的表示 O e = [ o 1 e , ⋯   , o L e ] O^e=[o_1^e, \cdots , o_L^e] Oe=[o1e,,oLe];
  • 随后使用Discrete Variational Bottleneck技术获得离散code。具体地,将CNN的输出 O e O^e Oe线性映射到离散空间:
    t = W z o e t = W^z o^e t=Wzoe

训练阶段通过gumbel-softmax方法采样得到soft categorical distribution w w w:

w k = exp ⁡ ( ( t k + g k ) / τ ) ∑ k = 1 K exp ⁡ ( ( t k + g k ) / τ ) w_{k}=\frac{\exp \left(\left(t_{k}+g_{k}\right) / \tau\right)}{\sum_{k=1}^{K} \exp \left(\left(t_{k}+g_{k}\right) / \tau\right)} wk=k=1Kexp((tk+gk)/τ)exp((tk+gk)/τ)

随后categorical distribution w w w E z E^z Ez相乘得到code embedding o z = E z w o^z=E^z w oz=Ezw

在推理阶段则通过argmax方式得到离散code序列 z z z

z = argmax ⁡ k ∈ K t k z=\underset{k \in K}{\operatorname{argmax}} t_{k} z=kKargmaxtk

  • 为了能够使每个code能够指导局部文本的生成,首先利用Transposed CNN网络(与步骤2中使用的CNN对称),将code embedding O z = [ o 1 z , ⋯   , o L z ] O^z=[o_1^z, \cdots , o_L^z] Oz=[o1z,,oLz] 重新调整到 H z = [ h 1 z , ⋯   , h M z ] H^z=[h_1^z, \cdots , h_M^z] Hz=[h1z,,hMz]。(这里类似上采样的操作,将离散的code embedding序列的长度,恢复到原始文本 y y y的长度,可以看到 H z H^z Hz的长度恢复为 M M M。)之后, H z H^z Hz与解码器输入的token embedding相加用于重构文本 y y y。重构优化目标如下:

L recon  = E z ∼ q ϕ ( z ∣ y ) log ⁡ p θ ( y ∣ z , x ) \mathcal{L}_{\text {recon }}=\mathbb{E}_{\boldsymbol{z} \sim q_{\phi}(\boldsymbol{z} \mid \boldsymbol{y})} \log p_{\theta}(\boldsymbol{y} \mid \boldsymbol{z}, \boldsymbol{x}) Lrecon =Ezqϕ(zy)logpθ(yz,x)

2.2.1 篇章关系建模

为了将文本的篇章结构抽象为latent representation,作者设计了一个辅助的篇章关系感知目标,将篇章关系嵌入到离散化的code中。使用bi-affine建模相邻EDU片段 d i d_i di d i + 1 d_{i+1} di+1的篇章关系,使得 d i d_i di d i + 1 d_{i+1} di+1EDU片段对应的latent representation能够预测出两者之间的篇章关系 d i , i + 1 d_{i,i+1} di,i+1。最大化下述的对数概率:

p ( d i , i + 1 ∣ z ) = softmax ⁡ ( h ‾ i ⊤ W d h ‾ i + 1 + b d ) p\left(d_{i,i+1}\mid \boldsymbol{z}\right)=\operatorname{softmax}\left(\overline{\boldsymbol{h}}_{i}^{\top} \boldsymbol{W}_{d} \overline{\boldsymbol{h}}_{i+1}+\boldsymbol{b}_{d}\right) p(di,i+1z)=softmax(hiWdhi+1+bd)

L d i s c = E z ∼ q ϕ ( z ∣ y ) ∑ i = 1 ∣ A ∣ − 1 log ⁡ p ( d i , i + 1 ∣ z ) \mathcal{L}_{\mathrm{disc}}=\mathbb{E}_{\boldsymbol{z} \sim q_{\phi}(\boldsymbol{z} \mid \boldsymbol{y})} \sum_{i=1}^{|\mathcal{A}|-1} \log p\left(d_{i, i+1} \mid \boldsymbol{z}\right) Ldisc=Ezqϕ(zy)i=1A1logp(di,i+1z)

其中,$ \bar{h}i 和 和 \bar{h}{i+1} 分 别 表 示 第 分别表示第 i 个 和 个和 i+1$个EDU 片段的隐表示(latent representation)。

2.2.2 正则化隐变量

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

p ‾ = 1 L ∑ l = 1 L softmax ⁡ ( t l ) \overline{\boldsymbol{p}}=\frac{1}{L} \sum_{l=1}^{L} \operatorname{softmax}\left(\boldsymbol{t}_{l}\right) p=L1l=1Lsoftmax(tl)

L e n t r = − ∑ k = 1 K p ˉ k log ⁡ p ˉ k \mathcal{L}_{\mathrm{entr}}=-\sum_{k=1}^{K} \bar{p}_{k} \log \bar{p}_{k} Lentr=k=1Kpˉklogpˉk

2.2.3 训练目标

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

L recon  + λ 1 L entr  + λ 2 L d i s c \mathcal{L}_{\text {recon }}+\lambda_{1} \mathcal{L}_{\text {entr }}+\lambda_{2} \mathcal{L}_{\mathrm{disc}} Lrecon +λ1Lentr +λ2Ldisc

离散code学习完成之后,作者使用额外的一个基于编码-解码的先验网络来学习给定 x x x条件下离散code的先验分布 p ( z ∣ x ) p(z|x) p(zx),优化目标如下:

L prior  = E z ∼ q ϕ ( z ∣ y ) ∑ l = 1 L log ⁡ p ( z l ∣ z < l , x ) \mathcal{L}_{\text {prior }}=\mathbb{E}_{\boldsymbol{z} \sim q_{\phi}(\boldsymbol{z} \mid \boldsymbol{y})} \sum_{l=1}^{L} \log p\left(z_{l} \mid \boldsymbol{z}_{Lprior =Ezqϕ(zy)l=1Llogp(zlz<l,x)

这里因为离散code已经学习完成,得到后验网络 q ϕ ( z ∣ y ) q_\phi (z|y) qϕ(zy),对于原始的数据集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数据集上评测所提方法,数据统计信息如下表所示。

论文领读|基于 VQVAE 的长文本生成_第3张图片

3.2 baseline模型对比

对比的baseline模型如下:

  • Seq2Seq: 它是采用与Bart相同框架的编码-解码模型,没有经过预训练;

  • Bart:采用预训练Bart模型,并在下游数据集上对其微调;

  • Bart-LM: 同样采用预训练Bart模型,先使用bookcorpus数据对其继续训练,随后在下游数据集进行微调;

  • BART-CVAE:基于CVAE的框架,引入连续隐变量到Bart模型,将隐变量加到解码器的embedding层指导生成文本;

  • Aristotelian Rescoring:它采用内容规划的方法,给定输入 x x x,它首先生成一个基于SRL的情节,然后根据情节打分模型修改情节,最后基于修改的情节生成文本。

3.3 结果分析

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

论文领读|基于 VQVAE 的长文本生成_第4张图片

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

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

论文领读|基于 VQVAE 的长文本生成_第5张图片

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

论文领读|基于 VQVAE 的长文本生成_第6张图片

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

论文领读|基于 VQVAE 的长文本生成_第7张图片

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

结语

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

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

你可能感兴趣的:(NLP,论文领读,人工智能,深度学习,自然语言处理)