1. 作者简介
Xiaojun Xu∗ Shanghai Jiao Tong University Chang Liu, Dawn Song University of the California, Berkeley
2. 文献类型
ICLR 2018
3. 主要贡献
- 提出一种方法处理“序列到集合”的生成问题,避免where子句中的顺序相关
- 提出一种全新的注意力结构,称为columns attention
- 设计的SQLNet在WikiSQL数据集上提升了9-13个点
4. 方法概述
SQLNet 简化模型:
输入:
- natural language question
- table(主要是列名)
输出:
SQL query
由于SQL query的句式具有一定的结构特点。所以SQL的生成并不是像机器翻译任务那样,而是采用像完型填空的形式填充$AGG,$Column,$OP,$VALUE(也就是预测这几个位置的值).
SQL形式和图解如下:
(注意:这里一句SQL只对应于一张表) 1. $AGG聚合操作:一般有五种:sum,max,min,std,count
2. $COLUMN:表中的列名 3. $OP:有>,<,=等 4. $VALUE:是出现在Natural Language Questing中substring。采用Column Attention的序列到集合的预测

其中 和
是column名字的embedding和natural language question的embedding,他们是由两个BiLSTM的最后一个隐状态表示。注意这两个LSTM并不共享权重。
- 引入注意力机制

col是大小为d*d可训练矩阵,col是d维可训练向量
- 完整模型
- 预测Where子句
- Where子句中的Column slot(由于Where中可能不不止一个Column所以模型先进行预测column个数)
- 预测Where子句

这里预测的是0-N中的一个值,而N是表中的columns数。这里K是top-k的column。文中没有说明$E{Q|Q}$是什么估计是attention 机制,需要看代码。
ii. Where子句中的OP slot,预测三个操作{=,>,<} 计算:
iii. Where子句中的VALUE slot:
其中 是d-dimensional的训练向量,这里
使用了column attention 机制,类似于_
的计算
b. 预测SELECT子句
i. SELECT子句中的 Column slot
其中i 是1~C,C表示表中总列数。
ii. SELECT子句中的 AGG slot
5. 实验
- 注意不同slots之间不共享权重,但要共享embedding
- 允许embedding更新,实验证明效果更好
- 上述各个子模块都采用的标准的交叉熵loss。
数据集:wikiSQL
实验结果:
