阅读text2sql论文《RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers》

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本人为研一菜鸡,如果博客中有任何错误或疏漏,欢迎路过的大佬们批评指正,也希望能够和同样是这个方向的小伙伴一起交流学习~

本文收录于ACL 2020,至今在Spider的leaderboard前列还能看到RAT-SQL的各类变种,可见这个模型确实有不少可取之处。在读本文之前,我还先阅读了文中提到的《Global Reasoning over Database Structures for Text-to-SQL Parsing》(Bogin et al., 2019b) ,有空也会整理出来,便于对比学习。


摘要(Abstract)

本文提出了一个通用的架构,基于关系感知的自注意力机制(relation-aware self-attention mechanism),能够有效解决T2S任务中两大难题:模式编码(schema encoding)和模式链接(schema linking)。RAT-SQL在Spider数据集效果显著,将EM指标提升到了57.2%(领先后一名8.7%个百分点);在结合Bert后,其以65.6%的表现成为了当时的SOTA模型。

开源代码地址:https://github.com/Microsoft/rat-sql.

一、介绍(Introduction)

首先指出当下最具权威性和挑战性的两个benchmark dataset:WikiSQL和Spider。两者均需要对不可见的数据库模式建模,因为在这两个数据集上,SQL请求可能涉及多个不同的表,并且测试集和训练集并不重叠。
而模式泛化的困难之处在于:
(1)需要对数据库模式选择合适的建模方式,因为最终生成的SQL查询可能会包含给定的表或列;
(2)对模式的表征还应该包括一些数据库元数据信息,例如主键、外键、属性类型等;
(3)模型应当能识别问题和模式的对齐关系。
其中前两者属于模式编码(schema encoding)的内容,最后一个属于模式链接(schema linking)的内容。
而模式链接需要同时结合已知的模式关系(元数据信息)和问题的上下文信息,才能避免产生歧义性(ambiguity),目前的工作主要集中在模式编码上,关于模式链接的还不是很多。
碎碎念乱入:在此后的研究中,schema linking已经得到了应有的重视。因此关于schema linking的工作也需要重点关注~
之前的基于GNN的工作往往只是简单地将预先定义的关系(主外键等)作为边,一方面缺乏对模式和问题关系的建模,另一方面限制了信息的有效传播。而RAT-SQL则提出了一种关系感知的自注意力机制,将作用在数据库实体和问题上的global reasoning和作用在预定义的数据库关系上的structured reasoning有机结合起来,从而大幅提升模型性能。

二、相关工作(Related work)

啊这部分先暂时鸽一下,先看下面看不懂的那堆。。

三、模型架构(Model Architecture)

1.关系感知的自注意力机制(Relation-Aware Self-Attention

这种机制的作用是:在对预先定义的关系进行编码的同时,诱导模型自主捕捉序列元素之间的“soft relation”。首先,论文简单展示了一下Transformer中的传统自注意力机制公式(Vaswani et al. (2017),),大概长下面这个样子:
在这里插入图片描述
自注意力机制可以自主学习到任意两个输入元素 X i X_i Xi X j X_j Xj 之间的关系,并且用注意力分数 a i j ( h ) a_{ij}^{(h)} aij(h) 体现关系的强弱。但是在许多任务中(包括T2S任务)我们往往会倾向于去关注那些预定义的关系特征,导致最终建立的模型具有偏向性。而将注意力计算限制在已知关系的“hard edges”上的方式,会影响模型识别新关系的能力。而RAT-SQL通过将预定义关系的表征添加到注意力机制当中,提供了一种和encoder通信的方式。
在传统自注意力机制的基础上,可以通过进一步融入相对位置信息(Shaw et al. (2018)),加入已知的关系定义。用相对位置信息替代绝对位置,可以避免破坏两个间隔较远向量的相似度。
在这里插入图片描述
考虑R个关系特征,二元的关系 R S ⊆ X ∗ X ( 1 ≤ s ≤ R ) R^{S}⊆ X * X (1≤ s ≤ R) RSXX(1sR)。RAT将每条边的现有特征表示为 r i j K = r i j V = C o n c a t ( ρ i j ( 1 ) , . . . , ρ i j ( R ) ) r_{ij}^K=r_{ij}^V=Concat (ρ_{ij}^{(1)}, . . . , ρ_{ij}^{(R)}) rijK=rijV=Concat(ρij(1),...,ρij(R)),其中每个 ρ i j ( s ) ρ_{ij}^{(s)} ρij(s)在对应边的关系成立时,为经过训练后得到的关系 R ( s ) R^{(s)} R(s)的嵌入表征;否则为一个相应尺寸的零向量。

2.RAT-SQL

  • 问题定义:
    S = < C , T > S=<C,T> S=<C,T>:即数据库模式包括表名和列名两部分,每个表内含多个列,每个表名和列名均包含多个单词(具体的懒得搬运了,和其他论文一样hhh)
    P P P: 目标程序被视为一棵抽象语法树
    M e t a d a t a Metadata Metadata:元数据信息,包括主键(primary keys)、外键(foreign keys)和属性数据类型( τ ∈ { n u m b e r , t e x t } τ ∈ \{number, text\} τ{number,text}
    G = < V , E > G = <V, E> G=<V,E>:用一个有向图来表示数据库模式,其中 V = C ∪ T V=C∪T V=CT,根据它们的名字里包含的单词来编码(其中列还要在前面加上数据类型); ϵ \epsilon ϵ 表示预先定义的关系,具体分类见下图:
    在这里插入图片描述
    根据以上定义建立的图样例如下所示:
    在这里插入图片描述
    但是上述这种建图方式,还没有融合问题的上下文信息,因此不能很好地捕捉unseen schema。因此文中又提出了一种融合问题上下文的模式图 G Q = < V Q , E Q > G_Q = <V_Q, E_Q> GQ=<VQ,EQ>,其中 G Q = V ∪ Q = C ∪ T ∪ Q G_Q=V∪Q=C∪T∪Q GQ=VQ=CTQ,即将问题中的单词表征也加入到结点当中; E Q = E ∪ E Q ↔ S E_Q =E∪E_{Q↔S} EQ=EEQS,即加入了新定义的问题和模式的关系。
    I n p u t Input Input:模型输入,即融合了数据库模式、问题以及它们关系的图 G Q G_Q GQ
    O u t p u t Output Output:模型输出,一个概率分布 P r ( P ∣ G Q ) P_r(P | G_Q) Pr(PGQ)

  • 关系感知的输入编码(Relation-Aware Input Encoding)
    本文采用Glove预训练的词嵌入编码和一个Bi-LSTM网络来生成模式中表和列的初始表征 c i i n i t , t i i n i t c_i^{init},t_i^{init} ciinit,tiinit,同时采用另一个Bi-LSTM网络来生成问题的初始表征 q i i n i t q_i^{init} qiinit。注意这里的三类结点虽然没有显式地将它们的关系融入编码,但实际上它们也并非完全独立。此外,也可以直接利用预训练模型Bert生成各结点的初始表征。
    采用一个关系感知的自注意力模型来获取三者的联合表示,首先输入 X X X 就是把所有的结点表征拼接起来,整个encoder包括N个堆叠起来的关系感知自注意力层(各层参数不共享)。
    在这里插入图片描述
    通过自注意力层,可以不断更新问题和模式的上下文关系。但是正如前文提到的,这种方式会使得模型偏向于那些预先定义好的关系。而论文中通过提出一组预定义关系类型集合,可以有效解决模式嵌入和链接挑战的方式,而 E Q ↔ S E_{Q↔S} EQS正是由新产生的问题和模式之间关系构成的。这些关系类型中的大多数能应对模式链接问题,而文中也另外定义了一些附加边用于解决模式嵌入问题。

  • 模式链接(Schema linking)
    模式链接旨在将问题当中提到的表/列/值和数据库模式中的内容对应起来,因此可以分为两类:名称匹配(matching names)和值匹配(matching values):
    (1)名称匹配:指问题当中表名或列名的部分或完全匹配。最简单的匹配原则就是文本的一致性,但是实验中的用vanilla self-attention生成的表征对文本的匹配并不敏感(或许是由于引入了位置信息导致后续的learned embedding产生了差异?),因此论文采用显式的RAT关系来标识基于名称的链接关系。
    具体来说,对于n-grams(n=1~5)产生的子序列,需要判断:(a)其是否能够和一个表名/列名完全匹配(exact match);(b)其是否为一个表名/列名的子串(partial match)。然后对于任意的 x i ∈ Q , x j ∈ S x_i ∈ Q, x_j ∈ S xiQ,xjS,可以将关系 r i j ∈ E Q ↔ S r_{ij}∈E_{Q↔S} rijEQS分为以下几类:
    Q U E S T I O N − C O L U M N − M , Q U E S T I O N − T A B L E − M , C O L U M N − Q U E S T I O N − M , T A B L E − Q U E S T I O N − M QUESTION-COLUMN-M, QUESTION-TABLE-M, COLUMN-QUESTION-M,TABLE-QUESTION-M QUESTIONCOLUMNM,QUESTIONTABLEM,COLUMNQUESTIONM,TABLEQUESTIONM
    其中M可进一步分为完全匹配(EXACT MATCH)、部分匹配(PARTICAL MATCH)和不匹配(NOT MATCH)。
    (2)值匹配:指问题当中出现的值和数据库内容中的单元格值的匹配,这样的值往往会出现在目标SQL查询中。

    例如:在前文给的例子“For the cars with 4 cylinders, which model has the largest horsepower?”中,匹配的列名为“cylinders” “model” 和“horsepower” ,而“cars”可以对应到“cars_data”和“cars_name”这两个表,对应的值value应该为4。但是我们其实可以发现一些问题:例如如何能判断这里的“cars”不会对应到同样包含相同单词的“cars_maker?"当列名为不完全匹配或者采用同义词时,如何能够将问题中出现的value对应到属性列上?故我们一方面需要整合问题的上下文信息,另一方面需要一定的背景知识(如数据库的内容本身)。
    在这里插入图片描述
    当然对数据库内容的使用会涉及到隐私权限和处理速度等问题。而RAT框架允许我们将此处理外包给数据库引擎,以使用潜在的基于value的链接来增强 G Q G_Q GQ,而无需将模型本身暴露在数据面前。特别地,文中定义了一类新的COLUMN-VALUE关系,即若问题当中的词 q i q_i qi 如果出现在属性列 c j c_j cj 当中,则两者之间存在上述联系。这里的定义和论文《Bridging textual and tabular data for cross-domain Text-to-SQL semantic parsing》 当中提出的锚文本(anchor texts)感觉有异曲同工之妙,都是通过某种方式建立value和对应column的联系。BRIDGE模型中只允许获取每个属性列的取值列表(picklists),而本文中没有详细阐述(从文中提到检索速度大大提升这一点,可以猜测也是相似的设定)。
    (3)基于记忆的模式对齐矩阵(Memory-Schema Alignment Matrix)
    这里需要先补充一部分指针生成网络的内容。参考:https://zhuanlan.zhihu.com/p/106171651和https://cloud.tencent.com/developer/article/1116983
    指针生成网络(Pointer-Generator Networks)本质上是对文本的两种生成方式,即抽取式和生成式的一种融合,能够在保留原有信息的同时,有效地避免不断重复。
    使用relation-aware的attention机制作为指针,这里的对齐矩阵其实形式上仍旧类似于计算注意力分权,同时对齐具有某种稀疏性?(这里的指针应该和我理解的有一些出入)

在这里插入图片描述

  • 解码器(Decoder)
    这部分内容直接使用了论文《A Syntactic Neural Modelfor General-Purpose Code Generation》中的设计。简单来说就是decoder可以有三种动作:第一个是将最近生成的结点添加到一条新的语法规则中;第二个是从数据库模式中挑选一个列名生成结点;第三个是从数据库模式中挑选一个表名生成结点(这篇论文也先鸽着好了)。
    参考博客:https://blog.csdn.net/ting0922/article/details/106158693
    在这里插入图片描述在这里插入图片描述

3.实验(Experiment)

RAT模型与Spider榜单上其他模型的Accuracy对比如下图所示。可以看出模型比一些加了Bert的模型效果还要好,当然模型加上Bert强化后性能也提升了不少。
在这里插入图片描述
作者还比较了在Spider不同难度的样本分类上的实验结果,发现难度的提升对模型的拟合能力确实影响不小,但Bert的运用有助于缓解这一问题。在这里插入图片描述

4.消融实验(Ablation Study)

在这里插入图片描述

5.结论(Conclusion)

在T2S的研究领域,工作仍然是围绕如何更好地表征数据库模式和如何更有效地链接模式和问题中提到的表/列名。即为了更好地编码和使用数据库中的表/列信息,模型必须要整合问题上下文信息,推理出这些表列在其中的角色。在本文的工作中,作者提出了一个结构化的模型框架,可以有效解决模式编码和模式链接两大难题。得益于关系感知的自注意力机制,模型可以基于模型和问题两者间的关系和模式的内部关系,综合性地学习模型与问题的表征。
实验表明,RAT模型在T2S任务中能够取得SOTA的成绩。即它提供了一个全新的方案,能够将基于模式预先定义的“硬关系”(即和主键外键相关的一些关系,见之前的分类)和经由自注意力机制推导出的“软关系”融合到统一个编码架构当中。在输入含有预定义架构的T2S任务中,这样的表征学习无疑是有益的。


总结

这篇文章勉强读完啦,文中感觉有很多细节性的东西仍旧是模棱两可,后续可能会结合源码继续学习。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值