LLMを用いたゼロショット異常検知:GPT-4はテーブルデータでどのようなパフォーマンスを示すか
先月読んだAuditCopilotの論文では、ラベル付きの異常データでファインチューニングを行うことで、仕訳不正検知におけるLLMのベンチマークを行っていました。それ以来、私はゼロショットプロンプティングでどこまで到達できるのか、つまりラベル付きの異常データもドメイン固有のファインチューニングも不要な手法に興味を持っていました。まさにそれを約束しているのが、Li、Zhao、Qiu、Kloft、Smyth、Rudolph、Mandtらによる「Anomaly Detection of Tabular Data Using LLMs」(arXiv:2406.16308)という2024年半ばのワークショップ論文です。GPT-4がECODのような古典的なトランスダクティブ手法に匹敵するという主要な結果は、あまりにも話が良すぎるように聞こえたので、注意深く読んでみました。
論文について
核心となるアイデアは、著者らが「バッチレベル」の異常検知と呼ぶものです。学習データにモデルを適合させてから個々のテストポイントをスコアリングする代わりに、推論時にLLMにN行のバッチを提示し、同じバッチ内の他の行と比較してどの行が異常であるかを特定させます。異常はバッチ内にまばらに存在するため、十分に有能なモデルであれば、暗黙のうちに大多数のパターンを認識し、外れ値にフラグを立てることができるはずだという考えです。再学習もラベル付きの例も不要で、LLMが事前に学習した世界の知識とインコンテキスト推論のみを利用します。
彼らは、現実世界のテーブルデータ異常検知問題の標準的なコレクションである32のデータセットからなるODDSベンチマークで評価を行いました。コンテキストウィンドウの制限により、各評価バッチを150行10列に制限しています。特徴量は「Data i is x_i.」というテンプレートを用いて1次元ずつシリアル化され、LLMは各次元で異常なインデックスを個別に挙げるよう促されます。行の最終的な異常スコアは、フラグが立てられた次元の数を集計したものになります。
商用モデルについてはゼロショットでテストしています。オープンソースモデル(Llama2-7B, Llama2-70B, Mistral-7B)については、ゼロショットの性能が低かったため、ガウス混合分布やカテゴリ分布から生成された5,000バッチの合成データセットでファインチューニングを行うことも提案しています。これには実際の異常ラベルは不要です。これらの ファインチューニング版はLlama2-ADおよびMistral-ADと呼ばれます。
主なアイデア
- GPT-4のゼロショットは、32のODDSデータセット全体で平均AUROC 74.1を達成しました。これは、最高の古典的ベースラインであるECODの75.5に匹敵し、KNNの70.7を上回ります。GPT-3.5は68.3と遅れをとっています。
- Llama2-7Bのゼロショットスコアはわずか51.1(実質的にランダム)でしたが、合成データでのファインチューニングにより60.0まで向上し、+8.9ポイントの改善が見られました。Mistral-7Bは62.4から69.1(+6.7ポイント)に向上しました。
- 「バッチレベル」の枠組みは興味深い概念的転換です。LLMは、クラスを分離するために訓練された識別器としてではなく、バッチ上の暗黙的な密度推定器として機能します。
- ファインチューニングにはLoRAを使用し、合成ガウスデータとカテゴリデータのみを使用しています。実際の異常アノテーションが不要であることは、汎用化が可能であれば実用上で大きな利点となります。
- オープンソースモデルの場合、出力のパースが不安定です。著者らは文法制約を強制し、正規表現パターンを使用して異常インデックスを抽出しています。