查看原文
其他

Transformer落地:使用话语重写器改进多轮人机对话

袁一鸣 PaperWeekly 2022-03-17


作者丨袁一鸣

学校丨武汉大学硕士生

研究方向丨对话系统、目标检测


概述


本文发表于自然语言处理顶会 ACL 2019,数据集以及 LSTM 版本的模型可在以下链接找到(由于 Transformer 版本模型已被线上应用,涉及到法律问题未进行开源,但作者欢迎发邮件进行探讨)。 


https://github.com/chin-gyou/dialogue-utterance-rewriter




最近的研究在单轮对话上取得了令人瞩目的进展。然而在多轮对话中,当前的模型还远远不能满足需求。一个主要的挑战是我们日常对话中经常出现的共指关系以及信息省略,使得机器很难理解真正的意图。
这篇论文提出把话语重写作为预处理,帮助多轮对话建模。具体来说就是每句话都要先重写,以恢复所有共指的和省略的信息,然后基于重写的话语执行下一个处理步骤。为了正确地训练话语重写器,本文收集一个新的带有人工注释的数据集并介绍了一个基于 Transformer 的使用指针网络的话语重写架构。本文所提出的架构在话语重写的任务上实现了极其出色的效果。训练好的话语重写器可以很容易地集成到在线聊天机器人。

研究背景及主要工作


多轮对话模型的一个主要的难点是我们的日常对话常见的共指关系和信息遗漏。从本文初步研究的 2000 个中文的多轮对话中发现,超过 70% 的对话存在这种现象。表 1 展示了两个典型的例子,在语境 1 中“他”和梅西存在共指关系,语境 2 中的“为什么”省略了“最喜欢泰坦尼克号”这个信息。缺少共指关系和省略的信息,机器人就不知道该如何继续对话。


为了解决这个问题,本文提出通过对当前话语重写,将多轮对话问题简化为单轮对话问题。让话语重写器通过指代消解和信息补全恢复所有共指的指称和省略的信息。在表 1 的两个例子中,每个话语 3 都会被重写成话语 3’。之后,系统将只考虑话语 3’ 生成一个回复,而不考虑前一轮的话语 1 和 2。这种简化缩短了对话上下文的长度,同时仍然保留了用于提供适当的回复所需要的必要的信息。 
为了获取话语重写器的监督训练数据,本文构造了一个中文对话数据集,下表是数据集的统计信息,该数据集中一半是不需要重写的负样本,另一半是需要的正样本,每个话语都配有相应的人工重写注释。


本文将话语重写问题建模为使用指针网络的提取生成问题。重写的话语是基于 attention 机制,通过复制来自对话历史或当前话语来生成。这个灵感来自最近提出的 Transformer [1] 可以更好地捕捉句子内的词之间的依赖关系,本文修改了 Transformer 体系结构使其包含指针网络机制。在指代消解和信息补全方面,得到的模型优于递归神经网络 (RNN) 和原始的 Transformer 模型, F1 分数超过了 0.85。此外,本文整合了训练好的话语重写器到两个在线聊天机器人平台,发现它可以实现更准确的意图检测并提高了用户的参与度。


模型


问题描述  


将每个训练样本表示为代表包含 n – 1 个话语的对话历史。Un 是话语的第 n 个话语,是唯一需要被重写的。R 是恢复了 Un 中所有指称和被省略的信息的重写后的话语。如果没有检测到共指关系或信息省略(负样本),R 可以等于 Un。


本文的目标是学习一个映射函数可以基于 H  和 Un 自动重写。过程是先将 (H, Un) 编码,然后使用指针网络解码得到 R。模型结构如下图所示。



编码器 


将 (H, Un) 中的所有 token 展开成。在每两个轮次之间插入一个轮次结束分隔符。然后用 Transformer 对展开的令牌序列进行编码。将 (H, Un) 中的所有 token 串联起来作为输入,希望 Transformer 能够通过 self-attention 机制在它们内部学习基本的共指信息。对于每个 token ,其 input embedding 为其 word embedding, position embedding  和 turn embedding [2] 之和:



额外添加的 turn embedding ,用来指明每个 token 属于哪一轮对话。来自同一轮对话的 token 将共享相同 turn embedding。然后将 input embeddings 转发到堆叠的 L 层编码器,得到最终的编码表示。每个编码器包含一个 self-attention 层接着一个前馈神经网络。



FNN 是前馈神经网络,MultiHead (Q, K, V) 是以查询矩阵 Q、键矩阵 K、值矩阵 V 为输入的 multi-head attention 函数。每个 self-attention 和 feedforward 组件都有一个残差连接和层归一化步骤,具体参考文献 [1]。最终的编码是第 L 个编码器的输出


解码器 


解码器也包含 L 层,每层由三个子层组成。第一子层是一个 multi-head attention:



。第二个子层是编码器-解码器 attention,它将集成到解码器。在本文的任务中,由于 H 和 Un 的用途不同,本文对于来自于对话历史 H 和来自当前话语 Un 的 tokens 分别使用单独的键-值矩阵。从上一节得到的编码序列被分为(H 中的令牌编码)和(Un 中的令牌编码)然后分别处理。编码器-解码器向量计算如下:



第三个子层为位置全连接前馈神经网络:


其中 ◦ 表示向量串联。


输出分布 
在解码过程中,本文希望模型在每一步可以做到学习是从 H 还是从 Un 中复制单词。因此, 本文利用一个控制权重 λ 来决定。解码概率通过合并最后一个解码层的 attention 分布来计算:



a 和 a'分别为 H 和 Un 的 tokens 上的 attention 分布。是可学习的参数,σ 是 sigmoid 函数,输出值在 0 和 1 之间。控制权重 λ 指示解码器从中对话历史 H 中提取信息或直接从 Un 复制。如果 Un 既不包含共指关系也不包含信息省略,λ 将总是 1 来复制原来的 Un 作为输出。否则检测到共指关系或信息省略时,λ 为 0。整个模型通过最大化来实现端到端的训练。


实验


对比实验  
1. (L/T)-Gen:基于生成的模型,单词是从固定的词汇表中产生的。
2. (L/T)-Pt-Net:基于指针的模型。话语只能是从输入中复制。
3. (L/T) -Ptr-Gen:指针与生成混合模型。单词可以从输入复制,也可以从一个固定的词汇中生成。
4. (L/T)-Ptr-λ:本文提出的通过系数 λ 划分 attention 的模型。 
(L/T) 表示编解码器结构为 LSTM 或 Transformer。对于前三种类型在模型中,对话的历史和需要重写的话语之间不做区分。 
实验结果如下表所示:


结论如下: 
1. 与基于 LSTM 的模型相比,基于 Transformer 的模型有显著的改进。这意味着 self-attention 机制有助于识别共指和省略的信息。
2. 生成模式不能很好地工作,因为所有的词都可以从 H 或 Un 中检索出来。基于指针的模型优于更复杂的指针与生成混合模型。

3. 单独处理 H 和 Un 然后把他们的 attention 通过学习到的 λ 合并比直接将整个对话 tokens 作为一个的输入要好,虽然改进与前两项相比就不那么重要了。 
总体上,本文的模型实现了极其出色的效果。对于正样本,55.84% 的生成完全符合人工注释参考。对于负样本,在 98.14% 的案例中,本文的模型正确地复制了原始的话语。这表明本文的模型是已经能够识别不需要重写的话语。今后的工作应致力于提高对正样本的重写能力。


集成测试


这一步是研究如何将提出的话语重写器集成到现成的在线聊天机器人中来提高生成响应的质量。方法是用最好的模型 T-Ptr-λ 根据对话上下文重写每个句子,然后将重写后的话语转发给系统生成回复。
本文将其应用在了任务型和闲聊型对话机器人。并与原来没有话语重写的系统进行了比较。结合本文提出的重写器,任务导向对话系统的意图分类器能够达到 89.91% 的精度,表现优于原来的系统 9% 以上。在聊天机器人中,话语重写器将用户的平均每次会话对话轮数从 6.3 提高到 7.7,表明用户对整合的后的对话系统参与度更高。效果如下表所示:


总结


自从 transformer 被提出,研究者们纷纷将目光转向于此。本文的思路很清晰,就是将 transformer 与原来常应用于循环神经网络的 pointer 机制相结合,利用 transformer 中的 self-attention 机制以及 pointer 机制的复制能力来对话语进行重写,补全了共指关系和省略的信息,帮助对话系统产生更适合的回复。
同时,本文是将 transformer 落地的一个很好的范例。此方法之所以可以落地主要有这么几个原因。一是与其他方法相比,像记忆网络或 belief tracking ,训练好的话语重写器是与模型无关的,因此可以很容易地集成到其他黑盒对话系统。二是因为对话的历史信息都反映在一个被重写的话语中,更节省内存。

参考文献


[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.




点击以下标题查看更多往期内容: 





#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。


▽ 点击 | 阅读原文 | 下载论文 & 源码

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存