• 论文阅读【2】PreQR: Pre-training Representation for SQL Understanding


    请添加图片描述

    对query的编码方式会影响下游基数估计的准确性,以往的one-hot编码方式无法捕捉复杂语义环境,例如查询的结构,数据库模式的定义和列的分布差异。为了解决这个问题,作者提出了一个新的预训练SQL表示模型。它将语言表示方法扩展到SQL查询。我们提出了一个自动机来编码查询结构,并应用一个图神经网络来编码以查询为条件的数据库模式信息。然后,通过采用注意力机制,建立了一个新的SQL编码器,以支持即时的查询感知模式链接。在真实数据集上的实验结果表明,用我们的查询表示法取代单次编码可以显著提高现有基于学习的模型在几个数据库任务上的性能。

    问题描述

    数据库随着业务的复杂变得功能更加多样,其中基数估计,连接顺序选择,开销预估和参数调整成为数据库中最为重要的功能。在这些任务中不可避免的需要对SQL查询指令进行编码。

    现有方法与不足

    现有的编码方式多基于one-hot encoding,例如MSCN使用one-hot编码方式对query进行编码,并训练回归模型预测基数。但这种基于one-hot的编码方式有其内在的劣势。

    1. one-hot编码简单地将查询中子句编码连接在一起,忽略了结构信息。
    2. 表和列的编码使用无上下文模式的独立编码,忽略数据库模式的定义
    3. 查询中所有数值都被规约到一个统一的范围,忽略了列与列之间的分布差异

    本篇论文核心观点

    针对上述问题,论文指出在对SQL进行编码时要引入数据的schema信息和查询的结构信息。本文提出PreQR (pre-training Query Representation)是一种不基于one-hot,而主要利用基于自动机的SQL编码方式,在表示了SQL内在信息的同时,利用BERT进一步向SQL编码中引入数据库schema的信息。该预训练模型只需对一个数据库训练一次,并且可以利用在多个下游任务中。

    本篇论文提出方法操作

    图3展示了PreQR的结构,其中包含了3个模块:Input Embedding, Query-aware SchemaSQLBERT
    请添加图片描述

    Input Embedding

    Input Embedding生成了一个查询SQL的初始编码,这里将3个编码的结果拼接在一起:token embedding, sql state embeddingposition embedding。这里的sql state embedding是一个创新点,它保证结构相近的SQL会得到相似的state embedding

    ❗️消融实验中对比了PreQRNA(没有自动机编码)PreQRNT(没有 T r m g Trm_g Trmg) BERT(没有自动编码机和 T r m g Trm_g Trmg)三种方法的结果,发现PreQR比PreQRNA和BERT的结果都好,从实验上证明了自动机编码可以学到query的结构信息,相似的SQL结构经过sql state embedding后会得到相近的表示。与one-hot编码相比,使用自动机编码则可以包含结构信息,因而对实验结果有利。

    Query-Aware Schema

    Query-aware Schema生成了一个schema的向量表示,在这一环节中生成的schema表示考虑了query,因而被称作Query-aware。具体的实现包括:Schema2Graph将模型结构化成一个图,然后利用query对图进行剪枝。剪枝结束后对子图进行图嵌入操作,最终得到一个schema的向量表示。

    SQLBERT

    SQLBERT的输入为Input EmbeddingQuery-aware Schema2个部分的输出,即query的编码和schema的编码。

    ❗️PreQR的实验结果明显好于PreQRNT,这说明SQLBERT中引入的schema信息有效。另一个有趣的结果表明:PreQRNA比PreQRNT实验结果好,说明了query的结构信息和schema的信息相比,schemea的信息更加重要关键。

    如何进行预训练

    预训练的方法与BERT的方式相同,使用Masked LMNext Sentence Prediction(NSP)2个任务进行训练1

    Masked LM

    先按照一定规则对sentence进行mask操作,然后训练模型去预测mask住了哪些token

    如何进行fine-tune

    使用下游任务进行fine-tune,本篇论文的下游任务包括Query Clustering,Estimation task、SQL-to-TextGeneration这三个。

    为什么有效

    消融实验中验证了SQLBERT的有效性:PreQR的实验结果明显好于PreQRNT,这说明SQLBERT中引入的schema信息有效。另一个有趣的结果表明:PreQRNA比PreQRNT实验结果好,说明了query的结构信息和schema的信息相比,schema的信息更加重要关键。


    1. 下列代码参考GitHub: https://github.com/codertimo/BERT-pytorch ↩︎

  • 相关阅读:
    车身板(ABS)市场现状及未来发展趋势分析
    Mybatis-Plus之模块集成和分层改造
    没有可用软件包 docker-ce。 错误:无须任何处理
    liteos连接器脚本隐藏的指针问题
    国际版阿里云/腾讯云:弹性高性能计算E-HPC入门概述
    Lec14 File systems 笔记
    uni-app:实现picker下拉列表的默认值设置
    CFdiv2-Chip Move-(线性dp+状态枚举方式)
    [要素察觉]C语言五讲:指针
    gitlab 合并分支
  • 原文地址:https://blog.csdn.net/kullollo/article/details/125477934