【P14】GP: Context-free Grammar Pre-training for Text-to-SQL Parsers

Journal of Artificial Intelligence(JAIR)
https://arxiv.org/abs/2101.09901v2

Note:这篇文章的 related work 很不错。

Abstract

  • 为了充分学习SQL语法的内部关系,对解码器进行了独立于编码器的预训练。提高了模型的鲁棒性,加快了模型的收敛速度。—— 核心
  • 采用 Flooding level 来获得非零训练损失,避免局部极值问题。
  • 基于前人的 GRAPPA 和 RAT-SQL 模型对句子进行编码,在 Spider 上获得了更好的性能(72.8% dev, 69.8% test)。

1. Introduction

  1. 创造性地提出了一种面向文本到sql的上下文无关语法预训练(GP)方法。
    由于SQL语法框架与特定的自然语言无关,首先在没有编码器信息的情况下预先训练解码器
  2. 在预处理模块中,我们使用字符串匹配来发现问题中出现的值,并将其添加到原始输入序列的等效列后面。
  3. 在损失函数的设计上,采用了 Flooding level 作为避免局部最小值的新方法。

2. Related Works

3. Methodology

3.1 Context-free Grammar Pre-training(GP)

目前的方法将代码生成视为序列生成的任务,未考虑目标编程语言的语法。基于语法规则,SNM(Syntactic Neural Model)本质上是一种通过限制解码器的搜索空间来提高模型准确性的方法。

在解码器端预训练参数,作为输入,编码器的语义信息被零向量代替。

RAT-SQL利用LSTM输出一系列解码器动作的概率方程为:
Pr ⁡ ( P ∣ y ) = ∏ t Pr ⁡ ( a t ∣ a < t , y ) \operatorname{Pr}(P \mid y)=\prod_{t} \operatorname{Pr}\left(a_{t} \mid a_{<t}, y\right) Pr(Py)=tPr(ata<t,y)在GP中, y y y 总是 [ 0 ] [0] [0] a < t a_{<t} a<t是 all previous actions。

相应地,LSTM的状态更新策略将被修改为:
m t , h t = f L S T M ( [ a t − 1 ∥ [ 0 ] ∥ h p t ∥ a p t ∥ n f t ] , m t − 1 , h t − 1 ) m_{t}, h_{t}=f_{L S T M}\left(\left[\mathbf{a}_{\mathbf{t}-\mathbf{1}}\|[\mathbf{0}]\| \mathbf{h}_{\mathbf{p}_{\mathbf{t}}}\left\|\mathbf{a}_{\mathbf{p}_{\mathbf{t}}}\right\| \mathbf{n}_{\mathbf{f}_{\mathbf{t}}}\right], \mathbf{m}_{\mathbf{t}-\mathbf{1}}, \mathbf{h}_{\mathbf{t}-\mathbf{1}}\right) mt,ht=fLSTM([at1[0]hptaptnft],mt1,ht1)其中,

符号意义
m t m_t mt t t t步的LSTM cell state
h t h_t ht t t t步的LSTM output
a t − 1 a_{t-1} at1前一个动作的embedding
p t p_t pt展开当前节点的父AST节点对应的步骤
n f t n_{ft} nft当前节点类型的embedding
[ 0 ] [0] [0]代替了之前的 z t z_t zt(上下文表示即 multi-head attention on h t − 1 h_{t-1} ht1 over y y y

由于GP不再依赖语义信息,它无法预测列或表的名称。为了不改变RAT-SQL的框架,假设每个示例只有一列和一个表,即:
Pr ⁡ ( a t = S E L E C T COLUMN ⁡ [ 0 ] ∣ a < t ) = 1 Pr ⁡ ( a t = S E L E C T T A B L E [ 0 ] ∣ a < t ) = 1 \begin{array}{c} \operatorname{Pr}\left(a_{t}=S_{E L E C T} \operatorname{COLUMN}[0] \mid a_{<t}\right)=1 \\ \operatorname{Pr}\left(a_{t}=S_{E L E C T} T A B L E[0] \mid a_{<t}\right)=1 \end{array} Pr(at=SELECTCOLUMN[0]a<t)=1Pr(at=SELECTTABLE[0]a<t)=1为了防止过拟合,解码器语法预训练步骤的数量被限制为300。

3.2 Question-Schema Serialization and Encoding

在这里插入图片描述
只在提到的列与问题精确匹配时才向它们添加值。
在这里插入图片描述

4. Experimental Results

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值