Efficiente Pre-allenamento delle Tabelle senza Dati Reali Un’introduzione a TAPEX

TAPEX Pre-allenamento efficiente delle Tabelle senza Dati Reali

Negli ultimi anni, il pre-training del modello linguistico ha ottenuto grandi successi sfruttando dati testuali su larga scala. Utilizzando compiti di pre-training come l’addestramento del linguaggio mascherato, questi modelli hanno dimostrato prestazioni sorprendenti su diversi compiti successivi. Tuttavia, il divario drammatico tra il compito di pre-training (ad esempio, il linguaggio di modellazione) e il compito successivo (ad esempio, la risposta alle domande sulle tabelle) rende il pre-training esistente non efficiente quanto basta. Nella pratica, spesso abbiamo bisogno di una quantità estremamente grande di dati di pre-training per ottenere un miglioramento promettente, anche per il pre-training adattativo al dominio. Come potremmo progettare un compito di pre-training per colmare il divario e quindi accelerare il pre-training?

Panoramica

In “TAPEX: Table Pre-training via Learning a Neural SQL Executor”, esploriamo l’uso di dati sintetici come sostituto dei dati reali durante il pre-training e ne dimostriamo la potenza con TAPEX (Table Pre-training via Execution) come esempio. In TAPEX, mostriamo che il pre-training delle tabelle può essere realizzato apprendendo un esecutore SQL neurale su un corpus sintetico.

Nota: [Table] è un segnaposto per la tabella fornita dall’utente nell’input.

Come mostrato nella figura sopra, campionando sistematicamente query SQL eseguibili e i loro risultati di esecuzione su tabelle, TAPEX sintetizza prima un corpus di pre-training sintetico e non naturale. Successivamente, continua a pre-trainare un modello di linguaggio (ad esempio, BART) per produrre i risultati di esecuzione delle query SQL, che imita il processo di un esecutore SQL neurale.

Pre-training

La figura seguente illustra il processo di pre-training. Ad ogni passo, prendiamo una tabella dal web. L’esempio di tabella riguarda i Giochi Olimpici. Possiamo quindi campionare una query SQL eseguibile SELECT City WHERE Country = France ORDER BY Year ASC LIMIT 1. Tramite un esecutore SQL pronto all’uso (ad esempio, MySQL), possiamo ottenere il risultato dell’esecuzione della query Paris. Allo stesso modo, alimentando la concatenazione della query SQL e la tabella appiattita al modello (ad esempio, l’encoder BART) come input, il risultato dell’esecuzione serve come supervisione per il modello (ad esempio, il decoder BART) come output.

Perché utilizzare programmi come le query SQL anziché frasi in linguaggio naturale come fonte per il pre-training? Il più grande vantaggio è che la diversità e la scala dei programmi possono essere garantite in modo sistematico, rispetto a frasi in linguaggio naturale incontrollabili. Pertanto, possiamo facilmente sintetizzare un corpus di pre-training diversificato, su larga scala e di alta qualità campionando query SQL.

Puoi provare l’esecutore SQL neurale addestrato con 🤗 Transformers come segue:

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 accetta input senza distinzione tra maiuscole e minuscole in quanto è stato pre-addestrato sul corpus senza distinzione tra maiuscole e minuscole
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']

Fine-tuning

Durante il fine-tuning, alimentiamo la concatenazione della domanda in linguaggio naturale e della tabella appiattita al modello come input, la risposta etichettata dagli annotatori serve come supervisione per il modello come output. Vuoi fare il fine-tuning di TAPEX da solo? Puoi guardare lo script di fine-tuning qui , che è stato ufficialmente integrato in 🤗 Transformers 4.19.0!

E finora, tutti i modelli TAPEX disponibili hanno widget interattivi supportati ufficialmente da Huggingface! Puoi provare a rispondere a qualche domanda come segue.

Esperimenti

Valutiamo TAPEX su quattro set di dati di benchmark, tra cui WikiSQL (Weak), WikiTableQuestions, SQA e TabFact. I primi tre set di dati riguardano la risposta alle domande sulle tabelle, mentre l’ultimo riguarda la verifica dei fatti sulle tabelle, entrambi richiedono un ragionamento congiunto su tabelle e linguaggio naturale. Di seguito sono riportati alcuni esempi dal set di dati più impegnativo, WikiTableQuestions:

I risultati sperimentali dimostrano che TAPEX supera di gran lunga gli approcci di pre-training delle tabelle precedenti e ⭐raggiunge nuovi risultati state-of-the-art su tutti⭐. Questo include miglioramenti sull’accuratezza di denotazione WikiSQL a supervisione debole al 89,6% (+2,3% rispetto a SOTA, +3,8% rispetto a BART), l’accuratezza TabFact al 84,2% (+3,2% rispetto a SOTA, +3,0% rispetto a BART), l’accuratezza di denotazione SQA al 74,5% (+3,5% rispetto a SOTA, +15,9% rispetto a BART), e l’accuratezza di denotazione delle domande su WikiTable al 57,5% (+4,8% rispetto a SOTA, +19,5% rispetto a BART). A nostra conoscenza, questo è il primo lavoro che sfrutta il pre-training tramite programmi eseguibili sintetici e che raggiunge nuovi risultati state-of-the-art su varie attività successive.

Confronto con il Pre-training delle Tabelle Precedente

Il primo lavoro sul pre-training delle tabelle, TAPAS da Google Research – disponibile anche in 🤗 Transformers – e TaBERT da Meta AI, ha rivelato che raccogliere più dati adattivi al dominio può migliorare le prestazioni successive. Tuttavia, questi lavori precedenti impiegano principalmente compiti di pre-training a uso generale, ad esempio il modellamento del linguaggio o sue varianti. TAPEX esplora una strada diversa sacrificando la naturalità della sorgente pre-trainata al fine di ottenere un compito pre-trainato adattivo al dominio, ovvero l’esecuzione di SQL. Un confronto grafico tra BERT, TAPAS/TaBERT e il nostro TAPEX può essere visto di seguito.

Riteniamo che il compito di esecuzione di SQL sia più vicino al compito di risposta alle domande sulle tabelle successive, soprattutto dal punto di vista delle capacità di ragionamento strutturale. Immagina di trovarsi di fronte a una query SQL SELECT City ORDER BY Year e a una domanda naturale Ordina tutte le città per anno. I percorsi di ragionamento richiesti dalla query SQL e dalla domanda sono simili, tranne che SQL è un po’ più rigido rispetto al linguaggio naturale. Se un modello di linguaggio può essere pre-trainato per “eseguire” fedelmente le query SQL e produrre risultati corretti, dovrebbe avere una profonda comprensione del linguaggio naturale con intenti simili.

Cosa possiamo dire sull’efficienza? Quanto è efficiente un metodo di pre-training del genere rispetto al pre-training precedente? La risposta è data nella figura precedente: rispetto al metodo di pre-training delle tabelle precedente TaBERT, TAPEX potrebbe ottenere un miglioramento del 2% utilizzando solo il 2% del corpus di pre-training, ottenendo un’accelerazione di quasi 50 volte! Con un corpus di pre-training più grande (ad esempio, 5 milioni di coppie <SQL, Tabella, Risultato di esecuzione>), le prestazioni sui dataset successivi sarebbero migliori.

Conclusione

In questo blog, presentiamo TAPEX, un approccio di pre-training delle tabelle il cui corpus è sintetizzato automaticamente campionando query SQL e i loro risultati di esecuzione. TAPEX affronta la sfida della scarsità di dati nel pre-training delle tabelle apprendendo un esecutore neurale di SQL su un corpus sintetico diversificato, su larga scala e di alta qualità. I risultati sperimentali su quattro dataset successivi dimostrano che TAPEX supera di gran lunga gli approcci di pre-training delle tabelle precedenti, con una maggiore efficienza di pre-training.

Take Away

Cosa possiamo imparare dal successo di TAPEX? Suggerisco che, soprattutto se si desidera eseguire un pre-training continuo efficiente, è possibile provare queste opzioni:

  1. Sintetizzare un corpus accurato e piccolo, invece di estrarre un corpus grande ma rumoroso da Internet.
  2. Simulare abilità adattive al dominio tramite programmi, invece di modellazione del linguaggio a uso generale tramite frasi in linguaggio naturale.