LaserTagger: 文本生成任务的序列标注解决方案

2020 年 3 月 6 日 AINLP

今天要和大家分享的是2019年Google Research的一篇关于文本生成的论文[1],已开源[2]

论文提出了一个解决文本生成任务的新方法。新方法将文本生成任务转换为序列标注任务,并且推断速度极快可以达到目前常用的序列到序列 (seq2seq) 模型的100倍,所以被命名为LaserTagger

值得一提的是,论文中的实验表明LaserTagger使用几千条训练数据就可以达到seq2seq模型使用几万条训练数据的性能。这对于实际项目的应用是个非常好的消息。

想解决的问题

序列到序列 (seq2seq) 模型是目前多种文本生成任务的首选,特别是结合预训练语言模型的使用,大大提升了文本生成的质量。这里推荐大家阅读并持续关注我们晴天1号的预训练语言模型系列文章。

但是seq2seq模型仍有一些重大问题。

  1. “幻觉”(Hallucination)

即模型的部分输出与输入无关。主要原因是seq2seq模型的输出可能性太多,输出的内容和长度都不可控制。seq2seq很容易输出一些通顺但没有意义,或意义与输入完全不同的句子,这在一些对准确率要求比较高的场景中是非常危险的。

  1. 需要大量的训练数据

seq2seq模型十分复杂,参数量大。需要大量的训练数据来充分学习,保证生成的文本质量。然而,大多数场景下,很难获得足够的高质量的标注数据。

  1. 逐字预测,推断速度慢

seq2seq模型需要逐字地生成文本,后一个字的预测依赖前一个字的预测结果,推断速度较慢。在需要高度实时性的应用场景,很难符合要求。

LaserTagger的思路

论文作者发现,在一些文本生成任务中(如,句子融合,拆分和改述等),输出和输入的文本高度重合。对于这些任务,seq2seq模型的复杂结构似乎有一些浪费。由此想到,可以将这些文本生成任务转变成文本序列标注任务。

首先对输入文本进行序列标注生成每个英文单词对应的编辑标签。编辑标签包括KEEP(保留单词)和DELETE(删除单词)两个基本标签。若需要在单词前添加词组,在基本标签后加上ADD(X)(在对应单词前添加词组X,X出自一个经过严格挑选的有限词组集);再运用简单的规则,结合输入文本和编辑标签得到输出文本。

如下图所示,除了保留大部分原文本的内容外,删除第一个句号,并在句号位置前添加and he,然后将句号后的Turing删除。这样就成功地将两句句子合并成一句。

LaserTagger在句子融合任务中的应用

有限词组集的选择

ADD标签能够添加的所有词组组成一个有限的词组集。不同的文本生成任务和不同的数据集需要不同的词组集。由标注数据中获取词组集,有两个优化目标。

  1. 最小化词组集中的词组总数。

  2. 最大化词组集能重构的标注数据数量。

那如何达到这两个优化目标呢?第一步,找出输入和输出文本序列的最长公共子序列(longest common subsequence,LCS),将输出文本中不在LCS中的词组组成候选词组列表;第二步,根据词组在标注数据中出现的次数将候选词组排序。在训练时,取出现次数最多的n个词组组成有限词组集。

论文指出,逐一取增加覆盖标注数据数量最多的词组的贪婪方法在这里并不可取。因为有些词组之间是强绑定的(如,左括号“(”和右括号“)”),单独一个不会增加覆盖的标注数据数量,但是合并在一起就很常见。

下图是在四个文本生成任务中,排名前15的可添加词组。

有限词组集的例子。DfWiki:句子融合;WikiSplit:拆分和改述;AS:摘要总结;GEC:语法纠错

文本序列标注模型结构

模型的encoder选用Bert Transformer[3]模型,是BERT-base结构,包括12层self-attention,并用预训练的大小写敏感的BERT-base模型进行初始化。

论文尝试了两种decoder结构:

  • LaserTagger(FF)

采用一层feed-forward作为decoder,直接取encoder logits的argmax,当前step的预测和其它step无关。因此,输出标签的预测互相独立,速度非常快。

  • LaserTagger(AR)

采用一层autoregressive Transformer作为decoder,如下图。取前一个step的预测标签embedding和当前step的encoder activation进行预测。因为LaserTagger(AR)模型decoder的结构更复杂,所以会比LaserTagger(FF)模型的预测更准确。

LaserTagger(AR)模型结构

实验结果

论文在句子融合,拆分和改述,摘要总结,和语法纠错四个文本生成任务进行实验,将LaserTagger和每个任务各自的当前最高水平(state-of-the-art, SOTA)进行比较。LaserTagger的实验结果超过了其中三个任务的SOTA。

与此同时,论文还用BERT Transformer model训练了一个性能十分优秀的seq2seq baseline (Seq2SeqBERT)。Seq2SeqBERT使用和LaserTagger一样的初始化方法和各种细节,保证LaserTagger方法和seq2seq方法的公平比较。

首先,在句子融合任务的DfWiki数据集上,对有限词组集大小的影响进行了实验。在下图中,Gold指当前词组集大小能够重构的样本比例。可以看出,词组数量达到500后,模型的性能和词组集能够覆盖的样本比例都趋于平稳。

有限词组集大小的影响。Exact score:完全匹配正确的样本比例。

由不同训练数据数量的实验可以看出(见下图),全量数据时,Seq2SeqBERT结果和LaserTagger(AR)结果相当;当数据量减少,LaserTagger(FF&AR)会比Seq2SeqBERT结果好很多。

句子融合任务(左),拆分和改述任务(右)。SARI:added/kept/deleted n-gram的平均F1分数,分数越高,模型性能越好。

在推断时间方面,由下图可知,LaserTagger(FF)比LaserTagger(AR)快10倍,比Seq2SeqBERT快100倍;LaserTagger(AR)比Seq2SeqBERT快10倍以上。

不同batch size的推断时间(单位:ms),取在GPU(Nvidia Tesla P100)预测100次的平均值。

读后感

由LaserTagger的思路和实验结果可以看出,开头列举的seq2seq的三大问题都有了很好的解决。有限的词组集使得模型结果可控制,可解释,缓解了“幻觉”的现象;LaserTagger使用seq2seq十分之一的训练数据就可以达到与之相当的性能;可以并行预测的模型结构也大大加快了推测速度,是seq2seq模型的100倍。

除此之外,LaserTagger也有一些局限需要注意。将文本生成转换为序列标注的思路要求输入和输出文本高度重叠,所以不是所有的文本生成任务都适用。

总的来说,这篇论文的思路很有启发性,实验设计的比较严谨,文章可读性也很好,推荐大家一读。

参考资料

[1]

Encode, Tag, Realize: High-Precision Text Editing: https://arxiv.org/pdf/1909.01187.pdf

[2]

论文开源代码: https://github.com/google-research/lasertagger

[3]

BERT论文: https://arxiv.org/pdf/1810.04805


推荐阅读

AINLP年度阅读收藏清单

关于ELMo,面试官们都怎么问

CLUENER2020:中文细粒度命名实体识别数据集来了

中文NER任务实验小结报告——深入模型实现细节

BottleSum——文本摘要论文系列解读

抛开模型,探究文本自动摘要的本质——ACL2019 论文佳作研读系列

鼠年春节,用 GPT-2 自动写对联和对对联

用 GPT-2 自动写诗,从五言绝句开始

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
3

相关内容

在自然语言处理中,另外一个重要的应用领域,就是文本的自动撰写。关键词、关键短语、自动摘要提取都属于这个领域的一种应用。
【ICML2020-浙江大学】对抗性互信息的文本生成
专知会员服务
43+阅读 · 2020年7月4日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
77+阅读 · 2020年5月24日
【WWW2020-UIUC】为新闻故事生成具有代表性的标题
专知会员服务
26+阅读 · 2020年3月18日
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
高效的文本生成方法 — LaserTagger 现已开源
TensorFlow
30+阅读 · 2020年2月27日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
专栏 | NLP概述和文本自动分类算法详解
机器之心
12+阅读 · 2018年7月24日
用于神经网络机器翻译的全并行文本生成
专栏 | Bi-LSTM+CRF在文本序列标注中的应用
机器之心
14+阅读 · 2018年1月3日
用于神经机器翻译的全并行文本生成
全球人工智能
7+阅读 · 2017年11月13日
神经网络机器翻译原理:LSTM、seq2seq到Zero-Shot
北京思腾合力科技有限公司
11+阅读 · 2017年8月10日
Arxiv
5+阅读 · 2019年8月22日
Arxiv
21+阅读 · 2019年8月21日
Arxiv
8+阅读 · 2019年3月28日
Arxiv
14+阅读 · 2018年5月15日
Arxiv
5+阅读 · 2018年5月10日
VIP会员
相关资讯
高效的文本生成方法 — LaserTagger 现已开源
TensorFlow
30+阅读 · 2020年2月27日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
专栏 | NLP概述和文本自动分类算法详解
机器之心
12+阅读 · 2018年7月24日
用于神经网络机器翻译的全并行文本生成
专栏 | Bi-LSTM+CRF在文本序列标注中的应用
机器之心
14+阅读 · 2018年1月3日
用于神经机器翻译的全并行文本生成
全球人工智能
7+阅读 · 2017年11月13日
神经网络机器翻译原理:LSTM、seq2seq到Zero-Shot
北京思腾合力科技有限公司
11+阅读 · 2017年8月10日
Top
微信扫码咨询专知VIP会员