Text-to-SQL学习整理(二十六):DELTA模型-在多轮Text-to-SQL中解耦对话建模和语义解析

976 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,点击查看活动详情

导语

多轮的Text-to-SQL一直面临着两个重要挑战:

  1. 进行Text模态到SQL模态的语义解析变换;
  2. 利用对话的上下文历史信息。

相比于单轮的Text-to-SQL,多轮的Text-to-SQL中对话历史信息的利用尤为重要。本文提供了一种比较直观的解决挑战2的思路:即将用户的多轮问句“重写”为一句问句,这样就可以将多轮的Text-to-SQL任务转换为单轮的Text-to-SQL任务。

当然,这里的“重写”是需要单独训练一个Rewrite的模型来实现的,破坏了原来的端到端的方式。下面就为大家简要介绍一下这篇工作。

1 简介

多轮的Text-to-SQL数据中存在着大量的指代省略 等语言现象,如下图所示:

image.png

用户在进行对话式询问时,经常会省略掉一些前面提到的内容以及使用指代。最近关于解决多轮Text-to-SQL任务的一些工作都是一种端到端的方式,这类方法极度依赖带注释的多轮文本到sql数据。然而,大规模的多轮Text-to-SQL数据标注是耗时且昂贵的。

基于此,本文提出了一种将多轮Text-to-SQL任务解耦的DELTA(DEcoupled muLti-Turn pArsing (DELTA) framework)方法,将多轮Text-to-SQL任务分解为两个连续的Pipeline任务:

  1. utterance rewrite
  2. single-turn Text-to-SQL

同时,由于Text-to-SQL领域内标注重写数据的局限性,本文进一步提出一种对偶学习方法,充分利用无标注的多回合数据来学习可靠的重写模型。实验结果显示,DELTA在多轮Text-to-SQL数据集SParC和CoSQL上全部取得了最先进的表现。

2 解耦的解析框架

DELTA模型共分为两个阶段:

2.1 第一阶段:使用BART作为Rewrite Model

在第一阶段,作者选择BART模型作为Rewrite Model,这里也解释了一下为啥选BART而不是其他PLM。

In our utterance rewrite task, both the co-reference and information ellipses can be regarded as the corrupted noise of an utterance.

也就是说,在这个rewrite任务中,作者认为指代和省略都可以认为是一种对原始完整语义信息的破坏,而BART在预训练时,刚好就是一个去噪重建的目标函数,比较契合。

2.2 第二阶段:使用RAT-SQL作为Parsing Model

在完成第一阶段的“多轮语句”到“单轮语句”的转换后,作者选择RATSQL作为单轮Text-to-SQL认为的Parsing Model。关于这个模型的解读,这里不再赘述,可以参考我之前的博客:Text-to-SQL学习整理(十三)RAT-SQL模型

3 将对偶学习用于语句重写(Dual Learning for Utterance Rewrite)

由于多轮Text-to-SQL数据集中并不存在所谓的“多轮对话”到“单轮问句”的这种语句重写的标注数据,所以作者采用了一种对偶学习的方式,来充分利用原来多轮Text-to-SQL数据集中的这些对话语句,并将他们视为Utterance Rewrite这个任务的无监督数据。

这里简要介绍一下对偶学习(Dual Learning),原作者给出的一个定义如下:

A new learning framework that leverages the symmetric (primal-dual) structure of AI tasks to obtain effective feedback or regularization signals to enhance the learning/inference process.

这里有一张图可以便于大家理解:

image.png

即主要的任务(Primal Task)和对偶的任务(Dual Task)是“相反”的。

3.1 主任务和对偶任务

作者定义了Dual learning的两个任务:

  • 主任务:使用BART作为一个Rewrite Model,又称为Rewriter,其输入为当前轮次Question和历史轮次的对话语句{(x(t);h)}\{(x^{(t)};h)\},输出则是将其转换为如图1所示的那个语义补全后的语句。
  • 对偶任务:使用BART作为一个Simpl Model,又称为Simplifier,其输入为当前轮次Question和历史轮次的对话语句{(x(t);h)}\{(x^{(t)};h)\},输出则是将其尽可能的使用指代和缩写,对原语句进行简化。

这里使用的Dual learning的框架如下图所示:

image.png

3.2 对偶学习算法

3.2.1 定义

假设我们的无监督数据Du={(x(t);h)}D_{u} = \{(x^{(t)};h)\},两个对偶的模型分别为:Rewriter和Simplifier。并且使用了两个GPT-2模型作为语言模型来检测输出的语句的语言概率(即一句话是不是人话):LMc()LM_c(\cdot)LMs()LM_s(\cdot)分别用来检验Rewriter和Simplifier输出语句的质量。

3.2.2 Loop Starts from Rewriter

如图2所示,Rewriter生成k种可能的重写格式,这里设置了两种级别的奖励函数来评估生成结果的质量。

Token-level Reward

这里有两条简要的规则:

  1. 原始语句中的database item如果被提及,则+0.1
  2. 如果出现指代词如it, their等,则-0.1(因为我们要训练Rewrite Model,需要完整的句子)

Sentence-leval Reward

从语句角度,整体的奖励分为两部分:

image.png

其中,第一部分是LM对输出的打分,第二部分则是生成的Rewrite语句输入到RATSQL后的执行结果是否正确的得分。

3.2.3 Loop Starts from Simplifier

对Simplifier来说,其目标奖励的设计则完全与Rewriter相反,因为它做的功能是尽可能的使用指代、省略来简化语句,目标与3.2.2中刚好相反,这里不赘述。

4 实验

4.1 实验建立

作者使用了TASK and CANARD来评估第一阶段,使用SParC和CoSQL来评估第二阶段。

4.2 实验结果

第一阶段实验结果如下:

image.png

可以看到,BART是第一阶段最好的选择。 第二阶段实验结果(即多轮Text-to-SQL任务)如下: image.png

表三展示了一些生成成功和失败的样例分析,如下图所示:

image.png

同时,作者也进行了Ablation study,分析各个组件对最终结果的影响:

image.png

5 相关工作

6 总结

该文提出了一种解耦解析框架(DELTA+Dual)来解决多轮Text-to-SQL任务。DELTA可以在没有任何多轮Text-to-SQL数据的情况下获得可观的性能。将预训练的BART调整为重写模型,并在话语重写基准上实现新的最先进性能。同时,本文进一步提出一种有效的对偶学习方法,以充分利用无标签对话数据。在多轮Text-to-SQL挑战中,DELTA超过了所有已发布的具有完全标记数据的端到端模型。所提出的DELTA也很容易扩展到其他会话语义分析任务,如对话状态跟踪等。