Text2SQL学习整理(五)将Text-to-SQL任务与基本语言模型结合

导语

上篇博客: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的贡献主要有三方面。

  1. 提出了一种简单有效的网络结构,将Text-to-SQL任务与基本语言模型完美地结合起来,从而最大程度地利用了基本语言模型的强大功能。

  2. 作为编码器的基本语言模型直接编码NL问题和列,而不需要任何额外的池操作,这被认为是Text-to-sql中捕获问题-列关系的最佳编码器。

  3. 所提出的混合排序机制和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其实也是从提升预训练模型角度出发,最大限度利用预训练模型的能力。

相关推荐
吴佳浩1 小时前
Hermes Agent 连环 400 真凶找到了:一个 call_id 让人炸毛
人工智能·llm·agent
程序员cxuan1 小时前
幽默,一个 Github 名字叫“马尾辫”,但是他给你省了 80% 的 token
人工智能·后端·程序员
宋哥转AI2 小时前
Agent记忆模块系列:03存储与检索链路实测验证
人工智能·agent
老金带你玩AI2 小时前
老金开源GoalPro,别让AI把目标越写越烂
人工智能
Bigfish_coding2 小时前
前端转agent-【python】-08 用 LangGraph 把 Agent 做成状态机:像写 Vue 3 状态管理一样编排 AI 流程
人工智能
刺猬的温驯3 小时前
语音克隆模型的难点之一:音素对齐及交叉注意力早期失效问题 (兼论旋转位置编码)——F5-TTS、SupertonicTTS、VoxFlash-TTS 对比
人工智能·语音合成·tts
道友可好3 小时前
AI 是最好的混乱放大器:代码熵管理实战
前端·人工智能·后端
不加辣椒5 小时前
第7章 边界与约束技术:确保输出的准确性与安全性
人工智能
AI悦创Python辅导5 小时前
Claude Code 越用越乱?Sub-Agents 才是上下文污染的解法
人工智能
Bigfish_coding5 小时前
前端转agent-【python】-07 长期记忆进阶:用 ChromaDB + 语义搜索给 Agent 装上真正的长期记忆
人工智能