写点什么

编码、标记和实现:一种高效可控的文本生成方法

2020 年 2 月 29 日

编码、标记和实现:一种高效可控的文本生成方法

序列到序列(sequence-to-sequence,简称 seq2seq)模型使机器翻译这个领域起了翻天覆地的变化,并且成为像摘要句子融合和语法错误纠正等各种文本生成任务的首选工具。近几年来我们看到,得益于模型架构(如Transformer)的诸多改进和通过无监督的预训练来利用大量未注释文本的能力,神经网络方法的质量得到了相应的提升。


但是,把 seq2seq 模型用于文本生成会带来一些不可忽视的缺点,具体则取决于用例,比如生成不受输入文本支持的输出(被称为幻觉),以及需要大量训练数据才能达到良好的性能。此外,由于 seq2seq 模型通常是一个词一个词地生成输出,因此它们的推理速度天生就很慢。


《编码、标记、实现:高精度文本编辑》( Encode, Tag, Realize: High-Precision Text Editing)这篇文章中,我们提出了一个全新的开源文本生成方法,该方法旨在专门解决这三个缺点。


由于该方法速度快、精度高,因此被称为 LaserTagger。LaserTagger 不是从头开始生成输出文本,而是通过预测的编辑操作来标记单词以生成输出,这些预测的编辑操作随后在单独的实现步骤上应用于输入词组。这种方法在处理文本生成时不易出错,处理它的模型架构也可以选择更容易训练和更快执行的类型。


LaserTagger 的设计和功能

很多文本生成任务的一个显著特征是,在输入和输出之间常常存在高度重叠。比如,在检测测和修复语法错误或是融合语句时,大多数输入文本可以保持不变,只有一小部分单词需要修改。因此,LaserTagger 会生成一系列编辑操作而不是一些实际的单词。我们使用的 4 种编辑操作是:Keep(把一个单词复制到输出)、Delete(删除一个单词)以及 Keep-AddX/Delete-AddX(在标记过的单词前面添加短语 X,还可以选择删除这个标记过的单词)。该过程如下图所示,展示了 LaserTagger 在语句融合中的应用。



LaserTagger 适用于语句融合。该预测编辑操作相当于删除“. Turing”并在它的前面添加“and he”。请注意在输入和输出文本之间的高度重叠。


所有添加的短语都来自于有限的词汇表。该词汇表是一个优化过程的结果,该过程有两个目标:(1)把词汇表做得尽量小,(2)把训练示例的数量尽量做大,其中唯一需要添加到目标文本中的单词来自该词汇表。由于有了一个有限的短语词汇表,因而输出决策的空间变小了,并且避免了模型随意添加单词的情况,从而减轻了幻觉的问题。输入和输出文本高度重叠的属性的一个推论是,所需的修改往往是局部的,并且彼此独立。这意味着,该编辑操作可以进行高度精确的并行预测,与自回归 seq2seq 模型(这种模型是根据先前的预测顺序执行预测)相比,前者的端到端速度明显提高。


结果

我们在 4 个任务上对 LaserTagger 进行了评估,这 4 个任务分别是:语句融合、拆分和改述、抽象摘要及语法纠正。 在这些任务中,LaserTagger 的表现与强大的基于BERT的 seq2seq 基线相当,而后者使用了大量的训练示例;并且当训练示例的数量有限时,LaserTagger 的性能显然优于后者。 我们在WikiSplit数据集上的训练结果展示如下,其中的任务是把一个长句改述为两个连贯的短句。



在有 1 百万个示例的完整数据集上训练时,LaserTagger 和基于BERT的 seq2seq 基线这两个模型表现相当,但在其具有 1 万个或更少示例的子集上训练时,LaserTagger 的表现明显优于基线模型(SARI得分越高越好)。


LaserTagger 的主要优点

与传统的 seq2seq 模型相比,LaserTagger 具有以下优点:


  1. 控制:通过控制输出短语词汇表(我们也可以手动编辑或整理),LaserTagger 比 seq2seq 基线模型更不易产生幻觉。

  2. 推理速度:在预测方面,LaserTagger 比 seq2seq 基线模型快,速度之差最高可达 100 倍,使之更适合用于实时应用程序。

  3. 数据效率:即使只使用几百个或几千个训练示例进行训练,LaserTagger 也可以产生合理的输出。在我们的实验中,一个有竞争力的 seq2seq 基线模型需要上万个示例才能获得相应的表现。


为什么如此重要

进行大规模应用时,LaserTagger 的优点变得更明显,比如通过缩短应答的长度并减少重复性可以在某些服务中改善语音应答的格式。较高的推理速度使得该模型可以直接插入现有的技术栈,而不会在用户端增加任何可察觉的延迟,与此同时,改善的数据效率可以收集多种语言的训练数据,从而让具有不同语言背景的用户都可以从中受益。


在当前的工作中,我们将努力为其他生成自然语言的谷歌技术进行类似的改进。


此外,我们正在探索当文本变得越来越长、越来越复杂并作为对话的一部分的时候,如何能通过文本的编辑(而不是从头开始生成文本)来帮助我们更好地理解用户的需求。LaserTagger 的代码已经通过我们的GitHub存储库对社区开源了。


致谢

Eric Malmi、Sebastian Krause、Sascha Rothe、Daniil Mirylenka 和 Aliaksei Severyn 一起进行了这项研究。


我们衷心感谢 Enrique Alfonseca、Idan Szpektor 和 Orgad Keller 与我们进行了卓有成效的讨论。


原文链接:


Encode, Tag and Realize: A Controllable and Efficient Approach for Text Generation


2020 年 2 月 29 日 09:001162

评论

发布
暂无评论
发现更多内容

Spock单元测试框架实战指南四 - 异常测试

Java老k

Java 单元测试 spock

警察营救安徽望江县17岁女生跳河自尽过程中,现场看热闹的旁观者们在做什么?

wbliu85

话题讨论 | 作为地地道道的程序员半年内都没摸过代码是什么样的体验?

xcbeyond

话题讨论

5种分布式事务方案与阿里的 Seata 中间件

Bruce Duan

分布式事务 seata

数字经济跨越五个融合发展阶段,区块链正成为基础支撑结构

CECBC区块链专委会

数字经济

S型曲线不止关乎身材?|技术人应知的创新思维模型(2)

Alan

创新 思维模型

第六周-作业1

Mr_No爱学习

Redis 子进程开销监控和优化方式

码农架构

Redis开发与运维

《前端算法系列》数组去重

徐小夕

Java 面试 算法 前端

Bitmap为什么那么快?

Man

redis 中间件

拆解增长黑客之实战(二):留存与变现

懒杨杨

读书 增长 产品运营

第六周-学习总结

Mr_No爱学习

生产环境压测建设历程之三 淘宝网2009年的痛

数列科技杨德华

「生产事故」MongoDB复合索引引发的灾难

Kerwin

数据库 mongodb

Windows下MySQL无法启动万能解决方案

MySQL从删库到跑路

MySQL

Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线

newbe36524

.net core ASP.NET Core dotnet

甲方日常 64

句子

工作 随笔杂谈 日常

第十一周作业

solike

算法训练营课程纲要

陈皓07

面试被问线程安全怎么保障,我的回答让面试官眼前一亮

996小迁

Java 架构 面试 多线程

Redis 持久化方式-RDB

码农架构

redis redis持久化

排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时

蚂蚁集团移动开发平台 mPaaS

小程序 问题排查 mPaaS

2. Spring早期类型转换,基于PropertyEditor实现

YourBatman

Spring Framework 类型转换 PropertyEditor

基于有限状态机与消息队列的三方支付系统补单实践

Java架构师迁哥

谷燕西:不需要银行的银行业务

CECBC区块链专委会

移动互联网

《Python深度学习》第二版重磅来袭——(Keras之父亲自编写)

计算机与AI

报销发票抵扣工资的CTO,该不该? | 法庭上的CTO(5)

赵新龙

CTO 法庭上的CTO

读写分离这个坑,你应该踩过吧?

楼下小黑哥

MySQL 主从同步 读写分离

国家计算机网络与信息安全管理中心官员:数字货币的风险仍需关注

CECBC区块链专委会

信息安全

百篇已过,又是一个新篇章,谈谈感受吧

良知犹存

代码人生

架构词典:语言

lidaobing

架构 语言

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

编码、标记和实现:一种高效可控的文本生成方法-InfoQ