持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
导语
之前的工作揭示了直接Fine-tune T5可以在Text-to-SQL任务上取得不错的表现,最近的尝试对T5的输出进行约束(参考:juejin.cn/post/708848… ),而本文则是介绍了一种从Encoder端进行改进的方法:RASAT。这篇文章写的非常好,方法非常的简单巧妙,值得学习!
- EMNLP 2022
- 连接:arxiv.org/abs/2205.06…
1 简介
在近几年的Text-to-SQL工作中,研究者们引入了各种各样、形形色色的关系,比如GlobalGNN(juejin.cn/post/708700… )使用GNN来编码数据库schema,BRIDGE模型(juejin.cn/post/708775… )引入了数据库内容匹配,RAT-SQL(juejin.cn/post/708741… )引入了schema linking来建模schema mention和schema item之间的关系,SADGA则引入了输入问句中的依存句法结构关系。然而,这些关系在使用时需要借助特殊的结构,如GNN、Tree-based LSTM等,无法充分利用大规模预训练模型的强大表示能力。
而另一方面,Shaw et al. (2021)的工作展示了直接使用seq2seq的方式来Fine-tune T5-3B模型就可以达到堪比SOTA的表现,在此基础上,Scholak等人设计了PICARD模型,即对T5模型的输出beam进行约束以减少不符合SQL语法规则的输出,取得了新的SOTA表现。
而RASAT则综合了以上两大主流方法的优点,借助Relation-aware Self-attention模块编码各种Relation来集成到T5模型中。RASAT既能充分利用各种先验的关系编码,同时又可以直接继承T5模型强大的表示能力,在目前Text-to-SQL领域的三大数据集:Spider、SParC和CoSQL上全部取得了SOTA的表现。
2 相关工作
略
3 预备知识
3.1 任务定义
单轮Text-to-SQL任务的目标是在输入问句和数据库schema 的前提下,生成对应于该问句的SQL语句。
而对于多轮Text-to-SQL任务,输入的问句变为当前轮次问句和历史上下文问句。数据库schema则定义为表列的集合。
3.2 Relation-aware Self-attention
Relation-aware Self-attention其实就是在原来Self-attention计算时,加入了两个偏置项和,它们被用来代表第i个token和第j个token之间的先验关系。
4 RASAT
4.1 模型概览
模型的名称叫RASAT(Relation-Aware Self-Attention-augmented T5),其整体结构如下图所示。
整体而言,模型的结构非常简单,即是一个原始的T5模型,然后其中Encoder的Self-attention模块被替换为了Relation-aware Self-attention模块。模型只额外增加了两个Embedding Matrix用来维护各种Relation的Embedding向量(可训练的)。
对于模型的序列化方式,作者基本遵循了和PICARD相似的方式,即对于单轮的Text-to-SQL问题,输入形式如下:
对于多轮的Text-to-SQL问题,形式如下:
4.2 Interaction Graph
在确定好输入后,作者将所有输入中每个token作为一个节点连成了一张全连接图,叫做Interaction Graph。其中,任意两个节点之间有且只有一条边。接着,作者将输入之间的Relation定义为一个三元组:
其中,H和T分别是连边的头实体和尾实体,r即为关系。作者根据头尾实体类型的不同总共定义了5大类共51种关系,这些关系都是非对称的,几种代表性的关系如下图所示:
接下来将分别介绍这5大类关系:
Schema Encoding
Schema Encoding用于编码数据库模式中内部的结构关系,如某个列属于某个表,某个列是某个表的主键、不同列之间的主外键联系,列与列同属于一张表等等。
Schema Linking
Schema Linking用于表示数据库schema和问句question之间的关系,比如有哪些schema item(即表名、列名)被用户在question中精确/部分提及,这里的这种关系与RAT-SQL的处理一样,都是使用了n-gram匹配。
Question Dependency Structure
问句的各个token之间存在着句法依存关系,这个关系也是过去工作中常常被忽略掉的。如下图所示,
Coreference Between Questions
多轮的Text-to-SQL中存在着丰富的语义指代现象,如上图2所示,用户在第2,3轮中所说的they就指的是第1轮问句中的studens。本文也是最早将这种关系显式的加入到模型中的工作(CQR-SQL也用到了,不过晚了几天)。
Database Content Mentions
这个关系指的是哪些数据库的值被用户精确/部分提及,因为有时用户可能不会明确的提及某一个column的名字,而是提到了其中的某个value,这个就需要充分利用数据库的database content,这里也是使用了和Bridge模型相似的操作,将匹配到的content以[v]的方式追加到对应的column后。
4.3 关系传播
一切关系处理完毕后,还有一个问题需要解决,即目前所有的关系都是在word/phrase层面进行分析的,而向T5这一类PLM,绝大多数都使用的BPE分词,所以会造成一种粒度上的不匹配。过去的工作如RAT-SQL、LGESQL等都是使用mean pooling, attentive pooling, 或者BiLSTMs来进行Embedding的聚合。而这里,作者为了不破坏T5的Embedding的表示能力,采用了一种相反的方式,即将word/phrase层面的relation“传播”到token层面,这确保尽可能的保留T5的Embedding性能。
5 实验
作者在目前的经典Text-to-SQL数据集Spider、SparC和CoSQL上都进行了测试,并取得全部SOTA的表现。
下图展示了SParC上的实验结果,可以看到RASAT在不使用PICARD时已经“碾压式”的超过了各种方法,结合PICARD后更是大大拉开了差距。
在CoSQL上也是差不多的表现,如下图所示:
而在单轮的Text-to-SQL数据集SPider和Spider-realistic上则是也有着一定的提升:
同时,作者还进行了一系列消融实验:
表7展示了不同SQL难度下的T5-3B和RASAT的表现情况,可以看到,不论是简单的问题还是复杂的问题,RASAT的表现均超过了T5-3B。
表8则展示了不同size的T5模型对最终性能的影响,可以看到,使用T5的size越大,性能的提升也越高,而且以这种趋势来看,使用更大的模型(如T5-11B)将会取得更大的提升。
表9和表10则分别在单轮、多轮数据集上对提出的5大类关系分别进行了消融对比,可以看到,这些关系都对最终结果有一定贡献。
6 总结
本文提出了RASAT,一个关系感知自我注意增强T5模型,用于文本到SQL的生成。与以往的工作相比,RASAT可以在顺序T5模型中引入各种结构关系。不同于更常见的微调原始模型或使用提示调优的方法,本文提出增强编码器中的自我注意模块,并向模型引入新的参数,同时仍然能够利用预先训练的权重。在三个最常见的文本到SQL基准测试中,RASAT取得了最先进的性能,特别是在执行精度方面。
附录
参数量
表11展示了RASAT相比于T5-3B的参数量变化,可以看到,增加非常少(小于0.01%),却带来了极大的提升,这也说明了所设计模型的优越性。
案例研究
同时,作者也给出了几个Case study的例子,
可以看到,RASAT相比于原始的T5-3B,对于上下文的利用更加好。