重磅推薦專欄: 《大模型AIGC》;《課程大綱》
本專欄致力于探索和討論當今最前沿的技術(shù)趨勢和應用領域,包括但不限于ChatGPT和Stable Diffusion等。我們將深入研究大型模型的開發(fā)和應用,以及與之相關(guān)的人工智能生成內(nèi)容(AIGC)技術(shù)。通過深入的技術(shù)解析和實踐經(jīng)驗分享,旨在幫助讀者更好地理解和應用這些領域的最新進展
論文:https://arxiv.org/abs/2107.07653
代碼:https://github.com/microsoft/Table-Pretraining
通過利用大規(guī)模非結(jié)構(gòu)化文本數(shù)據(jù),語言模型的研究取得了巨大的成功。然而,由于缺乏大規(guī)模、高質(zhì)量的表格數(shù)據(jù),對結(jié)構(gòu)化表格數(shù)據(jù)進行預訓練仍然是一個挑戰(zhàn)。在本文中,作者提出TAPEX來證明表預訓練可以通過在合成語料庫上學習神經(jīng)SQL執(zhí)行器來實現(xiàn),這是通過自動合成可執(zhí)行的SQL查詢及其執(zhí)行輸出來獲得的。TAPEX通過指導語言模型在多樣化、大規(guī)模和高質(zhì)量的合成語料庫上模擬SQL執(zhí)行器,從而解決了數(shù)據(jù)稀缺性的挑戰(zhàn)。作者在四個基準數(shù)據(jù)集上評估了TAPEX。實驗結(jié)果表明,TAPEX比以前的表前訓練方法有很大的優(yōu)勢,并且都取得了新的最先進的結(jié)果。
1. 概述
在本文中,作者提出了一種新的以執(zhí)行查詢?yōu)楹诵?/strong>的表格預訓練方法——TAPEX(TAble Pretraining via EXecution)。通過逼近表上的正式語言的結(jié)構(gòu)推理過程,實現(xiàn)了高效的表預訓練。結(jié)構(gòu)性推理過程與表的可執(zhí)行性相關(guān)聯(lián),即表本身就能夠支持各種推理操作(例如,對表中的一列進行求和)。特別是,TAPEX通過對語言模型(LM)進行預訓練來模擬表上的SQL執(zhí)行引擎的行為,來近似SQL查詢的結(jié)構(gòu)性推理過程。
如圖1-1所示,通過對表進行采樣可執(zhí)行的SQL查詢,TAPEX首先合成了一個大規(guī)模的訓練前語料庫。然后,它繼續(xù)預訓練一個語言模型,以輸出這些SQL查詢的執(zhí)行結(jié)果,這些查詢從SQL執(zhí)行引擎獲得。 由于SQL查詢的多樣性,可以很容易地合成一個多樣化、大規(guī)模、高質(zhì)量的訓練前語料庫。
2. 對下游任務的微調(diào)
模型整體是一個BART結(jié)構(gòu)。如圖2-1所示,輸入包含一個NL句子及其相應的表。
編碼NL句子相對簡單,而編碼表并不簡單,因為它展示了底層結(jié)構(gòu)。在實踐中,作者將表壓平成一個序列,以便將它可以直接輸入到模型中。通過插入幾個特殊的標記來表示表的邊界,可以將一個扁平的表格表示為:
T
?
=
[
H
E
A
D
]
,
c
1
,
?
?
?
,
c
N
,
[
R
O
W
]
,
1
,
r
1
,
[
R
O
W
]
,
2
,
r
2
,
?
?
?
,
r
M
T^? = [HEAD], c_1, · · ·, c_N , [ROW], 1, r_1, [ROW], 2, r_2, · · ·, r_M
T?=[HEAD],c1?,???,cN?,[ROW],1,r1?,[ROW],2,r2?,???,rM?
這里[HEAD]和[ROW]是特殊標記,分別表示表頭和行的區(qū)域,[ROW]之后的數(shù)字用于表示行索引。注意:作者還使用“豎條|”在不同的列中分離標題或單元格。最后,作者在扁平表 T ? T^? T?拼接上NL句子x作為前綴,并將它們輸入模型編碼器。
3. 通過執(zhí)行器進行表格預訓練
為了設計表的預訓練的有效任務,作者認為關(guān)鍵在于表的可執(zhí)行性。也就是說,結(jié)構(gòu)化表使我們能夠通過諸如SQL查詢等編程語言對它們執(zhí)行離散操作,而非結(jié)構(gòu)化文本則不能。考慮到這一點,TAPEX采用SQL執(zhí)行作為唯一的訓練前任務。如圖3-1所示,TAPEX的預訓練與上述生成式微調(diào)的過程相似。
給定一個可執(zhí)行的SQL查詢和一個表T,TAPEX首先將SQL query 和打平的表
T
?
T^?
T?連接起來,以饋入模型編碼器。然后,它通過一個現(xiàn)成的SQL執(zhí)行器(例如,MySQL)獲得查詢的執(zhí)行結(jié)果,作為模型解碼器的監(jiān)督。直觀地說,預訓練過程是為了讓一個語言模型成為一個神經(jīng)SQL執(zhí)行器。作者認為,如果一個語言模型可以預先訓練,可靠地“執(zhí)行”SQL查詢并產(chǎn)生正確的結(jié)果,它應該對表有深入的理解。因此,執(zhí)行預訓練任務可以更有效地理解表和推理表。
4. 實踐
你可以在 ?? Transformers 中嘗試經(jīng)過訓練的神經(jīng) SQL 執(zhí)行器,如下所示:
from transformers import TapexTokenizer, BartForConditionalGeneration
import pandas as pd
tokenizer = TapexTokenizer.from_pretrained("microsoft/tapex-large-sql-execution")
model = BartForConditionalGeneration.from_pretrained("microsoft/tapex-large-sql-execution")
data = {
"year": [1896, 1900, 1904, 2004, 2008, 2012],
"city": ["athens", "paris", "st. louis", "athens", "beijing", "london"]
}
table = pd.DataFrame.from_dict(data)
# tapex accepts uncased input since it is pre-trained on the uncased corpus
query = "select year where city = beijing"
encoding = tokenizer(table=table, query=query, return_tensors="pt")
outputs = model.generate(**encoding)
print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
# ['2008']
5. 實驗與分析
5.1 實驗結(jié)果
作者在四個基準數(shù)據(jù)集上評估( TAPEX,包括WikiSQL(Weak)、WikiTableQuestions、SQA和TabFact)。
如圖5-1的實驗結(jié)果表明,TAPEX 大大優(yōu)于以前的表格預訓練方法,并且在所有這些方法上都取得了SOTA結(jié)果。
5.2 與以前的表預訓練對比
表預訓練的最早工作(Google Research 的 TAPAS 和Meta AI 的TaBERT)表明,收集更多領域自適應(domain-adaptive)數(shù)據(jù)可以提高下游性能。然而,這些以前的工作主要采用通用(general-purpose)的預訓練任務,例如語言建?;蚱渥凅w。TAPEX探索了一條不同的路徑,通過犧牲預訓練的自然性來獲得領域自適應的預訓練任務,即SQL執(zhí)行。BERT、TAPAS/TaBERT 和 TAPEX 的比較如下圖5-2所示:
作者認為 SQL 執(zhí)行任務更接近于下游的表問答任務,尤其是從結(jié)構(gòu)推理能力的角度來看。假設你面臨一個 SQL 查詢 SELECT City ORDER BY Year 和一個自然問題Sort all cities by year。SQL查詢和問題所需的推理路徑類似,只是SQL比自然語言更死板一些。如果一個語言模型可以被預訓練以可靠地“執(zhí)行”SQL 查詢并產(chǎn)生正確的結(jié)果,它應該對具有類似意圖的自然語言有深刻的理解。
效率怎么樣?這樣的預訓練方式和之前的預訓練相比效率如何?下圖5-3給出了答案:
與之前的表格預訓練方法TaBERT相比,TAPEX僅使用2%的預訓練語料就可以得到2%的提升,實現(xiàn)了近50倍的加速!使用更大的預訓練語料庫(例如,500 萬個<SQL, Table, Execution Result> 對),在下游數(shù)據(jù)集上的性能會更好。
5.3 通過預訓練的SQL執(zhí)行器
為了了解TAPEX在預訓練后SQL執(zhí)行效果如何,作者分析了它在未見過表上近20,000個SQL查詢上的表現(xiàn)??偟膩碚f,SQL的執(zhí)行精度相對較高。如圖5-4所示,,TAPEX正確地“執(zhí)行”了89.6%的SQL Select操作查詢:
特別是,TAPEX在過 Filter, Aggregate 和 Superlative 操作符上表現(xiàn)得更好,這表明它在表單元格選擇和表聚合方面具有很高的準確性。對于Arithmetic 和 Comparative操作,TAPEX也做得很好,展示了它在表上的數(shù)值推理能力。綜上所述,TAPEX已經(jīng)學會了成為一個具有良好的選擇、聚合和數(shù)值能力的神經(jīng)SQL執(zhí)行器
5.4 通過預訓練對表的理解
為了深入了解TAPEX是否有助于下游任務更好地理解表,作者在采樣的WIKITABLE QUESTIONS 樣本上可視化和分析了TAPEX的自我注意(沒有微調(diào))。如圖5-4所示,TAPEX似乎更關(guān)注單元格對應的行和頭。
以圖5-5為例,注意權(quán)重意味著“adrian lewis”與第一列“player”和整個第三行密切相關(guān),這是“adrian lewis”在結(jié)構(gòu)化表中的位置。
5.5 通過預訓練對表的推理
為了了解TAPEX是否可以改進表推理,作者比較了TAPEX和BART在500個隨機選擇的問題上的性能,并在圖5-6中手動分析了它們:
可以發(fā)現(xiàn),TAPEX顯著提高了所有操作符的性能,這意味著它確實增強了BART對文本和表的聯(lián)合推理能力。
5.5 局限性
該方法的第一個限制是,它不能理想地處理大型表。如上所述,使用表的扁平化技術(shù)來表示一個表。當表相對較小時,它工作得很好,但當表太大而無法容納內(nèi)存時,它就變得不可行了。在實踐中,可以通過刪除一些不相關(guān)的行或列來壓縮表,但這將降低下游任務的表現(xiàn)。文章來源:http://www.zghlxwxcb.cn/news/detail-446635.html
第二個限制是,NLP2SQL的任務不能從該表預訓練中獲益。作者嘗試將TAPEX應用于一個NLP2SQL的任務,其中輸入保持不變,輸出轉(zhuǎn)換為SQL。然而,TAPEX并沒有顯示出比BART相比的顯著優(yōu)勢。作者將此歸因于兩個因素:文章來源地址http://www.zghlxwxcb.cn/news/detail-446635.html
- 首先,預訓練的合成語料庫對其沒有貢獻,這是語義解析最重要的因素之一;
- 其次,TAPEX學習到的表推理能力(例如,聚合)可能不是SQL生成所必需的。例如,一個模型仍然可以將NL短語“sum”理解為聚合函數(shù)“sum”,即使它不知道“sum”的數(shù)學含義。
到了這里,關(guān)于【微軟】【ICLR 2022】TAPEX:通過學習神經(jīng) SQL 執(zhí)行器進行表預訓練的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!