1. 作者简介

Xiaojun Xu∗ Shanghai Jiao Tong University Chang Liu, Dawn Song University of the California, Berkeley

2. 文献类型


ICLR 2018

3. 主要贡献

  1. 提出一种方法处理“序列到集合”的生成问题,避免where子句中的顺序相关
  2. 提出一种全新的注意力结构,称为columns attention
  3. 设计的SQLNet在WikiSQL数据集上提升了9-13个点

4. 方法概述

  1. SQLNet 简化模型:

    输入:
    - natural language question
    - table(主要是列名)
    输出:
    SQL query
    由于SQL query的句式具有一定的结构特点。所以SQL的生成并不是像机器翻译任务那样,而是采用像完型填空的形式填充$AGG,$Column,$OP,$VALUE(也就是预测这几个位置的值).
    SQL形式和图解如下:
    image.png
    (注意:这里一句SQL只对应于一张表) 1. $AGG聚合操作:一般有五种:sum,max,min,std,count
    2. $COLUMN:表中的列名 3. $OP:有>,<,=等 4. $VALUE:是出现在Natural Language Questing中substring。

  2. 采用Column Attention的序列到集合的预测

image.png
其中 SQLNet:Generating Structured Queries From Natural Language Without Reinforcement Learning - 图3SQLNet:Generating Structured Queries From Natural Language Without Reinforcement Learning - 图4 是column名字的embedding和natural language question的embedding,他们是由两个BiLSTM的最后一个隐状态表示。注意这两个LSTM并不共享权重。

  1. 引入注意力机制

image.png
col是大小为d*d可训练矩阵,col是d维可训练向量

  1. 完整模型
    1. 预测Where子句
      1. Where子句中的Column slot(由于Where中可能不不止一个Column所以模型先进行预测column个数)

image.png
这里预测的是0-N中的一个值,而N是表中的columns数。这里K是top-k的column。文中没有说明$E{Q|Q}$是什么估计是attention 机制,需要看代码。
ii. Where子句中的OP slot,预测三个操作{=,>,<} 计算:
image.png
iii. Where子句中的VALUE slot:
image.png
其中 SQLNet:Generating Structured Queries From Natural Language Without Reinforcement Learning - 图9 是d-dimensional的训练向量,这里 SQLNet:Generating Structured Queries From Natural Language Without Reinforcement Learning - 图10
使用了column attention 机制,类似于_ SQLNet:Generating Structured Queries From Natural Language Without Reinforcement Learning - 图11 的计算
b. 预测SELECT子句
i. SELECT子句中的 Column slot
image.png
其中i 是1~C,C表示表中总列数。
ii. SELECT子句中的 AGG slot
image.png

5. 实验

  1. 注意不同slots之间不共享权重,但要共享embedding
  2. 允许embedding更新,实验证明效果更好
  3. 上述各个子模块都采用的标准的交叉熵loss。

数据集:wikiSQL
实验结果:
image.png

6. 原文及源码

原文
源码