阅读text2sql论文《RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers》
提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 摘要(Abstract)
- 一、介紹(Introduction)
- 二、相關(guān)工作(Related work)
- 三、模型架構(gòu)(Model Architecture)
- 1.關(guān)系感知的自注意力機(jī)制(Relation-Aware Self-Attention
- 2.RAT-SQL
- 3.實(shí)驗(yàn)(Experiment)
- 4.消融實(shí)驗(yàn)(Ablation Study)
- 5.結(jié)論(Conclusion)
- 總結(jié)
前言
本人為研一菜雞,如果博客中有任何錯(cuò)誤或疏漏,歡迎路過的大佬們批評(píng)指正,也希望能夠和同樣是這個(gè)方向的小伙伴一起交流學(xué)習(xí)~
本文收錄于ACL 2020,至今在Spider的leaderboard前列還能看到RAT-SQL的各類變種,可見這個(gè)模型確實(shí)有不少可取之處。在讀本文之前,我還先閱讀了文中提到的《Global Reasoning over Database Structures for Text-to-SQL Parsing》(Bogin et al., 2019b) ,有空也會(huì)整理出來,便于對(duì)比學(xué)習(xí)。
摘要(Abstract)
本文提出了一個(gè)通用的架構(gòu),基于關(guān)系感知的自注意力機(jī)制(relation-aware self-attention mechanism),能夠有效解決T2S任務(wù)中兩大難題:模式編碼(schema encoding)和模式鏈接(schema linking)。RAT-SQL在Spider數(shù)據(jù)集效果顯著,將EM指標(biāo)提升到了57.2%(領(lǐng)先后一名8.7%個(gè)百分點(diǎn));在結(jié)合Bert后,其以65.6%的表現(xiàn)成為了當(dāng)時(shí)的SOTA模型。
開源代碼地址:https://github.com/Microsoft/rat-sql.
一、介紹(Introduction)
首先指出當(dāng)下最具權(quán)威性和挑戰(zhàn)性的兩個(gè)benchmark dataset:WikiSQL和Spider。兩者均需要對(duì)不可見的數(shù)據(jù)庫模式建模,因?yàn)樵谶@兩個(gè)數(shù)據(jù)集上,SQL請(qǐng)求可能涉及多個(gè)不同的表,并且測(cè)試集和訓(xùn)練集并不重疊。
而模式泛化的困難之處在于:
(1)需要對(duì)數(shù)據(jù)庫模式選擇合適的建模方式,因?yàn)樽罱K生成的SQL查詢可能會(huì)包含給定的表或列;
(2)對(duì)模式的表征還應(yīng)該包括一些數(shù)據(jù)庫元數(shù)據(jù)信息,例如主鍵、外鍵、屬性類型等;
(3)模型應(yīng)當(dāng)能識(shí)別問題和模式的對(duì)齊關(guān)系。
其中前兩者屬于模式編碼(schema encoding)的內(nèi)容,最后一個(gè)屬于模式鏈接(schema linking)的內(nèi)容。
而模式鏈接需要同時(shí)結(jié)合已知的模式關(guān)系(元數(shù)據(jù)信息)和問題的上下文信息,才能避免產(chǎn)生歧義性(ambiguity),目前的工作主要集中在模式編碼上,關(guān)于模式鏈接的還不是很多。
碎碎念亂入:在此后的研究中,schema linking已經(jīng)得到了應(yīng)有的重視。因此關(guān)于schema linking的工作也需要重點(diǎn)關(guān)注~
之前的基于GNN的工作往往只是簡(jiǎn)單地將預(yù)先定義的關(guān)系(主外鍵等)作為邊,一方面缺乏對(duì)模式和問題關(guān)系的建模,另一方面限制了信息的有效傳播。而RAT-SQL則提出了一種關(guān)系感知的自注意力機(jī)制,將作用在數(shù)據(jù)庫實(shí)體和問題上的global reasoning和作用在預(yù)定義的數(shù)據(jù)庫關(guān)系上的structured reasoning有機(jī)結(jié)合起來,從而大幅提升模型性能。
二、相關(guān)工作(Related work)
啊這部分先暫時(shí)鴿一下,先看下面看不懂的那堆。。
三、模型架構(gòu)(Model Architecture)
1.關(guān)系感知的自注意力機(jī)制(Relation-Aware Self-Attention
這種機(jī)制的作用是:在對(duì)預(yù)先定義的關(guān)系進(jìn)行編碼的同時(shí),誘導(dǎo)模型自主捕捉序列元素之間的“soft relation”。首先,論文簡(jiǎn)單展示了一下Transformer中的傳統(tǒng)自注意力機(jī)制公式(Vaswani et al. (2017),),大概長(zhǎng)下面這個(gè)樣子:
自注意力機(jī)制可以自主學(xué)習(xí)到任意兩個(gè)輸入元素 XiX_iXi? 和 XjX_jXj? 之間的關(guān)系,并且用注意力分?jǐn)?shù) aij(h)a_{ij}^{(h)}aij(h)? 體現(xiàn)關(guān)系的強(qiáng)弱。但是在許多任務(wù)中(包括T2S任務(wù))我們往往會(huì)傾向于去關(guān)注那些預(yù)定義的關(guān)系特征,導(dǎo)致最終建立的模型具有偏向性。而將注意力計(jì)算限制在已知關(guān)系的“hard edges”上的方式,會(huì)影響模型識(shí)別新關(guān)系的能力。而RAT-SQL通過將預(yù)定義關(guān)系的表征添加到注意力機(jī)制當(dāng)中,提供了一種和encoder通信的方式。
在傳統(tǒng)自注意力機(jī)制的基礎(chǔ)上,可以通過進(jìn)一步融入相對(duì)位置信息(Shaw et al. (2018)),加入已知的關(guān)系定義。用相對(duì)位置信息替代絕對(duì)位置,可以避免破壞兩個(gè)間隔較遠(yuǎn)向量的相似度。
考慮R個(gè)關(guān)系特征,二元的關(guān)系 RS?X?X(1≤s≤R)R^{S}? X * X (1≤ s ≤ R)RS?X?X(1≤s≤R)。RAT將每條邊的現(xiàn)有特征表示為 rijK=rijV=Concat(ρij(1),...,ρij(R))r_{ij}^K=r_{ij}^V=Concat (ρ_{ij}^{(1)}, . . . , ρ_{ij}^{(R)})rijK?=rijV?=Concat(ρij(1)?,...,ρij(R)?),其中每個(gè)ρij(s)ρ_{ij}^{(s)}ρij(s)?在對(duì)應(yīng)邊的關(guān)系成立時(shí),為經(jīng)過訓(xùn)練后得到的關(guān)系R(s)R^{(s)}R(s)的嵌入表征;否則為一個(gè)相應(yīng)尺寸的零向量。
2.RAT-SQL
-
問題定義:
S=<C,T>S=<C,T>S=<C,T>:即數(shù)據(jù)庫模式包括表名和列名兩部分,每個(gè)表內(nèi)含多個(gè)列,每個(gè)表名和列名均包含多個(gè)單詞(具體的懶得搬運(yùn)了,和其他論文一樣hhh)
PPP: 目標(biāo)程序被視為一棵抽象語法樹
MetadataMetadataMetadata:元數(shù)據(jù)信息,包括主鍵(primary keys)、外鍵(foreign keys)和屬性數(shù)據(jù)類型(τ∈{number,text}τ ∈ \{number, text\}τ∈{number,text})
G=<V,E>G = <V, E>G=<V,E>:用一個(gè)有向圖來表示數(shù)據(jù)庫模式,其中V=C∪TV=C∪TV=C∪T,根據(jù)它們的名字里包含的單詞來編碼(其中列還要在前面加上數(shù)據(jù)類型);?\epsilon? 表示預(yù)先定義的關(guān)系,具體分類見下圖:
根據(jù)以上定義建立的圖樣例如下所示:
但是上述這種建圖方式,還沒有融合問題的上下文信息,因此不能很好地捕捉unseen schema。因此文中又提出了一種融合問題上下文的模式圖 GQ=<VQ,EQ>G_Q = <V_Q, E_Q>GQ?=<VQ?,EQ?>,其中GQ=V∪Q=C∪T∪QG_Q=V∪Q=C∪T∪QGQ?=V∪Q=C∪T∪Q,即將問題中的單詞表征也加入到結(jié)點(diǎn)當(dāng)中; EQ=E∪EQ?SE_Q =E∪E_{Q?S}EQ?=E∪EQ?S?,即加入了新定義的問題和模式的關(guān)系。
InputInputInput:模型輸入,即融合了數(shù)據(jù)庫模式、問題以及它們關(guān)系的圖GQG_QGQ?
OutputOutputOutput:模型輸出,一個(gè)概率分布Pr(P∣GQ)P_r(P | G_Q)Pr?(P∣GQ?) -
關(guān)系感知的輸入編碼(Relation-Aware Input Encoding)
本文采用Glove預(yù)訓(xùn)練的詞嵌入編碼和一個(gè)Bi-LSTM網(wǎng)絡(luò)來生成模式中表和列的初始表征ciinit,tiinitc_i^{init},t_i^{init}ciinit?,tiinit?,同時(shí)采用另一個(gè)Bi-LSTM網(wǎng)絡(luò)來生成問題的初始表征qiinitq_i^{init}qiinit?。注意這里的三類結(jié)點(diǎn)雖然沒有顯式地將它們的關(guān)系融入編碼,但實(shí)際上它們也并非完全獨(dú)立。此外,也可以直接利用預(yù)訓(xùn)練模型Bert生成各結(jié)點(diǎn)的初始表征。
采用一個(gè)關(guān)系感知的自注意力模型來獲取三者的聯(lián)合表示,首先輸入XXX 就是把所有的結(jié)點(diǎn)表征拼接起來,整個(gè)encoder包括N個(gè)堆疊起來的關(guān)系感知自注意力層(各層參數(shù)不共享)。
通過自注意力層,可以不斷更新問題和模式的上下文關(guān)系。但是正如前文提到的,這種方式會(huì)使得模型偏向于那些預(yù)先定義好的關(guān)系。而論文中通過提出一組預(yù)定義關(guān)系類型集合,可以有效解決模式嵌入和鏈接挑戰(zhàn)的方式,而EQ?SE_{Q?S}EQ?S?正是由新產(chǎn)生的問題和模式之間關(guān)系構(gòu)成的。這些關(guān)系類型中的大多數(shù)能應(yīng)對(duì)模式鏈接問題,而文中也另外定義了一些附加邊用于解決模式嵌入問題。 -
模式鏈接(Schema linking)
模式鏈接旨在將問題當(dāng)中提到的表/列/值和數(shù)據(jù)庫模式中的內(nèi)容對(duì)應(yīng)起來,因此可以分為兩類:名稱匹配(matching names)和值匹配(matching values):
(1)名稱匹配:指問題當(dāng)中表名或列名的部分或完全匹配。最簡(jiǎn)單的匹配原則就是文本的一致性,但是實(shí)驗(yàn)中的用vanilla self-attention生成的表征對(duì)文本的匹配并不敏感(或許是由于引入了位置信息導(dǎo)致后續(xù)的learned embedding產(chǎn)生了差異?),因此論文采用顯式的RAT關(guān)系來標(biāo)識(shí)基于名稱的鏈接關(guān)系。
具體來說,對(duì)于n-grams(n=1~5)產(chǎn)生的子序列,需要判斷:(a)其是否能夠和一個(gè)表名/列名完全匹配(exact match);(b)其是否為一個(gè)表名/列名的子串(partial match)。然后對(duì)于任意的 xi∈Q,xj∈Sx_i ∈ Q, x_j ∈ Sxi?∈Q,xj?∈S,可以將關(guān)系rij∈EQ?Sr_{ij}∈E_{Q?S}rij?∈EQ?S?分為以下幾類:
QUESTION?COLUMN?M,QUESTION?TABLE?M,COLUMN?QUESTION?M,TABLE?QUESTION?MQUESTION-COLUMN-M, QUESTION-TABLE-M, COLUMN-QUESTION-M,TABLE-QUESTION-MQUESTION?COLUMN?M,QUESTION?TABLE?M,COLUMN?QUESTION?M,TABLE?QUESTION?M
其中M可進(jìn)一步分為完全匹配(EXACT MATCH)、部分匹配(PARTICAL MATCH)和不匹配(NOT MATCH)。
(2)值匹配:指問題當(dāng)中出現(xiàn)的值和數(shù)據(jù)庫內(nèi)容中的單元格值的匹配,這樣的值往往會(huì)出現(xiàn)在目標(biāo)SQL查詢中。例如:在前文給的例子“For the cars with 4 cylinders, which model has the largest horsepower?”中,匹配的列名為“cylinders” “model” 和“horsepower” ,而“cars”可以對(duì)應(yīng)到“cars_data”和“cars_name”這兩個(gè)表,對(duì)應(yīng)的值value應(yīng)該為4。但是我們其實(shí)可以發(fā)現(xiàn)一些問題:例如如何能判斷這里的“cars”不會(huì)對(duì)應(yīng)到同樣包含相同單詞的“cars_maker?"當(dāng)列名為不完全匹配或者采用同義詞時(shí),如何能夠?qū)栴}中出現(xiàn)的value對(duì)應(yīng)到屬性列上?故我們一方面需要整合問題的上下文信息,另一方面需要一定的背景知識(shí)(如數(shù)據(jù)庫的內(nèi)容本身)。
當(dāng)然對(duì)數(shù)據(jù)庫內(nèi)容的使用會(huì)涉及到隱私權(quán)限和處理速度等問題。而RAT框架允許我們將此處理外包給數(shù)據(jù)庫引擎,以使用潛在的基于value的鏈接來增強(qiáng)GQG_QGQ?,而無需將模型本身暴露在數(shù)據(jù)面前。特別地,文中定義了一類新的COLUMN-VALUE關(guān)系,即若問題當(dāng)中的詞 qiq_iqi? 如果出現(xiàn)在屬性列 cjc_jcj? 當(dāng)中,則兩者之間存在上述聯(lián)系。這里的定義和論文《Bridging textual and tabular data for cross-domain Text-to-SQL semantic parsing》 當(dāng)中提出的錨文本(anchor texts)感覺有異曲同工之妙,都是通過某種方式建立value和對(duì)應(yīng)column的聯(lián)系。BRIDGE模型中只允許獲取每個(gè)屬性列的取值列表(picklists),而本文中沒有詳細(xì)闡述(從文中提到檢索速度大大提升這一點(diǎn),可以猜測(cè)也是相似的設(shè)定)。
(3)基于記憶的模式對(duì)齊矩陣(Memory-Schema Alignment Matrix)
這里需要先補(bǔ)充一部分指針生成網(wǎng)絡(luò)的內(nèi)容。參考:https://zhuanlan.zhihu.com/p/106171651和https://cloud.tencent.com/developer/article/1116983
指針生成網(wǎng)絡(luò)(Pointer-Generator Networks)本質(zhì)上是對(duì)文本的兩種生成方式,即抽取式和生成式的一種融合,能夠在保留原有信息的同時(shí),有效地避免不斷重復(fù)。
使用relation-aware的attention機(jī)制作為指針,這里的對(duì)齊矩陣其實(shí)形式上仍舊類似于計(jì)算注意力分權(quán),同時(shí)對(duì)齊具有某種稀疏性?(這里的指針應(yīng)該和我理解的有一些出入)
- 解碼器(Decoder)
這部分內(nèi)容直接使用了論文《A Syntactic Neural Modelfor General-Purpose Code Generation》中的設(shè)計(jì)。簡(jiǎn)單來說就是decoder可以有三種動(dòng)作:第一個(gè)是將最近生成的結(jié)點(diǎn)添加到一條新的語法規(guī)則中;第二個(gè)是從數(shù)據(jù)庫模式中挑選一個(gè)列名生成結(jié)點(diǎn);第三個(gè)是從數(shù)據(jù)庫模式中挑選一個(gè)表名生成結(jié)點(diǎn)(這篇論文也先鴿著好了)。
參考博客:https://blog.csdn.net/ting0922/article/details/106158693
3.實(shí)驗(yàn)(Experiment)
RAT模型與Spider榜單上其他模型的Accuracy對(duì)比如下圖所示。可以看出模型比一些加了Bert的模型效果還要好,當(dāng)然模型加上Bert強(qiáng)化后性能也提升了不少。
作者還比較了在Spider不同難度的樣本分類上的實(shí)驗(yàn)結(jié)果,發(fā)現(xiàn)難度的提升對(duì)模型的擬合能力確實(shí)影響不小,但Bert的運(yùn)用有助于緩解這一問題。
4.消融實(shí)驗(yàn)(Ablation Study)
5.結(jié)論(Conclusion)
在T2S的研究領(lǐng)域,工作仍然是圍繞如何更好地表征數(shù)據(jù)庫模式和如何更有效地鏈接模式和問題中提到的表/列名。即為了更好地編碼和使用數(shù)據(jù)庫中的表/列信息,模型必須要整合問題上下文信息,推理出這些表列在其中的角色。在本文的工作中,作者提出了一個(gè)結(jié)構(gòu)化的模型框架,可以有效解決模式編碼和模式鏈接兩大難題。得益于關(guān)系感知的自注意力機(jī)制,模型可以基于模型和問題兩者間的關(guān)系和模式的內(nèi)部關(guān)系,綜合性地學(xué)習(xí)模型與問題的表征。
實(shí)驗(yàn)表明,RAT模型在T2S任務(wù)中能夠取得SOTA的成績(jī)。即它提供了一個(gè)全新的方案,能夠?qū)⒒谀J筋A(yù)先定義的“硬關(guān)系”(即和主鍵外鍵相關(guān)的一些關(guān)系,見之前的分類)和經(jīng)由自注意力機(jī)制推導(dǎo)出的“軟關(guān)系”融合到統(tǒng)一個(gè)編碼架構(gòu)當(dāng)中。在輸入含有預(yù)定義架構(gòu)的T2S任務(wù)中,這樣的表征學(xué)習(xí)無疑是有益的。
總結(jié)
這篇文章勉強(qiáng)讀完啦,文中感覺有很多細(xì)節(jié)性的東西仍舊是模棱兩可,后續(xù)可能會(huì)結(jié)合源碼繼續(xù)學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的阅读text2sql论文《RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曾经遇到的线上问题
- 下一篇: mysql1044什么意思_MySQL: