【paper reading】基于重编辑机制的文本生成算法
今天分享一篇基于重编辑机制的文本生成论文
paper:Paper Abstract Writing through Editing Mechanism(发表于ACL2018)
code:源码
概述:这篇论文解决的问题是使用paper的title来生成abstract。论文使用了一种重编辑机制(参考人类写论文的过程:先写一个草稿出来,再不断的修改),是一个信息量由少到多的过程。
本次分享希望能让你:
- 了解重编辑机制的工作原理;
- 学会编写主体框架。
1. 模型总体框架
1.1 encode-decode框架
encoder-decoder模型,也就是编码-解码模型。所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。
1.2 Model Overview
2. 模型细节
论文主要包括两部分:撰写网络和编辑网络。
撰写网络:使用title作为输入,生成初稿;
编辑网络:联合title和初稿作为输入,多次编辑生成终稿。
2.1 Writing Network
两张图的红框处表示对title进行encode编码;
蓝框处表示对初稿进行encode编码;
绿框处表示解码输出。
2.2 Editing Network
即前文的self.decoder函数
红框:单向解码;
蓝框:对title的encode结果与解码器输出做attention;
绿框:对初稿的encode结果与解码器输出做attention;
黄框:对上述两个attention结果做一个基于注意力的修改门(控制要修改哪一部分)
2.3 注意力机制
对注意力机制不了解的,可以看一下这篇论文(开山之作,soft-alignment attention):
Neural Machine Translation By Jointly Learning To Align and Translate.
2.3.1 本文使用的方法
因为encoder部分为双向RNN,假设隐藏层变量维度为512维,那么encoder之后的变量维度为1024(双向);
因此,decoder部分的隐藏层变量必须设为1024维,以满足上述要求。
2.3.2 Attentive Revision Gate
这部分是对上述两个attention结果做一个基于注意力的修改门(控制要修改哪一部分),类似于GRU的门控结构:
2.4. 重编辑机制
这里的重编辑是指,每一次编辑都计算一次损失,比如设置编辑次数为3,那么计算一个样本可以得到三个Loss,分别对应第一,二,三次编辑:
3. 结果分析
Datasets: 10,874 paper title and abstract pairs.
We randomly dividing them into training (80%),
validation (10%), and testing (10%) sets.
小声BB:其实感觉提升不是很明显,不过人工验证部分确实要好很多,说明更符合人的观感。
个人想法:我在自己的数据集上测试过(不同任务),效果不太好。这么小的数据量,扔到预训练模型中进行fine-tune是更好的方法。不过本文是18年提出来的,那时候bert家族还没有大行其道,这种方法也不失为一种好的改进。