ShadowGNN: Graph Projection Neural Network for Text-to-SQL Parser 论文笔记


摘要

  • 给定一个数据库模式,Text-to-SQL旨在将一个自然语言问题翻译成相应的SQL查询。在跨领域(意思是,如果模型在数据库a,比如说地理信息的数据库上训练,当把模型放在数据库b,比如说企业信息的数据库上测试)的设置下,传统的语义解析模型很难适应未见过的数据库模式。
  • 为了提高模型对罕见和未见过的模式的泛化能力,我们提出了一个新的架构,即ShadowGNN,它在抽象和语义层面上处理模式。通过忽略数据库中语义项的名称,把抽象的数据库模式投影到一个图神经网络上并利用,以获得问题和模式的非词汇化表达。
  • 基于独立于领域的表述,一个关系感知的转化器被用来进一步提取问题和模式之间的逻辑联系。最后,利用一个带有context-free grammer即SQL的抽象语法树,大部分的Text-to-SQL模型都使用这个语法树来当作 Decoder 部分)的SQL解码器。
  • 在具有挑战性的Text-to-SQL基准Spider上,仿真结果显示ShadowGNN优于最先进的模型。当注释数据极其有限时(只有10%的训练集),ShadowGNN 获得了绝对的5%以上的性能提升,这表明其强大的泛化能力。我们的实现将在https://github.com/WowCZ/shadowgnn上开源。

1.Introduction

这一部分介绍了Text-to-SQL的一些难点。

首先,数据库模式被当作一个 domain,其中包含两部分的信息:

  • 模式组件的语义信息(如表名,列名)
  • 数据集的结构信息(如主外键关系)

最近发布的数据集Spider(Yu等人,2018) ,隐藏了测试集的数据库模式,这些模式在训练集上是完全不可见的。在这种跨领域的设置中,领域适应是有难度的,主要有两个原因:

  • 首先,测试集和开发集的domain的语义信息在训练集中是不存在的。在给定的开发集上,数据库模式中的35%的 word 并没有出现在训练集的数据库模式中,在问题和模式中很难匹配领域的表述。
  • 第二,数据库模式的结构之间存在着相当大的差异。特别是,数据库模式总是包含语义信息。要获得数据库模式的统一表示是很困难的。在跨领域的设置下,基本的挑战是减轻领域信息的影响。

首先,有必要弄清楚在将NL问题转化为SQL查询的过程中,数据库模式组件的语义信息发挥了哪些作用。

考虑到图1(a)中的例子,对于Text-to-SQL模型来说,基本任务是通过查找带有语义信息的模式(被命名为语义模式 semantic schema)来找出所有提到的列(name)和表( team , match season)。
在这里插入图片描述

一旦NL问题中提到的列和表与模式组件完全匹配(即NL中的单词出现在数据库中),我们就可以通过用特定的模式组件来替代普通的组件来抽象出NL问题和语义模式。如图图1(b)所示,我们仍然可以利用抽象的NL问题和模式结构来推断SQL查询的结构。

在这里插入图片描述

通过语义模式和抽象模式之间的对应关系,我们可以将抽象查询还原为带有领域信息的可执行SQL查询。

受这一现象的启发,我们将Text-to-SQL模型的编码器分解为两个模块。

  • 首先,我们提出了一个图投影神经网络(GPNN)来抽象 NL问题(NL question)语义模式 (semantic schema),其中 domain information 被尽可能地删除。
  • 然后,我们使用 relation-aware transformer这一部分可以参考另外一篇论文 RAT-SQL)来获得抽象的NL问题的统一表征以及抽象的模式的统一表征。

2.Background

这一部分介绍了本篇论文借用了哪些论文的模型

  • 在这一节中,我们首先介绍关系图卷积网络(R-GCN)(Schlichtkrull等人,2018),它是我们提出的GPNN的基础。
  • 然后,我们介绍 relation-aware transformer这一部分可以参考另外一篇论文 RAT-SQL),这是一个在计算注意力权重时考虑关系信息(实际上就是在 self-attention 的基础上加了边的信息)的 transformer 变体。

2.1 Relational Graph Convolution Network(关系图卷积网络)

  • 在描述R-GCN的细节之前,我们首先给出关系有向图的符号。
    在这里插入图片描述
  • 其中,V是数据库的模式组件(如表,列
  • ε \varepsilon ε 是两个节点 v i v_{i} vi v j v_{j} vj 之间的边
  • R 是边的类型
  • 故要表示一条边,则用一个三元组( v i v_{i} vi , r , v j v_{j} vj

  • 上图的公式代表指向节点 v i v_{i} vi,且边的类型为 r 的节点的集合

  • 图中的每个节点 v 都有一个输入特征 x i x_{i} xi,它被看作是R-GCN的初始隐藏状态 h i 0 h_{i}^{0} hi0

  • 图中每个节点的隐藏状态按以下步骤逐层更新。

Sending Message把相邻节点的信息考虑进来) 在第 l 层的R-GCN中,图中的每条边( v i v_{i} vi , r , v j v_{j} vj)将从起点 v i v_{i} vi 向终点 v j v_{j} vj发送 messagemessage 的计算方式如下。
在这里插入图片描述

  • 其中,r 是边的类型,W 是一个可学习的矩阵。
  • 根据公式1,计算 message 的参数的规模与节点类型的数量成正比。
  • 为了提高可扩展性,R-GCN用基数分解方法对 message 计算参数进行规范化处理,其定义如下。(相当于把 W 分解成更小的部分,对不同类型的边,用不同的参数计算

在这里插入图片描述

  • 其中,B是基数, a r b ( l ) a_{rb}^{(l)} arb(l)是基础的 transformation V b ( l ) V_{b}^{(l)} Vb(l) 的系数。
  • 对于不同的边类型, transformation V b ( l ) V_{b}^{(l)} Vb(l) 是共享的,只有 a r b ( l ) a_{rb}^{(l)} arb(l)是取决于边类型(相当于所有的边的计算,都是经过 V b ( l ) V_{b}^{(l)} Vb(l),但 a r b ( l ) a_{rb}^{(l)} arb(l)不一样,可以这么理解,有的边比较重要,有的边不重要,故要用不一样的 a r b ( l ) a_{rb}^{(l)} arb(l)来对边的表示进行放大或者缩小

Aggregating Message 所有消息都会被入度边给接收,结合公式(1)和(2),R-GCN简单地对这些传入的 message 进行平均,即

在这里插入图片描述

  • 其中, c i , r c_{i,r} ci,r 等于 ∣ N i r ∣ \left | N_{i}^{r} \right | Nir总共聚合了多少个节点信息的数量

Updating State更新隐藏状态
在这里插入图片描述
其中, σ \sigma σ是激活函数,R-GCN的更新操作可以简单定义为
在这里插入图片描述

2.2 Relation-aware Transformer(RAT)

在这里插入图片描述

  • 上图是 Attention is all you need 的公式
  • 下图是 RAT 的公式
    在这里插入图片描述

可以发现,RAT 只是在self-attention公式的基础之上加了 r i j , K r_{ij,K} rij,K r i j , V r_{ij,V} rij,V 来表示节点 v i v_{i} vi 和节点 v j v_{j} vj 的边的信息(这些信息也是学出来的,丢给模型梯度下降就是了)

  • 因此,RAT的更新操作可以简单定义为:
    在这里插入图片描述

  • 然而,这两个模型并没有明确地探讨 domain information 的影响。在下一节中,我们将介绍我们提出的GPNN,并说明如何使用GPNN来获得抽象的表征

3.Method

ShadowGNN中,encoder被分解为两个模块。

  • 第一个模块用一个GPNN过滤特定的domain information
  • 第二个模块用RAT进一步获得问题和模型的统一表示
  • encoder这两个模块模拟了人类在跨领域设置下将问题翻译成SQL查询时的推理过程:抽象和推理

3.1 Graph Projection Neural Network

  • 正如上文所述,数据库模式由数据库结构信息domain semantic information (领域语义信息)组成。
  • 因此,GPNN有三种输入,抽象模式,语义模式和NL问题。
  • 抽象模式的输入是模式节点的类型(Table 或 Column),没有任何 domain information,可以被重新定义为语义模式的一个投影。
  • 抽象模式中的每个节点又一个 one-hot 向量 a j ( 0 ) a_{j}^{(0)} aj(0)表示,它有两个维度(分别表示Table或者Column
  • 对于语义模式NL问题,首先使用BERT来初始化他们的表示,然后直接将它们串联起来,如
  • [CLS] question [SEP] tables columns [SEP]
  • 语义模式中的每个节点名称可以被标记为子标记或者子词。
  • 我们在RoBERTa的最后一层后添加一个平均汇集层,以便将子标记与对应的节点对齐
  • 我们把NL问题以及语义模式的初始化表示为 q i ( 0 ) q_{i}^{(0)} qi(0) s j ( 0 ) s_{j}^{(0)} sj(0)

GPNN的主要 motivation 是对问题和模式的表示进行抽象。抽象的模式已经从语义模式中提取出来。基本的挑战在于对应问题表征的抽象化。

  • 在每个GPNN层有两个独立的操作:Projection Attention(投影注意) and Character Encoding(字符编码)
  • GPNN的投影注意是以语义模式为桥梁,使用抽象模型更新问题的表示,但注意力信息是用语义模式的向量计算的
  • Character Encoding是为了增强问题句和模式图的结构表示

Projection Attention(这一步可理解为计算question中的单词和schema中的节点之间的相关性) 在每个GPNN层,首先在NL问题 q i ( 0 ) q_{i}^{(0)} qi(0)语义模式 s j ( 0 ) s_{j}^{(0)} sj(0)之间计算attention
在这里插入图片描述

  • 其中, W Q ( l ) W_{Q}^{(l)} WQ(l) W k ( l ) W_{k}^{(l)} Wk(l) 是第 l 层可以训练的参数
  • e ( n ∗ m ) e^{(n*m)} e(nm)是未加工的attention系数,n是问题句子的长度,m是数据库模式的节点数

(Bogin et al., 2019a) 的启发,在使用attention之前,首先计算attention概率的最大值 u
在这里插入图片描述
其中 u j u_{j} uj的意义是该schema的第 j 个节点被问题单词提及的最大可能性
我们将 u 乘以第 l 层的抽象模式表示 a ( l ) a^{(l)} a(l) 来区分第 l 层初始的表示
在这里插入图片描述
当更新问题表示时,我们把 a ^ ( l ) \hat{a}^{(l)} a^(l) 当作 GPNNl层的attention 系数
在这里插入图片描述
在这里插入图片描述

  • W V ( l ) 是 可 以 训 练 的 矩 阵 W_V^{(l)}是可以训练的矩阵 WV(l)

在更新语义模式时,我们将上述 attention 矩阵的转置作为从语义模式(或抽象模式)NL问题attention 之前的 e 是从NL问题到语义模式的 attention

在这里插入图片描述

  • 更新语义模式的 s ^ ( l + 1 ) \hat{s}^{(l+1)} s^(l+1) 的公式和上述的公式
    17-21
    类似
  • 同理,更新抽象模式的 a ^ ( l + 1 ) \hat{a}^{(l+1)} a^(l+1) 也和上述公式类似
  • 其中 attention 未加工的系数 e ^ m ∗ n \hat{e}^{m*n} e^mn 是被语义模式 s ^ ( l + 1 ) \hat{s}^{(l+1)} s^(l+1) 和抽象模式 a ^ ( l + 1 ) \hat{a}^{(l+1)} a^(l+1) 共享的( 也就是说在计算这两个东西的时候是共享 e ^ m ∗ n \hat{e}^{m*n} e^mn 的,因为这两个东西都是从模式到问题的attention

Character Encoding 我们使用 projection attention mechanism( 投影attention机制)来更新上面我们计算得到的三个向量。然后,我们把模式NL问题结合,使用R-GCNTransformer来继续编码
在这里插入图片描述
经过GPNN模块,我们得到了模式和NL问题的抽象表示,分别为 a ( N ) a^{(N)} a(N) q ( N ) q^{(N)} q(N)NGPNN的层数

3.2 Schema Linking(模式链接)

模式链接可以被看做是一种先验知识,问题和模式之间的相关表示将根据匹配程度被标记。
总共有7种标签:

  • Table Exact Match (表完全匹配)
  • Table Partial Match(表部分匹配)
  • Column Exact Match(列完全匹配)
  • Column Partial Match(列部分匹配)
  • Column Value Exact Match(列中的值完全匹配)
  • Column Value Partial Match(列中的值部分匹配)
  • No Match(不匹配)

正如上述描述,模式链接可以表示为:
在这里插入图片描述
d i j d_{ij} dij 代表着第 i 个单词和第 j 个节点的匹配(上面7种标签的一种

为了将模式链接信息整合到GPNN 模块,我们计算出一个先验 attention score
在这里插入图片描述
其中, d i j d_{ij} dij 是代表匹配类型的 one-hot 向量。
因此,公式 17 被更新成如下:
在这里插入图片描述
这个先验 attention score 被用在所有的 GPNN 层。

3.3 RAT

在本文中,我们利用 RAT 来进一步统一问题 q ( N ) q^{(N)} q(N) 和抽象模式 a ( N ) a^{(N)} a(N) 的统一表示。
我们将句子序列 q ( N ) q^{(N)} q(N) 和抽象模式序列 a ( N ) a^{(N)} a(N) 串联成一个较长的序列表示,这就是 RAT模块 的初始输入。
经过 RAT 模块,最终的问题和抽象模式的统一表示法为:
在这里插入图片描述
其中,RRAT 中定义的节点类型(也就是table,column,question之间的类型,也分为很多种,具体类型可以参考 RAT 原文

综上,所有的部分可以总结为下图的模型:
在这里插入图片描述

3.4 Decoder with SemQL Grammar

这里使用的是另外一篇论文的方法(IRNet)并改进,以及coarse-to-fine approach (Dong and Lapata, 2018) (Decoder部分大多论文的方法类似,主要改进还是在encoder部分,可以略看这一部分

4.总结

在本文中,提出了一个 GPNN ,以简单的关注方式抽象出问题和模式的表示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值