Facebook提出基于模型的交互式语义分析框架,自然语言生成SQL语句准确率提升10%

交互式语义分析是最近的研究热点,通过与用户的交互提升语义理解的准确性。Facebook AI研究院研究人员最近提出了一种新的、统一的交互式语义分析方法,通过设计一个基于模型的智能代理(agent),与现有方法相比,可以在减少用户交互次数的同时提升解析精度。 本文是AI前线第98篇论文导读,我们将对这项研究工作进行详细解读。

概览

允许用户无需编程即可查询数据和调用服务的自然语言界面已被认为是语义分析的关键应用。然而,现有的语义解析技术在实际应用中往往存在不足,面临着若干挑战:(1)用户话语可能存在歧义或含糊,难以一次性得到正确的结果;(2)现有语义分析工具的准确率仍然不够高,无法真正使用;(3)用户很难验证语义分析结果,特别是缺乏可解释的主流神经网络模型。

针对这些挑战,近期交互式语义分析作为一种实用的解决方案被提出,它将用户包含在循环交互中,通过人机协作来解决话语歧义、提升系统的准确性。例如,Gur等人开发了DialSQL系统来检测生成SQL查询中的错误,并通过对话请求用户选择备选选项。同样,Chaurasia和Mooney等人提出了一个语义分析器,在生成If-Then程序时,询问用户来澄清问题。Su等人的工作表明,对于自然语言界面到Web API,大部分用户倾向于使用交互式系统,而不是非交互式系统。近年来的研究也成功地证明了交互式语义分析在实际应用中的价值,但往往受限于某种形式的语言或数据集,因此,这些设计是特别(ad-hoc)定制的,不是通用的。例如,DialSQL仅适用于WikiSQL数据集上的SQL查询,将其扩展到其他形式语言甚至是更复杂的SQL查询都非常困难。

为了建立交互式语义分析系统的通用原则,本文提出了基于模型的交互式语义分析(MISP),其目标是设计一个基于模型的智能代理,该智能代理可以与用户交互以完成语义分析任务。代理以一个话语作为输入,智能代理逐步构建语义分析(例如,一个SQL查询),可能在某些步骤中请求用户反馈以纠正分析错误。如图1所示,MISP代理将维护其状态为当前语义解析,并通过错误检测器决定是否需要人工干预以及在哪里需要人工干预。此操作由问题生成器(actuator)执行,该生成器生成并向用户呈现一个可理解的问题。代理的核心组件是一个世界模型(world model,Ha和Schmidhuber等人在2018提出),它将从环境中整合用户反馈并传输到一个新的代理状态(例如,一个更新的语义解析)。重复此过程,直到达到最终状态。这种设计赋予了MISP代理交互语义分析三个重要特性:(1)对推理过程进行内省,知道何时需要人的监督;(2)能够以人性化的方式征求用户反馈,(3)能够整合用户反馈(通过由世界模型控制的状态转换)。

与现有的定制化(ad-hot)研究相比,MISP框架为设计交互式语义解析器提供了一些新的思路。例如,整个问题在概念上简化为构建三个关键组件(即世界模型、错误检测器和执行器),并且可以分别处理和改进。尽管每个组件可能需要针对特定的任务进行定制,但是总体框架仍然没有改变。此外,基于模型的智能代理的设计可以促进其他机器学习技术的应用,如强化学习。

为了更好地展示MISP框架的优点,我们提出了一个简单但非常有效的文本到SQL任务的实例。我们展示了基于三个基本语义解析器(SQLNet、SQLova和SyntaxSQLNet)和两个数据集(WikiSQL和Spider)框架的有效性。我们的实验结果证明,在少量有针对性的、参与测试的用户反馈下,交互式语义分析器可以提升10%到15%的准确率。与现有的交互式语义分析系统DialSQL相比,我们的方法虽然更简单,但是它是更通用的系统设计,只需要问一半问题就能获得更好的解析精度。

基于模型的交互式语义分析

接下来将详细地讨论MISP框架(图1),首先重点介绍每个主要构建块的功能以及它们之间的关系,具体实施的描述将留到第4节。

环境 环境由具有特定意图的用户组成,该意图对应于用户希望代理生成的语义分析。基于这个意图,用户给出一个初始的自然语言话语u(0)来启动语义解析会话,在多轮交互中,代理获得反馈u(t)来响应任何问题澄清。

Agent 状态 代理状态s是基于所有可用信息代理环境的内部解释。代理状态最直接的设计是作为当前预测的语义分析。它还可以赋予句法分析过程的元信息,如预测概率或不确定性,以便做错误检测。

世界模型 它是MISP代理的一个关键组件(Ha和Schmidhuber,2018提出),它通过交互压缩历史感知,并根据代理对世界的了解预测未来。更具体地说,它建模了代理状态的转换,p(s(t+1) |s(t),u(t)),其中u(t)是t步的用户反馈,s(t+1)是一个新状态。这种转变可以是确定性的,也可以是随机的。

错误检测器 MISP代理会反省其状态,并决定是否需要以及在何处需要人类干预,错误检测器起的就是这个作用。给定当前状态s(t)(可选的全部交互历史)和一组终端状态,它决定操作a(t):如果代理处于初始状态,它将终止会话,执行语义分析,并将执行结果返回给用户;否则,它将确定当前语义分析中可能存在的跨度错误并将其连同必要的上下文信息一起传递给执行器,以理解错误范围。

执行器 执行器具有面向用户的界面,并以用户友好的方式实现代理的操作。实际上,它可以是自然语言生成器(NLG)或直观的图形用户界面,也可以两者结合。

MISP-SQL: 文本转换为SQL的实例

在MISP框架下,我们设计了一个交互式语义分析系统(图2),命名为MISP-SQL,用于文本到SQL的转换。MISP-SQL假设一个基础的文本到SQL的解析器,利用它来设计世界模型和错误检测器。世界模型在本质上是一个包装器,它接受用户输入并更改基本语义解析器的行为(例如,通过更改概率分布或删除某些预测路径)。错误检测器根据预测的不确定性做出决策:如果解析器对预测不确定,则很有可能是一个错误。执行器是为通用SQL语言开发的基于模板的自然语言查询生成器。图2显示了MISP-SQL代理的一个示例。

4.1 代理状态

为了便于讨论,我们假设基本解析器通过预测SQL组件的序列来生成SQL查询。代理状态s(t)被定义为部分SQL查询,即s(t)={o1,o2,…,ot},其中ot是时间步骤t时被预测的SQL组件,如图2中的SELECT place。组成SQL组件的内容通常在不同的语法分析器中有不同的定义,但通常由SQL语法决定。为了支持自省和错误检测,每个预测都与它的不确定性相关联,下面将讨论这个问题。

4.2 错误检测器

MISP-SQL中的错误检测器是内省和贪婪的。首先它会检查预测的不确定性,而不是预测本身。另一方面,它的决定完全基于最后的预测o(t)而不是整个状态s(t)。

我们实验了两种不确定性度量,分别基于基本语义分析器估计的o(t)的概率以及贝叶斯dropout下的标准差。

基于概率的不确定性 直观地说,如果基本语义解析器在一个步骤中给予top预测的概率较低,则很可能对预测不确定。具体来说,如果预测o(t)的概率低于阈值p*,一个预测o(t)需要用户澄清。

这一策略在检测错误分类和偏离分布(out-of-distribution)的例子方面表现得很强。

基于Dropout的不确定性 Dropout已被用作贝叶斯估计模型不确定性。不同于其在训练时防止模型过度拟合的标准应用,我们在测试时使用它来测量模型不确定性。直觉是,在dropout的情况下,如果一个预测的概率,在不同的扰动下有显著的变化(用标准差来衡量),那么这个模型很可能是不确定的。具体而言,预测o(t)的不确定度计算如下:

其中Wi是第i个dropout扰动下基本语义分析器的参数,不确定度得分是n个随机过程中预测概率的标准差。我们认为,如果o(t)的不确定度得分大于阈值s*,则需要用户澄清。

终端状态 唯一的终端状态是当基本语义解析器指示解析结束时。

4.3 执行器: 一个NL生成器

MISP-SQL代理通过向用户提出两个问题来执行其操作(例如,验证列“place”),因此执行器是一个自然语言生成器(NLG)。尽管已经有关于用NL状态描述SQL查询的工作(Xu等人,2018),但是很少有工作系统地研究生成关于某个SQL组件的问题。

受(王等人,2015)的启发,我们定义了一个基于规则的NLG,它具有一个种子词典和一个用于解题的语法。表1显示了涵盖WikiSQL上的SQL查询的规则。种子词库以“n→t[p]”的形式定义基本SQL元素的NL描述,其中N是NL短语,T是预定义的句法类别,p是聚合器(例如,AVG)或操作符(例如,>)。例如,“is greater than→Op[>]”指定一个短语“is greater than”来描述运算符“>”。在MISP-SQL中,我们考虑了四种语法类别:聚合器的AGG、运算符的Op、Col表示columns和Q表示生成的问题。然而,它可以用更多的词条和语法规则来扩展,以适应更复杂的SQL。

语法定义了派生问题的规则。每一列都由自己描述(即,列名)。与每个Q类型项“Q[v||Clause]相关联的规则构造了一个关于v 在子句(Clause)的NL问题。该子句是制定有意义问题的必要背景。图3显示了一个派生示例。请注意,我们的系统中的词汇和语法都是不可知的,因为它对任何数据库都不是特定的。因此,它可以在将来的新域中重用。数据库特定的规则,例如用更规范的短语(而不是列名)命名每一列,也是可能的。

4.4 世界模型

代理整合用户反馈并用一个世界模型更新其状态。与训练附加神经网络的DialSQL不同,MISP-SQL代理直接使用基本的语法分析器来转换状态,从而节省了额外的训练工作。

如第4.3节所介绍的,代理向用户提出一个关于预测的SQL组件o(t)的二分类问题。因此,接收到的用户反馈要么确认预测,要么否定预测。在前一种情况下,通过继续下一个解码步骤(即s(t+1)={o1,…,ot,ot+1})来更新状态,其中o(t+1)是预测的下一个组件,s(t+1)显示更新的部分解析。在后一种情况下,合并用户反馈以限制基本解析器的搜索空间(即,禁止解析器进行相同的错误预测),在此基础上,解析器刷新其预测并形成新的状态s(t+1)={o1,…,ot-1,ot+1},其中o(t+1)是替代o(t)的预测。为了避免被困在一个大的搜索空间中,对于每一个SQL组件,我们需要最大数量的k个备选方案(除了原始预测)来征求用户反馈。

实验

我们将我们的方法应用于将自然语言问题映射到SQL查询的任务。在这一部分中,我们首先介绍了基本的实验设置,包括数据集和基本语义分析器,然后对系统在模拟用户和实际用户上的实验结果进行详细的说明。

5.1 实验设置

我们在WikiSQL上评估了我们提出的MISP-SQL代理,它包含80654个手工注释的<NL quetion,SQL query>对,分布在wikipedia的24241个表中,我们的实验遵循类似(Zhong 等,2017)的切分。

我们使用两个基本的语法分析器SQLNet和SQLova来测试MISP-SQL。与DialSQL的评估方式不同,我们没有选择Seq2SQL作为基本解析器,而是选择了SQLova,因为它实现了与SQLNet相似的性能,而SQLova是目前WikiSQL上最好的开源模型,这样我们可以做更全面的评估。

对于两个基本语义分析器,我们分别基于预测概率和贝叶斯droupout,使用两种错误检测器测试我们的代理(第4.2节)。我们将阈值p调整为0.5~0.95,s调整为0.01~0.2。特别是对于由贝叶斯dropout测量的基于不确定性的检测,设置次数N为10,dropout rate为0.1。在训练每个语义分析器时,将在相同的位置应用dropout层。当代理与用户交互时,每个组件的最大可选选项的数目(在原始预测的基础上)K设置为3。如果他们否定了所有K+1预测的候选项,代理将保持原来的预测。

5.2 模拟评估

在模拟评估中,每个代理都与一个模拟用户交互,该用户根据真实的SQL查询给出一个是或否的答案。如果代理在连续三个交互中未能更正其预测,则用户将提前离开交互,代理必须在没有用户进一步帮助的情况下完成剩余的生成。

总体比较 我们首先将MISP-SQL与表2中没有交互的两个基本语义解析器进行比较。对于SQLNet,我们还将系统与DialSQL的报告性能进行比较。但是,由于DialSQL不是开源的,而且不容易复现,因此我们无法其适应其到SQLova来做更多的比较。

接下来,我们将评估SQL查询匹配精度(“Acc(qm)”)和每个代理的执行精度(“Acc(ex)”)。“Avg#q”表示每个查询的平均问题数。对于任何基本解析器,MISP-SQL通过与用户交互来提高它们的性能。特别是对于SQLNet,MISP-SQL的问题数只有DialSQL系统的一半(1.104 vs 2.4),而且它的设计简单得多,不需要训练额外的模型(除了训练基本解析器之外,DialSQL也需要训练基本解析器)。我们的代理甚至可以将SQLova的强大性能从85%提高到94%,每个查询只有0.773个问题。

当代理不采用任何错误检测器时,我们还提供代理的“上限”精度,并询问每个组件最多10个(“MISP-SQL(Unlimit10)”)或3个(“MISP-SQL(Unlimit3)”)可选的问题。有趣的是,即使对于较弱的SQLNet解析器,大多数真正的预测都已经包含在前10个选项中(给出0.932个查询匹配精度)。当配备了更强大的SQLova解析器时,代理有可能通过只考虑每个预测的前三个选项,将执行精度提高到100%左右。

错误检测器比较 我们比较图4中基于概率和基于dropout的错误检测,其中每个标记指示代理的准确性以及在某个错误检测阈值下它需要的平均问题数。对于SQLNet和SQLova来说,基于概率的错误检测器可以获得与基于dropout的检测器相同的准确度,但问题的数量要比基于dropout的检测器少。我们还发现,在查询匹配精度方面,这种差异更大,SQLNet大约为0.15 ~0.25,SQLova大约为0.1 ~ 0.15。

为了更好地理解每种错误检测器是如何工作的,我们研究了每种检测器用于正确预测的部分问题(称为“Qr”)。一个理想的系统应该少问正确预测的问题,而找出更真实的错误预测来修正错误。我们在表3中给出了各种系统的问题分布。从该表得出的一个重要结论是,基于概率的错误检测在识别错误预测方面更有效。考虑在这样的系统,在SQLNet上使用概率阈值0.5进行错误检测(即“p*=0.5”),以及使用阈值为0.2(即“s*=0.2”)的基于dropout的错误检测器。当两个系统在交互过程中问的问题数量相同时,前者只花费16.9%的不必要问题用于正确预测(Qr),而后者则是前者的两倍(32.1%)。SQLova也观察到类似的情况。值得注意的是,当概率阈值较低(这会导致问题总数较少)时,正确操作的问题部分显著下降(例如,当阈值在SQLNet上从0.8变为0.5时,从23.0%降至16.9%)。但是,对于基于dropout的错误检测,这一部分仍然保持不变。

5.3 扩展到复杂的SQL生成

MISP-SQL的一个显著特点是它的通用性,因为它充分利用了基本语义解析器,并且不需要额外的模型训练。为了验证这一点,我们进一步在更复杂的文本到SQL数据集“Spider”上实验MISP-SQL。数据集由跨多个领域的数据库上的10181个问题组成,其中SQL查询可以包含复杂关键字,如聚合操作或连接多个表。我们扩展了NLG词典和语法(第4.3节)以适应这种复杂性。

我们采用SyntaxSQLNet作为基本解析器。在我们的实验中,我们遵循与Yu等人相同的数据库拆分并报告验证集上的精确匹配精度(“Acc(em)”)。其他实验设置与在WikiSQL上评估MISP-SQL时保持相同。表4显示了结果。

我们首先观察到,通过与模拟用户交互,MISP-SQL在每查询3个问题的情况下将SyntaxSQLNet的准确性提高了10%。然而,我们也意识到,与WikiSQL上的情况不同,在这种情况下,基于概率的错误检测器比基于贝叶斯不确定性的检测器需要更多的问题。这可以解释为基本SyntaxSQLNet解析器的性能较差(在没有交互的情况下只有20%的精度)。

事实上,基于概率的检测器用于正确预测(Qr)的问题仍然是基于dropout的检测器要求的一半(12.8% vs 24.8%)。然而,它浪费了大约60%的问题在无法解决的错误预测上。这种情况通常发生在基本解析器不够强大的情况下,即无法将真实选项排在接近top的位置,或者存在未解决的错误先例预测(例如,在“WHERE col op val”中,当col是错误的,后面的任何op/val都是错误的)。当将来采用更高级的基本解析器时,这个问题可以得到缓解。

5.4 人类评估

我们进一步进行用户研究,以评估MISP-SQL代理。我们的评估遵循Gur等人2018年的实验设置。对于每个基本的语法分析器,我们从相应的数据集(WikiSQL测试集或Spider验证集)中随机抽取100个示例,并要求三个人类评估员(他们是研究生,根据我们的调查,他们对SQL只有基本的知识)处理每个示例,然后报告平均结果。我们向评估者呈现最初的自然语言问题,并允许他们查看表标题,以便更好地理解问题的意图。在Spider数据集上,我们还显示了数据库表的名称。我们根据模拟结果选择错误检测器:对于SQLNet和SQLova,我们为代理配备基于概率的错误检测器(阈值为0.95);对于SyntaxSQLNet,我们选择基于贝叶斯不确定性的错误检测器(阈值为0.03)。在模拟评估中,由于代码尚未公开,我们无法直接与人工评估中的DialSQL进行比较。

表5显示了结果。在所有设置中,MISP-SQL都提升了基本解析器的性能,展示了涉及人类交互的好处。但是,我们也注意到收益没有模拟实验那么大,特别是在SQLova上。通过对人类评价者的访谈,我们发现主要原因是他们有时很难理解一些模棱两可或包含不熟悉实体的试题的真实意图。我们认为,这反映了一个普遍的挑战,即建立与实际应用程序设置更接近的语义部分的人工评估,因此提出了以下讨论。

5.5 关于后续评估的讨论

迄今为止,大多数(交互式)语义分析器的人类评价研究使用预先存在的测试问题(例如,从像WikiSQL这样的数据集)。然而,这引入了一个不希望出现的差异,也就是说,人类评估者未必能够忠实地理解给定问题的真实意图,特别在当问题是模棱两可、含糊不清或包含不熟悉的实体时。

这种差异在我们使用SQLova进行的人类评估中得到了明确的体现(表5)。当基本解析器很强时,剩下的许多错误解析的问题不仅对基本解析器而且对人类评估者都是挑战。我们手动检查了评估者做出不同于模拟者的选择的情况,发现当初始问题模棱两可或好的SQL注释是错误的,80%的选择都失败了。例如,对于“name the city for kanjiza”这个问题,在不查看表格内容或事先了解具体的背景知识下,人类评估人员不太可能知道“Kanjiza”是一个“城市聚落”。据报道,这一问题也是进一步改进SQLova的主要限制,如果用户有明确和一致的意图,原则上可以通过人的互动来解决。

为了验证这一点,我们使用SQLova进行了一个额外的实验,在开始交互之前,人工评估器可以查看表内容和好的SQL查询,以便更好地理解真实意图(在表5中表示为“w/full info”)。正如预期的那样,当用户知道自己的要求时,MISQP-SQl代理的性能会更好(接近模拟)。它进一步证实了模拟和人的评价之间不可忽视的部分准确性差距是由于人的评价者没有充分理解问题的意图和给出错误的反馈。为了缓解这种差异,一个常见的做法是向人类评估者展示底层数据库的模式。我们这样做了(第5.4节),但仍然不够,特别是对于实体相关问题(例如,“Kanjiza”)。

另一方面,尽管将人类评估人员暴露在表格内容中有助于解决与实体相关的问题,但很可能在被测系统的公平中引入不希望的偏见(即“过度暴露”),因为人类评估人员随后可能比真实用户提供更多的信息反馈。

为了进一步减少人类评估和实际用例之间的差异,一种可能的解决办法是要求人类评估者从零开始提出问题(而不是使用预先存在的测试问题),这保证了意图理解。虽然这个解决方案可能仍然需要将表内容暴露给评价者(这样他们可以对属性中的每个表都有一定的感觉),但是可以通过只显示表内容的一部分(例如,只有几行)来减轻过度暴露。此外,可以通过更大范围的人的评价来补偿评价者组合问题复杂性的可控性降低。我们计划在今后的工作中探索这一背景。

结论和未来的工作

本文提出了一个新的、统一的交互式语义分析任务框架MISP,并在文本到SQL任务中成功实现了它的实例化。我们概述了进一步改进MISP-SQL和为其他语义分析任务开发MISP系统的几个未来方向:

提升代理组件 MISP的灵活性允许对每个代理组件分别进行改进。以错误检测器为例。我们可以使用概率校准来增强MISP-SQL中基于概率的错误检测器,它在模型置信度与其可靠性对齐方面显示出非常有用。人们还可以使用基于学习的方法,例如强化决策策略,以提升错误识别和可解的预测。

语义分析的终身学习 从用户反馈中学习是终身语义分析器改进的一个有希望的解决方案。然而,从代理的角度来看,这可能导致非平稳的环境(例如,改变状态转换),使得其训练不稳定。在对话系统的上下文中,Padmakumar等人建议通过批量地联合更新对话策略和语义解析器来减轻这种影响。我们把这项探索留到未来的工作中。

扩大规模 MISP代理必须扩展到更大的后端数据源(例如,像Freebase或Wikidata这样的知识库)。为此,我们至少可以从三个方面改进MISP:(1)使用更智能的交互设计(例如,自由形式的文本作为用户反馈)来加速假设空间的全局搜索,(2)加强世界模型以确定基于初始问题和用户反馈的更小的可信假设集,(3)训练代理学习提高解析精度,同时尽量减少所需的人工干预次数。

论文原文链接:

https://arxiv.org/pdf/1910.05389.pdf

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/tvsTT47ktPbNZxeGDRqY

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励