実際のデータなしで効率的なテーブルの事前学習:TAPEXへの導入

効率的なテーブルの事前学習:TAPEXへの導入

近年、大規模なテキストデータを活用することで、言語モデルの事前学習が大きな成功を収めています。マスクされた言語モデリングなどの事前学習タスクを使用することで、これらのモデルはいくつかの下流タスクで驚くほどのパフォーマンスを示しています。しかし、事前学習タスク(例:言語モデリング)と下流タスク(例:テーブルの質問応答)の間には大きなギャップがあり、既存の事前学習は十分に効率的ではありません。実践では、有望な改善を得るために非常に大量の事前学習データが必要なことがよくあります。ドメイン適応の事前学習でも同様です。どのようにすればギャップを埋めるための事前学習タスクを設計し、事前学習を加速させることができるでしょうか?

概要

「TAPEX: ニューラルSQL実行エグゼキュータの学習を通じたテーブルの事前学習」という論文では、事前学習中に実データの代わりに合成データを使用するアプローチを探求し、TAPEX(エグゼキューションを通じたテーブルの事前学習)を例としてその有用性を示しています。TAPEXでは、合成コーパス上にニューラルSQLエグゼキュータを学習することで、テーブルの事前学習を実現しています。

注意: [Table]は入力されたユーザー提供のテーブルのプレースホルダーです。

上記の図に示すように、TAPEXはテーブル上で実行可能なSQLクエリとその実行結果をシステム的にサンプリングし、合成された非自然な事前学習コーパスを作成します。その後、言語モデル(例:BART)を事前学習し、SQLクエリの実行結果を出力するように学習させることで、ニューラルSQLエグゼキュータのプロセスを模倣します。

事前学習

以下の図は、事前学習プロセスを示しています。各ステップでは、まずウェブからテーブルを取得します。例えば、オリンピックのテーブルがあります。次に、実行可能なSQLクエリ SELECT City WHERE Country = France ORDER BY Year ASC LIMIT 1 をサンプリングします。オフシェルフのSQLエグゼキュータ(例:MySQL)を使用して、クエリの実行結果 Paris を取得できます。同様に、SQLクエリとフラット化されたテーブルの連結をモデル(例:BARTエンコーダー)の入力として与えることで、実行結果がモデル(例:BARTデコーダー)の出力の教師として機能します。

なぜ、自然言語の文ではなくSQLクエリなどのプログラムを事前学習のソースとして使用するのでしょうか?最大の利点は、プログラムの多様性とスケールが自然言語文よりもシステマチックに保証できることです。そのため、SQLクエリをサンプリングすることで、多様な、大規模な、高品質な事前学習コーパスを簡単に合成することができます。

以下のコードでは、トレーニング済みのニューラルSQLエグゼキュータを使って実行結果を試すことができます:

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']

ファインチューニング

ファインチューニングでは、自然言語の質問とフラット化されたテーブルの連結をモデルの入力とし、アノテータによってラベル付けされた回答をモデルの出力の教師として使用します。TAPEXを自分自身でファインチューニングしたいですか?公式に🤗 Transformersの一部として統合されたファインチューニングスクリプトをこちらでご覧いただけます (4.19.0)!

そして、現在利用可能なすべてのTAPEXモデルは、Huggingfaceによって公式にサポートされているインタラクティブウィジェットを持っています!以下のようにいくつかの質問に回答してみることができます。

実験

WikiSQL(Weak)、WikiTableQuestions、SQA、TabFactを含む4つのベンチマークデータセットでTAPEXを評価しました。最初の3つのデータセットはテーブルの質問応答に関するものであり、最後のデータセットはテーブルの事実検証に関するものであり、どちらもテーブルと自然言語に関する共同推論を必要とします。以下は最も難しいデータセットであるWikiTableQuestionsのいくつかの例です。

実験結果は、TAPEXが以前のテーブルの事前学習手法を大幅に上回り、全てにおいて⭐新たな最先端の結果を達成していることを示しています⭐。これには、弱教師ありのWikiSQLの真性精度が89.6%(SOTAに対して+2.3%、BARTに対して+3.8%)、TabFactの精度が84.2%(SOTAに対して+3.2%、BARTに対して+3.0%)、SQAの真性精度が74.5%(SOTAに対して+3.5%、BARTに対して+15.9%)、およびWikiTableQuestionの真性精度が57.5%(SOTAに対して+4.8%、BARTに対して+19.5%)の改善が含まれます。私たちの知る限りでは、これは合成可能な実行可能プログラムを利用した事前学習を探索し、さまざまな下流タスクで新たな最先端の結果を達成した最初の研究です。

以前のテーブルの事前学習との比較

Google ResearchのTAPASやMeta AIのTaBERTなど、テーブルの事前学習に関する最初の研究では、よりドメイン適応性の高いデータを収集することで下流のパフォーマンスを改善できることが示されています。しかし、これらの以前の研究では、主に言語モデリングやその派生などの汎用的な事前学習タスクを使用しています。TAPEXは、ドメイン適応型の事前学習タスクであるSQLの実行を得るために、事前学習ソースの自然さを犠牲にするという異なるアプローチを探求しています。BERT、TAPAS/TaBERT、そして私たちのTAPEXのグラフィカルな比較は、以下で確認できます。

私たちは、SQLの実行タスクが下流のテーブルの質問応答タスクに近いと考えています。特に構造的な推論能力の観点からです。SQLクエリSELECT City ORDER BY Yearと自然言語の質問Sort all cities by yearが与えられたとします。SQLクエリと質問に必要な推論経路は似ていますが、SQLは自然言語よりも少し厳格です。もし言語モデルがSQLクエリを信頼性のある形で「実行」し、正しい結果を出力するように事前学習されていれば、類似の意図を持つ自然言語について深い理解を持っているはずです。

では効率性はどうでしょうか?このような事前学習方法は以前の事前学習方法と比べてどれほど効率的なのでしょうか?答えは上の図に示されています。以前のテーブルの事前学習方法TaBERTと比較して、TAPEXは事前学習コーパスの2%のみを使用して2%の改善をもたらし、速度が約50倍速くなります!より大きな事前学習コーパス(例えば、500万の<SQL、テーブル、実行結果>のペア)を使用すると、下流のデータセットのパフォーマンスはさらに向上します。

結論

このブログでは、TAPEXというテーブルの事前学習手法を紹介しました。この手法では、SQLクエリとその実行結果をサンプリングして自動的に合成することで、データの不足に対処しています。TAPEXは多様で大規模かつ高品質な合成コーパス上でニューラルSQL実行エグゼキュータを学習することで、従来のテーブルの事前学習手法を大幅に上回る結果を示しています。

まとめ

TAPEXの成功から何を学ぶことができるでしょうか?効率的な継続的な事前学習を行いたい場合、以下のオプションを試してみることをおすすめします:

  1. インターネットから大量のノイズのあるコーパスを採掘するのではなく、正確で小さなコーパスを合成する。
  2. 自然言語文による汎用的な言語モデリングではなく、プログラムを介したドメイン適応スキルのシミュレーション。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more