导语
上篇博客:Text2SQL学习整理(四)将预训练语言模型引入WikiSQL任务简要介绍了两个借助预训练语言模型BERT来解决WIkiSQL数据集挑战的方法:SQLOVA和X-SQL模型。其中,借助预训练语言模型的强大表示能力,SQLOVA已经超越了人类表现。而X-SQL则更进一步,使用MT-DNN取得了比SQLOVA更好的效果。
本篇博客将为大家介绍另一个使用预训练模型的方法:HybridSQL。
Hybrid Ranking Network for Text-to-SQL
HybridSQL认为,之前的工作揭示了WikiSQL上Text-to-SQL的几个主要挑战如下:
(1)如何融合来自NL问题和表模式的信息,由编码器处理;
(2)如何保证输出的SQL查询的可执行性和准确性,由解码器处理;
(3)如何利用预先训练的语言模型。
因而,这篇工作围绕这三点出发,分别进行了改进。
创新点
HybridSQL的贡献主要有三方面。
-
提出了一种简单有效的网络结构,将Text-to-SQL任务与基本语言模型完美地结合起来,从而最大程度地利用了基本语言模型的强大功能。
-
作为编码器的基本语言模型直接编码NL问题和列,而不需要任何额外的池操作,这被认为是Text-to-sql中捕获问题-列关系的最佳编码器。
-
所提出的混合排序机制和Execution-guided decoding(详见上一篇博客)处理列-列关系,有效提高准确率。
模型简介
HybridSQL将Text-to-SQL定义为一个多任务学习问题,可以通过适应预先训练的Transformer模型来解决。
X-SQL中,模型直接对全表进行了序列化处理,在后续预测子任务中,需要进行Attentive pooling。如下图所示,HydraNet的一个创新点在于它将表示层的输入变成了每个列的列文本和query文本组成的对,这样对于每个列都是bert标准的sentence pair输入。最大化利用了预训练模型的性能(BERT、RoBERTa等)。
在预测后续的6个子任务时,HybridSQL将其分为了两大类
- 与具体列有关的任务,如W-COL,W-OP,W-VAL。
- 与具体列无关的任务,如W-NUM和SEL-NUM。
在HybridSQL中,与具体列有关的任务被建模成sentence pair输入的分类任务和文本问答任务。由于HydraNet的每一个序列输入中只有一个column,无法获知全局的信息。所以,在这些任务中,HybridSQL通过设定阈值或对所有列的结果加权来得到预测结果。
HydraNet的推理过程如下:
- 计算每个(ci, q) pair的所有子任务结果;
- 综合所有对的结果得到W-NUM和SEL-NUM;
- 对每个pair针对select进行排序,选出得分最高的SEL-NUM个列及其相关的agg作为条件;
- 对每个pair针对where进行排序,选出得分最高的W-NUM个列及其相关的val、op作为条件;
结果
通过以上改进,HybridSQL取得了超过X-SQL的表现:
总结
本文介绍了X-SQL后的一个借助预训练语言模型的方法:HybridSQL。该方法尽可能的将Text-to-SQL任务和原始的预训练模型的形式保持一致,最大限度的利用预训练模型的表示能力。后面最新的SOTA模型SeaD其实也是从提升预训练模型角度出发,最大限度利用预训练模型的能力。