​欢迎关注「澜舟论文领读」专栏!关注“澜舟科技”公众号探索更多 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)进行合理安排,从而形成结构、逻辑较好的文本。虽然预训练语言模型在关联与主题相关的内容时表现较好,但用好的篇章结构来安排内容仍然存在很多挑战。针对此问题,研究者提出建模文本内部片段与片段之间的篇章关系,利用篇章结构指导生成,以期能够改进生成文本的连贯性。


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

方法(Method)

2.1 任务定义

首先,长文本生成的任务可以定义为:给定输入x=(x1,x2,⋯,xN)x=(x_1, x_2, \cdots ,x_N)x=(x1,x2,,xN),模型自动生成y=(y1,y2,⋯yM)y=(y1,y2,⋯yM)y=(y1,y2,yM),y=(y1,y2,⋯,yM)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=(z1,z2,⋯,zL)z=(z_1,z_2, \cdots ,z_L)z=(z1,z2,,zL)学习文本中每个局部文本片段(span)的高层次结构,其中每一个zlz_lzl从大小为KKK的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来优化。

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

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

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

2.2 学习离散隐变量

图 2 模型整体框架

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

具体计算过程如下:

定义code vocabulary的大小为KKK,以及随机初始化的code embedding matrix为EzE^zEz

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

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

wk=exp⁡((tk+gk)/τ)∑k=1Kexp⁡((tk+gk)/τ)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 wwwEzE^zEz相乘得到code embedding oz=Ezwo^z=E^z woz=Ezw

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

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

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

Lrecon =Ez∼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片段did_ididi+1d_{i+1}di+1的篇章关系,使得did_ididi+1d_{i+1}di+1EDU片段对应的latent representation能够预测出两者之间的篇章关系di,i+1d_{i,i+1}di,i+1。最大化下述的对数概率:

p(di,i+1∣z)=softmax⁡(h‾i⊤Wdh‾i+1+bd)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)

Ldisc=Ez∼qϕ(z∣y)∑i=1∣A∣−1log⁡p(di,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‾=1L∑l=1Lsoftmax⁡(tl)\overline{\boldsymbol{p}}=\frac{1}{L} \sum_{l=1}^{L} \operatorname{softmax}\left(\boldsymbol{t}_{l}\right)p=L1l=1Lsoftmax(tl)

Lentr=−∑k=1Kpˉklog⁡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 训练目标

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

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

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

Lprior =Ez∼qϕ(z∣y)∑l=1Llog⁡p(zl∣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}_{<l}, \boldsymbol{x}\right)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数据集上评测所提方法,数据统计信息如下表所示。

3.2 baseline模型对比

对比的baseline模型如下:

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

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

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

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

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

3.3 结果分析

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

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

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

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

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

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

结语

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

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

论文领读|基于 VQVAE 的长文本生成相关推荐

  1. 论文领读:人工智能三巨头的Deep learning

    「笑傲算法江湖」的论文领读专栏聚焦于深度学习领域经典和最新论文的中英文对照译文,涵盖计算机视觉.自然语言.语音识别和强化学习等专业领域,帮助初学者理解算法理论,为未来算法工程师或科研工作奠定基础.「笑 ...

  2. NLP 论文领读 | Seq2Seq一统江湖?谷歌提出全新端到端检索范式DSI,它才是检索模型的未来?

    欢迎关注 NLP 论文领读专栏!快乐研究,当然从研读paper开始--澜舟科技团队注重欢乐的前沿技术探索,希望通过全新专栏和大家共同探索人工智能奥秘.交流NLP「黑科技」,踩在「巨人」肩上触碰星辰!官 ...

  3. NLP 论文领读|无参数机器翻译遇上对比学习:效率和性能我全都要!

    欢迎关注「澜舟论文领读」专栏!关注"澜舟科技"公众号探索更多 NLP 前沿论文! 本期分享者:付宇 澜舟科技算法研究实习生,天津大学硕士二年级,研究方向为检索增强机器翻译.文本摘要 ...

  4. 【论文极速读】VQ-VAE:一种稀疏表征学习方法

    [论文极速读]VQ-VAE:一种稀疏表征学习方法 FesianXu 20221208 at Baidu Search Team 前言 最近有需求对特征进行稀疏编码,看到一篇论文VQ-VAE,简单进行笔 ...

  5. 基于层次过滤的文本生成

    ©PaperWeekly 原创 · 作者|邓云天 学校|哈佛大学计算机系博士生 研究方向|自然语言处理 论文标题:Cascaded Decoding with Markov Transformers ...

  6. NLPCDA —— 基于SimBERT的相似文本生成

    NLPCDA -- 基于SimBERT的相似文本生成 感谢苏神开源的SimBERT,笔者先前简单尝试了SimBERT在相似文本生成的应用.同时结合nlpcda作者开源的代码,所以才有了博客中的demo ...

  7. 微软亚洲研究院论文解读:基于动态词表的对话生成研究(PPT+视频)

    本文为 12 月 27 日,北京航空航天大学博士生.微软亚洲研究院实习生--吴俣在第 21 期 PhD Talk 中的直播分享实录. 本次 Talk 的主题是基于动态词表的对话生成研究.首先,吴俣博士 ...

  8. 论文浅尝 | 基于知识库的神经网络问题生成方法

    论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答. 来源:NLPCC2018 链接:http://tcci.ccf.org.cn/conference/2018/papers/EV7 ...

  9. KerasSeq2seqGeneration:基于seq2seq模型的文本生成任务项目

    项目的由来 1.分类.抽取.序列标注.生成任务是自然语言处理的四大经典任务,其中,分类.抽取任务,可以使用规则进行快速实现.而对于生成而言,则与统计深度学习关系较为密切. 2.当前,GPT系列,自动文 ...

最新文章

  1. strcmp可以比较数组么_005 继承、封装、多态及数组初识
  2. c++文件操作一一读取文件内容
  3. 理解、学习与使用Java中的Optional
  4. jenkins pipeline python_【python3-4】Jenkins pipline集成参数自动化执行python脚本
  5. 反病毒引擎设计全解(二)
  6. Android平台Qt开发入门教程
  7. CSDN转载博客的方法
  8. 软件测试技术 homework2
  9. [科研笔记] 关于人工智能与算法项目的思考
  10. 基于多搜索引擎和深度学习技术的自动问答
  11. 洪水填充算法_区域填充算法和多边形填充的扫描线算法
  12. 检查radio/checkbox是否至少选择一项
  13. 十二进制转化为十进制
  14. bat自动输入密码_如何给电脑文件夹设置密码?一学就会
  15. 日常问题:上传接口报错
  16. java 纳秒_如何在Java 8中使用Date API达到精确的纳秒精...
  17. CSS文本超过两行用省略号代替(兼容所有浏览器)
  18. Python—获取电脑的锁屏壁纸
  19. iOS-马甲包审核以及常见审核问题
  20. 互联网大厂造AI芯片,前景如何?

热门文章

  1. 【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
  2. JavaScript_BOM浏览器对象模型
  3. 我的微信公众平台开通啦!
  4. python随机森林特征重要性原理_使用Python的随机森林特征重要性图表
  5. CTF Crypto中涉及的AES题目
  6. kindEditor 富文本编辑器 使用介绍
  7. 开机上报树梅派2的IP地址到邮箱
  8. 重磅丨云和恩墨zCloud数据库云管平台2.0版本发布
  9. 王乐畅草书签名怎么写
  10. Datawhale公众号运营周