今回の論文
今回取り上げるのは、Noah Hollmann、Samuel Müller、Katharina Eggensperger、Frank Hutterによる「TabPFN: A Transformer That Solves Small Tabular Classification Problems in a Second」です。2022年7月5日にarXivで初公開され、ICLR 2023で発表されました。研究分野は表形式データの分類、メタ学習、ベイズ推論です。論文ページと本文・付録(2023年5月改訂のv5)が公開されています。この記事の構造・数値の説明はv5に基づき、後続版のモデルとは区別します。
選んだ理由は、「新しいデータセットごとにモデルを学習する」という工程を、事前学習済みモデルへの入力に変える発想が面白いためです。少量の数値データから分類を試すとき、モデル探索の時間と実装の負担をどこまで減らせるか、具体的に考えられます。
どんな技術か
TabPFNは、ラベル付きの表と、これから分類したい行を一緒に読み、クラスごとの確率を返すTransformerです。対象データセットで勾配を計算して重みを更新する代わりに、入力された例同士の関係から予測します。
例えば、寸法や重量を記録した数百件の製品と、検査で付けた「正常・要確認」のラベルがあるとします。その表に新しい製品の数値を添え、どちらに近いかを予測するイメージです。この例は説明用であり、原論文が製品検査への導入効果を実証したものではありません。
仕組みの土台は、多様な架空の分類問題をあらかじめ生成し、「例を見て、まだラベルのない行を予測する方法」自体を学ぶことです。手元のラベルが不要になるわけではなく、ラベルを重み更新の正解としてではなく、推論時の文脈として使います。原論文の第2・3節
課題
表データは、列ごとに意味も尺度も違います。温度、件数、比率といった数値の関係を、少ないラベルから推定しなければなりません。単純な境界で分けられる場合も、複数の列が組み合わさって初めて差が出る場合もあります。
従来の方法では、ロジスティック回帰、勾配ブースティング木などを学習し、必要に応じて設定を探索します。少量データでは、設定を複雑にすると過学習しやすい一方、固定した単純な方法だけでは関係を取り逃がします。複数の方法を比較するAutoMLも、探索とアンサンブルに時間がかかります。
この負担は、部門ごとに別の小さな表がある場合や、分類ラベルを付け始めた試作段階で目立ちます。毎回長い探索を回す前に、強い比較基準を短時間で作れれば、データに予測可能な信号があるかを早く確かめられます。
TabPFNは、対象の表を一から学ぶ工程を軽くするために、多様な問題の解き方をオフラインで先に学ぶ方向を取ります。ただし、その準備が有効なのは、実際のデータが事前学習で想定した問題から大きく外れない場合です。
用語解説
- 文脈内学習(in-context learning)
- モデルの重みを変えず、入力した正解例を手掛かりに新しい例を予測する方法です。TabPFNでは文章の指示ではなく、数値の特徴ベクトルとクラスラベルを文脈として渡します。
- 事前分布と事後予測分布
- 事前分布は、どのようなデータの生成規則がありそうかという想定です。事後予測分布は、観測したラベル付き例を踏まえ、未知の行が各クラスになる確率を表します。TabPFNは後者の計算をニューラルネットで近似します。
- Prior-Data Fitted Network(PFN)
- 事前分布から合成した多数のデータセットで学び、その分布に対する予測方法を身に付けるネットワークです。TabPFNは表データ向けに生成規則を設計したPFNであり、学習対象は1枚の表だけではありません。
- 構造的因果モデル(SCM)
- 変数間の依存を有向グラフと計算規則、ノイズで表すモデルです。この論文では、多様な関係を持つ合成データを作る材料にします。入力された業務データの真の因果関係を特定する機能ではありません。
- Attention
- 入力同士を参照し、予測に必要な情報を取り込む演算です。TabPFNでは表の1行を1トークンとして扱い、予測対象の行からラベル付きの行を参照します。列ごとを独立した単語に置き換える方式ではありません。
技術の仕組み
先に、さまざまな「表の生まれ方」を用意します
少ない例だけを見ると、その表を説明できる規則は複数あります。TabPFNは、もっともらしい規則を1つだけ選んで学習する代わりに、多様な規則を考慮したクラス確率を近似します。直感的には、「見えている例と整合する説明を重く見て、予測をまとめる」考え方です。
合成データの生成には、SCMとベイジアンニューラルネットワーク(BNN)を等確率で混ぜます。SCMは変数の依存とノイズから値を作り、BNNはネットワークの構造や重みをサンプリングして入力と出力の関係を作ります。少ないノードやパラメータを持つ単純な規則を優先しつつ、複雑さやノイズにも幅を持たせます。
生成した連続値の出力は、ランダムに選んだ境界で区切ってクラスへ変換します。最後にクラスの番号を入れ替え、番号の大小に意味があるとは限らない分類問題にします。単一の決まった関数だけを覚えさせないことがポイントです。原論文の第4節
合成した表の一部を隠し、残りから予測させます
事前学習では、合成した各表をラベル付きの文脈部分と、ラベルを予測する部分に分けます。モデルは文脈部分を参照し、隠したラベルに割り当てる確率が高くなるよう、交差エントロピーで更新されます。
処理の流れは、生成規則を抽選 → 表を生成 → 文脈と予測対象へ分割 → ラベルを予測 → モデルの重みを更新です。これを異なる表で繰り返します。同じ列名や同じ分類先を覚える学習ではなく、新しい表でも例から規則を読み取る練習になります。
原論文は12層のTransformerを使い、512データセットずつ18,000ステップ、合計9,216,000個の合成データセットで学習しています。8台のRTX 2080 Tiで20時間という報告です。利用者側の重み更新が不要なのは、この準備を先に済ませているためです。学習設定の付録E
表の行をトークンにし、参照先を制限します
推論時には、ラベル付きの各行の特徴とラベルを符号化します。予測対象の行には特徴だけを渡します。ラベル付き行同士は相互に参照でき、予測対象の行はラベル付き行だけをAttentionで参照します。予測対象同士を参照して情報を混ぜる構造にはしません。
この区別により、既知の例の関係を使いながら、各対象のクラス確率を出せます。予測対象自身の特徴は残差経路にも流れるため、Attentionで自分自身を参照しないことは、その行の情報を捨てることではありません。
列数の違いには、上限までのゼロ埋めとスケーリングで対応します。ただし任意の列数へ無制限に対応するわけではなく、論文の学習済みモデルは100特徴・10クラスまでを想定しています。構造の図1と付録E.2
実データでは、文脈を渡すだけで予測します
利用時の流れは、ラベル付き表+未知の行 → 学習済みTabPFN → クラス確率です。対象データのラベルは使いますが、その場で逆伝播は行いません。ベイズ推論のために大量の候補モデルを実際に学習して平均する処理も不要です。その予測結果を近似する役割を、事前学習済みネットワークが担います。
論文は単一の順伝播に加え、列の順序やクラス番号の変更、数値の分布を調整する変換を組み合わせた32回の予測をまとめる方式も評価しています。元のクラスへ対応を戻して統合し、入力表現による偏りを減らす狙いです。「1回で予測できる構造」と「主評価で使うアンサンブル」は区別する必要があります。原論文の第3節
実験と結果
小さな数値表で、探索に時間を使う方法と比較しました
主評価はOpenML-CC18から選んだ18データセットです。全体2,000件以下、訓練・テストを半分ずつにして訓練例1,000件以下、100特徴以下、10クラス以下で、数値特徴のみ・欠損なしの条件です。同じ分割を各手法に使い、乱数を変えた5回の評価を行っています。
中心指標はROC AUCです。クラスを分けるスコアの順位を評価し、多クラスではクラスの組ごとに計算するone-vs-one方式を使います。あわせて正解率と交差エントロピーも測ります。比較側には、木モデルやAutoMLの探索・学習に最大60分を要求した条件があります。
| 手法 | 平均ROC AUC OVO | 平均正解率 | 平均交差エントロピー |
|---|---|---|---|
| CatBoost | 0.924 | 0.864 | 0.747 |
| AutoGluon | 0.930 | 0.881 | 0.714 |
| TabPFN・単一推論 | 0.932 | 0.873 | 0.727 |
| TabPFN・32回アンサンブル | 0.934 | 0.879 | 0.716 |
表は原論文の表1の平均値を抜粋しています。AUCと正解率は高いほど、交差エントロピーは低いほど良い指標です。TabPFNの32回方式は平均AUCで高い値ですが、正解率と交差エントロピーではAutoGluonがわずかに良好です。すべての指標や全データセットで勝ったという結果ではありません。評価条件と表1
速度は、単一推論とアンサンブルで分けて読みます
同じ表1にある、データセットごとの調整・学習・予測を合わせた平均所要時間は次の通りです。TabPFNには対象データ上の重み更新がないため、前処理や入力の受け渡しを含む予測側の時間になります。
| TabPFNの方式 | CPU | GPU |
|---|---|---|
| 単一推論 | 1.301秒 | 0.0519秒 |
| 32回アンサンブル | 37.59秒 | 0.6172秒 |
CPUはXeon Gold 6242、GPUはRTX 2080 Tiです。モデルはメモリへ読み込み済みという前提で、一度きりの事前学習コストは含みません。したがって、どの環境でもCPUで1秒未満と読むことはできません。
要旨の「CPUで230倍、GPUで5,700倍」は、単一推論版を、同程度の性能へ約5分かける比較手法と比べた説明です。32回方式の0.6172秒を、60分の設定に対する5,700倍という主張へ混ぜてはいけません。また、一度学習した木モデルへ新しい行を繰り返し渡す純粋な推論では、比較モデルの方が速い場合があると付録Aが指摘しています。速度比較と読み込み条件、比較時間の定義
カテゴリ列や欠損を含めると、優位性は弱まります
付録ではカテゴリ特徴や欠損を含む計30データセットも調べていますが、数値のみ・欠損なしの条件ほど強い結果ではありません。さらに、予測に無関係な特徴を足すと性能が下がる分析もあります。
ここから言えるのは、合成データで覚えた予測方法が実表へ転移する一方、どんな表でも同じように得意ではないということです。列の種類、欠損、不要な特徴は、単なる入力形式ではなく、事前学習で身に付いた予測の傾向と関係します。付録A・B.1・B.3
何に使える?
以下は技術の構造から考えられる応用案です。原論文が各業務で直接検証した成果ではありません。原論文の得意条件に合わせ、まず小規模な数値分類から考えます。
検査データで、確認候補を分類します
寸法、重量、測定値などから「正常・要確認」を予測する補助に使えそうです。初期のラベルが数百件の段階で、毎回長いモデル探索を回さずに比較できます。
ただし少数派の不良がほとんど含まれなければ、全体の正解率が高くても見逃しが多くなります。製品ロット単位で評価を分け、不良側の再現率や確認件数を測る設計が必要です。分類確率だけで自動的に廃棄するような判断は、この論文の評価からは導けません。
小規模なSaaSで、属性ベースの処理候補を出します
利用回数、経過日数、エラー率などの数値と、担当者が付けた既存の対応区分を使い、「通常対応・優先確認」などの候補を出す構成が考えられます。顧客ごとに別の小さなデータがある場合、共通の学習済みモデルへ文脈を切り替えて渡せます。
その際は、顧客ごとの列の意味と単位をそろえ、同じ顧客の履歴が評価側へ漏れないようにします。IDを数値に変えただけの列や、結果確定後に記録される値は、予測時に使える特徴と分ける必要があります。
CSV分析の試作で、分類できるかを早く試します
社内の小さな表に正解列があるなら、ロジスティック回帰や木モデルと並べ、データに分類の手掛かりがあるかを調べる候補になります。重み更新のための個別学習ジョブを減らせるので、異なるラベル定義を検討する試作にも向きそうです。
ただし自由記述をそのまま扱う文章分類の代替ではありません。文章を少数ラベルで分類する場合は、SetFitの文埋め込み調整と分類ヘッドが別の選択肢です。入力が文章か数値表か、対象データで重みを更新するかという違いを踏まえて選びます。
開発や事業へのヒント
まず「1つの表で当たるか」と「多数の表へ展開できるか」を分けます
TabPFNの発想が活きるのは、小さな分類タスクを繰り返し立ち上げる場面です。1つの大きな表だけなら、学習済みの木モデルを繰り返し使う方が運用しやすい可能性もあります。
最初の検証では、同じ分割で単純な基準、木モデル、TabPFNを比較します。性能だけでなく、新しい表を追加して予測が出るまでの時間と、固定した表へ大量に予測する時間を別々に測ると、どちらの運用に価値があるか判断できます。
データの生成方法を、モデル設計の一部として考えます
この論文から得られる大きなヒントは、「望む予測の傾向を、合成データの生成規則へ埋め込む」ことです。モデルの層数だけでなく、どんな相関、ノイズ、単純さを持つ問題で練習するかが重要になります。
自社向けに同じ規模の事前学習を再現するのは軽い作業ではありません。ただし考え方は、小さな試作にも活かせます。例えば評価用に、不要な列を足した表、欠損を増やした表、クラス比率を変えた表を作り、どの変化で壊れるかを調べられます。これは論文の追加実験結果ではなく、その設計から得られる検証案です。
保存する対象は、モデルの重みだけでは足りません
対象データ上で重みを更新しなくても、文脈として渡すラベル付き行が変われば予測は変わります。モデルの版、列順、前処理、クラス番号の対応に加え、使用した文脈データの版も記録する必要があります。
ラベルを修正した直後に予測を変えられる利点がある一方、同じ問い合わせを再現するには、その時点の文脈を復元しなければなりません。テナントごとに文脈を分ける製品では、混入を防ぐデータ管理も設計の一部になります。
限界
計算面では、原論文のAttentionは文脈として渡す訓練行数に対し二次的に時間とメモリが増えます。「重み更新が不要」と「大量データでも軽い」は同義ではありません。また32回方式は単一推論より重く、繰り返し呼ぶサービスでは実際の応答時間を測る必要があります。計算上の制約
データ面では、主評価が小規模な数値表に偏っています。カテゴリ列、欠損、不要な列が多い表や、訓練時と状況が違うデータへ、同じ性能は保証されません。この論文のモデルは100特徴・10クラスまでであり、大規模回帰や自由記述の処理へ、そのまま話を広げることもできません。
確率を出せても、それが実環境で正確に較正されている保証にはなりません。低頻度クラスの取りこぼしや、既知のクラスに属さない入力も確認すべきです。またSCMを使った事前学習は、顧客の行動を変えた場合の効果や、故障の原因を特定する証拠にはなりません。
実装・再現面では、この記事が扱うのはICLR 2023の原方式です。後続モデルやライブラリの既定動作へ、この上限や計測値をそのまま当てはめないでください。利用するチェックポイントと実装の版、アンサンブル数、前処理を固定して評価します。論文当時の比較結果は、現在の手法全般に対する順位を示すものでもありません。
よくある質問
Q. 学習もラベルも不要なのですか?
A. どちらも不要という意味ではありません。合成データを使う事前学習は実施済みで、利用時にも手元のラベル付き例を入力します。省けるのは、対象データセットごとに勾配でモデルの重みを更新する工程です。
Q. LLMにCSVを文章で渡す方法と同じですか?
A. 異なります。原論文のTabPFNは、数値の特徴とラベルを表の行単位で符号化し、クラス確率を直接返します。汎用LLMが列名の説明を読み、自然言語で回答を生成する構成ではありません。
Q. 必ず1秒以内に予測できますか?
A. 保証されません。原論文の平均では、32回方式はGPUで0.6172秒、CPUで37.59秒でした。モデル読み込み済みという条件もあるため、初回起動、前処理、文脈の行数、機材を含めて実測する必要があります。
Q. 欠損やカテゴリ列があれば使えませんか?
A. 原論文でも、それらを含む表を追加評価しています。ただし主評価の数値のみ・欠損なしの条件より優位性は弱くなりました。適切に前処理した木モデルと比較し、列を数値へ変換しただけで問題が解消したと考えないことが大切です。
Q. SCMを使うなら、原因まで説明できますか?
A. この方式だけでは説明できません。SCMは多様な合成問題を作るための事前分布です。出力は観測された例に基づくクラス確率であり、実データの因果グラフや介入効果を特定した結果ではありません。
今日の学び
この論文は、小さな表データごとに分類器を学習・探索する負担を扱いました。多様な生成規則から合成した問題で予測方法を事前学習し、利用時はラベル付き表を文脈として渡すことで、重み更新なしの分類を行います。
得られるヒントは、個々のタスクを毎回学習する工程そのものを、共通モデルの推論へ移せることです。同時に、何を事前に練習させたか、推論にどの例を渡すか、初回の立ち上げと繰り返し処理のどちらを速くしたいかが、実際の開発での価値を決めます。