现阶段,Spider数据集上最有效和最流行的编码器架构是question-schema interaction graph。在此基础上,许多最先进的模型得到了进一步发展,它联合建模自然语言问题和结构化数据库schema信息,并使用一些预定义的关系来划分它们之间的交互关系。然而,我们观察到当前基于图的模型还存在两个主要限制。
句法建模(Syntactic Modelling):句法和语义联合建模是自然语言处理的核心问题。在深度学习范式中,对于以句法为中心特征的任务,如Text-to-SQL任务,应该更好地理解句法的作用。例如,图1显示了基线模型可以学习question和schema之间的 date,id 和 transcript之间的正确链接,但是没有识别出id也应该包含在SELECT子句中。另一方面,在依存句法树的帮助下,date和id彼此接近,因此应该同时出现在SELECT子句中。然而,几乎所有可用的方法都将语言问题视为一个序列,而在基于神经网络的Text-to-SQL模型中忽略了句法信息。
纠缠的边嵌入(Entangled Edge Embedding):Question-Schema interaction graph预先定义了一系列的边,并将它们建模为可学习的嵌入。这些嵌入本质上应该是不同的,因为它们中的每一个都代表不同类型的关系,并且具有不同的含义。之前的研究已经证明了可学习嵌入算法容易被纠缠,不能满足多样性目标。
本文提出了S 2 ^2 2SQL,将语法注入到Text-to-SQL解析器的Question-Schema图编码器中,S 2 ^2 2SQL将来自句法依存树的句法标签建模为额外的边嵌入。在本文中,我们研究和证明了适当地将句法信息引入到Text-to-SQL中可以进一步提高性能,并且我们提供了为什么以及如何工作的详细分析。在此基础上,我们提出了一个解耦约束来鼓励模型学习不同的关系嵌入集,从而进一步提高了网络的性能。我们在具有挑战性的Text-to-SQL基准数据集Spider和Spider-Syn上评估了我们提出的模型,并证明当使用不同的预模型进行增强时,S 2 ^2 2SQL的性能一致优于其他基于图的模型。简言之,我们工作的贡献有三方面:
输入的Question和Schema可以被一同视为一个图 G = V , E G={V,E} G=V,E,其中 V = Q ∪ T ∪ C V=Q\cup T\cup C V=Q∪T∪C,最初的节点嵌入矩阵 X ∈ R ∣ V ∣ Q ∣ + ∣ T ∣ + ∣ C ∣ ∣ × d \mathbf{X} \in \mathbb{R}^{|V| \mathcal{Q}|+| \mathcal{T}|+| \mathcal{C}|| \times d} X∈R∣V∣Q∣+∣T∣+∣C∣∣×d的初始值(即每个节点的初始embedding)是将输入展平成如下序列形式:形式 [ C L S ] q 1 q 2 ⋯ q ∣ Q ∣ [ S E P ] t 10 t 1 c 10 t 1 c 1 t 1 c 20 t 1 c 2 t 1 ⋯ t 20 t 2 c 10 t 2 c 1 t 2 c 20 t 2 c 2 t 2 ⋯ [ S E P ] [\mathrm{CLS}] q_{1} q_{2} \cdots q_{|Q|}[\mathrm{SEP}] t_{10} t_{1} c_{10}^{t_{1}} c_{1}^{t_{1}} c_{20}^{t_{1}} c_{2}^{t_{1}} \cdots t_{20} t_{2} c_{10}^{t_{2}} c_{1}^{t_{2}} c_{20}^{t_{2}} c_{2}^{t_{2}} \cdots[\mathrm{SEP}] [CLS]q1q2⋯q∣Q∣[SEP]t10t1c10t1c1t1c20t1c2t1⋯t20t2c10t2c1t2c20t2c2t2⋯[SEP]. (之后输入到BERT或其他预训练模型中得到)。其中, t i 0 t_{i0} ti0和 c j 0 t i c_{j0}^{t_i} cj0ti表示这个table或column的type信息,被放在每个table或column输入项之前。他们之间的连边 R = { R } i = 1 , j = 1 ∣ X ∣ , ∣ X ∣ \mathcal{R}=\{R\}_{i=1, j=1}^{|X|,|X|} R={R}i=1,j=1∣X∣,∣X∣表示所有输入节点中任意两个节点之间已知的关系。
RGAT(relational graph attention transformers)模型对整个图进行建模,并得到输出表示为:
其中, W q , W k , W v W_q,W_k,W_v Wq,Wk,Wv是可以通过训练学习。 N i n N_i^n Nin 代表节点 v i n v_i^n vin 的receptive field。
以前的工作主要集中在编码器中使用schema与question之间以及schema内部的连接,而忽略了问题的结构。我们提出了一种将句法依赖信息集成到图中的有效方法。一个简单的想法是将所有句法依存类型直接视为新边类型。然而,依存句法解析器将返回55种不同的依存句法类型。如此大量的边类型会显著增加S 2 ^2 2SQL中关系嵌入参数量,导致过拟合。为解决这个问题,我们将依赖类型引入三个抽象关系:Forward、Backward和NONE。另外,为了保证边嵌入的简单性,我们只考虑一阶关系。通过多层transformer的叠加,该模型无需刻意构造就能隐式捕获多阶关系。具体来说,我们计算在问题中的任意两个token v i v_i vi 和 v j v_j vj 之间的距离 D ( v i , v j ) D(v_i,v_j) D(vi,vj) 。如果 v i v_i vi 和 v j v_j vj 具有上述依存关系类型,则该距离设置为 v i v_i vi 和 v j v_j vj 之间的一阶距离,否则为0。基于这个一阶距离D,我们通过前面定义的三种抽象类型之一,对token v i v_i vi 和 v j v_j vj 之间的句法关系 R i j R_{ij} Rij 问题进行建模。
总的来说,如图2所示,S 2 ^2 2SQL在图G中建模了三种结构:
如果该对满足下表中列出的描述之一并带有相应的标签,则从源节点 x ∈ S 到目标节点 y ∈ S 存在结构(边)。
R中有k条已知边,每条边都表示为一个关系嵌入。直观地说,这些边缘嵌入 r = [ r 1 ; r 2 ; : : : ; R k ] r = [r_1;r_2;:::;R_k] r=[r1;r2;:::;Rk] 应该是不同的,因为它们有不同的语义含义。为了避免优化过程中存在耦合嵌入边r的潜在风险,我们引入了正交性条件:
这里1代表元素全部为1的矩阵,I代表单位矩阵。F即矩阵的Frobenius 范数。(注:这个操作可以直接在Pytorch中通过torch.norm(matrix)
实现。)
本文在Spider和Spider-Syn数据集上进行实验。Spider是一个大规模的、复杂的、跨域的Text-to-SQL的基准测试。Spider-Syn源自Spider,通过手动选择反映现实世界问题意译的同义词来替换与模式相关的单词。对于评估,我们遵循官方评估报告准确的匹配准确性(Exact Match,即EM)。
利用PyTorch来实现模型。在预处理过程中,问题、列名和表名的输入将使用Standford Nature Language Processing工具箱进行标记化和语义化。为了与基线进行比较,我们使用相同的一组超参数来配置它,例如,堆叠8个自我注意层,将dropout设置为0.1。位置前馈网络的内层尺寸为1024。在解码器内部,我们使用大小为128的规则嵌入,大小为64的节点类型嵌入,以及在LSTM内部的隐藏层size为512,dropout为0.21。
我们在Spider和Spider-Syn上进行了实验,并将我们的方法与几个基线进行了比较。
整体性能表现
我们首先将S 2 ^2 2SQL与Spider上的其他最先进的模型进行比较。如表1所示,我们可以看到S 2 ^2 2SQL优于所有现有模型。值得注意的是,S 2 ^2 2SQL + RoBERTa在隐藏测试集中的准确率为67.1%,比强基线RAT + RoBERTa高2.8%。同样的,SOTA模型LGESQL + ELECTRA在隐藏测试集上的准确率为72.0%,在开发集上的准确率为75.1%,而S 2 ^2 2SQL + ELECTRA可以达到72.1%的测试精度和76.4%的开发精度。表2显示了RAT和S 2 ^2 2SQL开发集上基于Table的前训练模型的结果。我们可以看到,当使用不同的训练前模型(包括RoBERTa、GraPPa和GAP)增强时,S 2 ^2 2SQL的表现始终优于RAT。此外,如表3所示,S 2 ^2 2SQL展示了Spider-Syn数据集上的提升。
消融实验
表1的最后一行显示,移除解耦约束会导致开发集性能下降0.5%。这说明解耦关系嵌入有助于提高性能。为了检验解耦约束的影响,我们将任意两个关系嵌入之间的余弦相似度可视化。如图3所示,我们观察到解耦约束消除了纠缠现象(颜色较深),并产生了更多样化的嵌入集。
在表4中,我们将S 2 ^2 2SQL模型生成的SQL查询与基线模型LGESQL创建的SQL查询进行了比较。我们注意到,S 2 ^2 2SQL比基准系统执行得更好,特别是在问题理解依赖于语法结构的情况下。例如,在第一种情况下,order 和name有NMOD关系,baseline模型预测出错,在第一个示例中,name和 tonnage可以链接正确,但baseline未能捕获name和order的结构,导致生成错误,而S 2 ^2 2SQL预测结果正确。
在我们的实验中,我们使用SpaCy工具作为句法分析器。需要强调的是,SpaCy句法分析的质量对S2SQL的性能影响很小。给出了以下三个主要原因。
本文提出了一种语法增强的问题模式图编码器(S 2 ^2 2SQL),它可以有效地对文本到sql的语法信息进行建模,并引入解耦约束来引入不同的关系嵌入。该模型在广泛使用的基准测试——Spider和Spider syn上取得了最新的性能。
S 2 ^2 2SQL: Injecting Syntax to Question-Schema Interaction Graph Encoder for Text-to-SQL Parsers