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