由上图可以看出,本文的主题信息不再和输入文本的embedding求和,而是先单独通过卷积编码,再和decoder的输入部分共同参与attention计算,通过两边的attention相加来融合文本embedding和主题信息;此外,还有一个概率生成模块(biased probability generation)负责进一步控制融合。
损失函数部分用到了强化学习中的SCST(self-critical sequence training)。作者提到,传统teacher forcing演算法目标是最小化每一步的极大似然损失,然而考虑到ROUGE这样衡量句子级准确度的验证演算法,由于exposure bias 的问题,该目标往往会得到次优解(训练时每次都通过ground-true预测当前步,预测时没有ground-true);此外,摘要具有灵活性,而最小化极大似然损失的优化目标会迫使模型仅把参考的摘要作为正确答案,其他语意上相似的答案会被认为是错误答案。为了解决原有优化目标带来的问题,作者提出用SCST直接最大化不可微的ROUGE,训练时根据输入产生两个输出,一个用传统概率最大化生成,另一个从分布中采样得到,计算两个输出序列的rouge分数作为reward,这样在训练阶段,SCST会让模型参考实际的分布,并迫使模型生成rouge分数更高的序列。
承接上一节,Transformer完全抛弃了CNN与RNN,设计了并行能力同样强的self-attention,与FFN,残差结构等共同组成一个Transformer模块,类似CNN可以堆叠多层且较RNN更节省时间。不过,Transformer和Convs2s在机器翻译任务上的表现差异并不大,加之Attention is all you need这样的文章标题,不少人在当时一度认为这又是一个拼模型刷分的水文,直到2018年GPT和BERT的诞生,深层Transformer堆叠+海量无监督语料预训练的模式受到几乎所有从业者的关注。本节介绍的是MSRA近期发表的MASS,作者通过修改BERT的mask方式实现Seq2seq框架下BERT预训练的文本生成模型。
BERT本身是以学习表示为目标,或者说是NLU方面的探索,随机MASK作为预训练任务被证明效果突出,然而会存在pretraining和fine-tuning数据不一致的问题,如果你想把BERT拼在Encoder端和Decoder端,就要考虑改变BERT的预训练方式。MASS略微修改了BERT的mask方式,在Encoder端连续 mask一个子序列,让Decoder用前i-1个词预测第i个,就这样把BERT套进Seq2seq框架,一起pretraining即可。
总结
本文重点介绍了基于Seq2seq框架的文本生成类模型,对于机器翻译任务,传统的attention-seq2seq结构就能获得不错的效果,相比于不同的模型结构,充分的训练数据似乎更为关键。而对于文本摘要,对话生成这类任务,序列中更需要包含主题,关键实体等特殊信息元,因而融合主题、输入文本、知识特征的策略很可能会带来更多收益。不过,文本生成类任务仍处于初级阶段,复杂花哨的结构也许很难达到可观的效果。因此笔者建议,即便是文本摘要这类任务,仍不妨先试试受众广泛的开源实现,诸如gnmt、fairseq、tensor2tensor等。
关于本文提到的一些trick,copy机制的实现有些复杂,并且不少开源项目的copy实现是存在问题的,pointer-generator的效果更好,且实现上更容易,当然,主题和知识特征的融合也是值得尝试的技巧。最后,本文没有过多涉及的强化学习和对抗网路,在文本生成方向上有不少值得借鉴的工作,也可以作为文本生成任务的一个方向考虑。
参考文献
[1]. Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
[2]. Sequence to Sequence Learning with Neural Networks
[3]. Neural Machine Translation by Jointly Learning to Align and Translate
[4]. Pointer Networks
[5]. Incorporating Copying Mechanism in Sequence-to-Sequence Learning
[6]. Get To The Point- Summarization with Pointer-Generator Networks
[7]. Generating Natural Answers by Incorporating Copying and Retrieving Mechanisms in Sequence-to-Sequence Learning
[8]. Multi-Source Pointer Network for Product Title Summarization
[9]. Learning to Select Knowledge for Response Generation in Dialog Systems
[10]. Don』t Give Me the Details, Just the Summary! Topic-Aware Convolutional Neural Networks for Extreme Summarization
[11]. A Reinforced Topic-Aware Convolutional Sequence-to-Sequence Model for Abstractive Text Summarization
[12]. MASS: Masked Sequence to Sequence Pre-training for Language Generation
招聘信息
丁香园大数据NLP团队招聘各类演算法人才,Base杭州。NLP团队的使命是利用NLP(自然语言处理)、Knowledge Graph(知识图谱)、Deep Learning(深度学习)等技术,处理丁香园海量医学文本数据,打通电商、在线问诊、健康知识、社区讨论等各个场景数据,构建医学知识图谱,搭建通用NLP服务。团队关注NLP前沿技术,也注重落地实现,包括但不仅限于知识图谱、短文本理解、语义搜索、可解释推荐、智能问答等。加入我们,让健康更多,让疾病更少!
欢迎各位朋友推荐或自荐至 [email protected]
推荐阅读: