Captum · Model Interpretability for PyTorch
Meta (PyTorch team) · コーディング
CaptumはMetaが公開する無料のオープンソースライブラリで、PyTorchモデルの予測根拠を可視化する。どの入力特徴、ニューロン、層が出力に効いたかを帰属アルゴリズムで示す。

Captum · Model Interpretability for PyTorch について
About
Captumとは何か
CaptumはPyTorchモデル解釈のためのPythonライブラリである。狙いはひとつ、学習済みのネットワークが実際に何に反応しているのかを突き止めることだ。名前はラテン語の「理解」に由来する。手元のモデルに帰属アルゴリズムを当てると、ある予測に対して各入力特徴・各ニューロン・各層がどれだけ寄与したかを数値で返してくれる。
出番はモデルが誤った判断をして、理由を誰も説明できない場面だ。分類器が画像を異常と判定する、推薦システムが同じ奇妙な商品を押し続ける、言語モデルが根拠のない自信で答える。Captumを使えば、推測に頼らず順伝播の中をのぞける。
制約は守備範囲にある。Captumはライブラリであってアプリではない。PythonとPyTorchを書き慣れていないと話にならないし、返ってくるのは自分で解釈したりノートブックで描画したりするテンソルだ。ホストされたダッシュボードは存在しない。チームはv0.8.0以降に可視化インターフェースCaptum Insightsを廃止したため、クリック操作のツールを期待すると肩透かしを食らう。
導入の手順
pip install captumでインストールする。condaを使うならconda install captum -c pytorchでもよい。バージョン0.9.0はPython 3.10以降とPyTorch 2.3以降を要求する。- 学習済みモデルを読み込み、評価モードに切り替える。大半のアルゴリズムはアーキテクチャの変更を必要としない。
- アルゴリズムを選び、モデルを渡す。勾配ベースの帰属なら
IntegratedGradients(model)が最初の選択肢になる。 - 入力バッチを添えて
attribute()を呼ぶ。アルゴリズムが基準入力を求める場合は、ゼロのテンソルなどを渡す。 - 返ってきた帰属値を確認し、収束差分を要求していれば併せて検証する。スコアは入力と並べてグラフにする。
AIツール情報
Captum · Model Interpretability for PyTorchの料金、対応プラットフォーム、性能を簡単に確認できます。
こんな人におすすめ
このツールが最も力を発揮するユーザー、タスク、シーン。
ユーザー
- 機械学習エンジニア
- 解釈性の研究者
- モデルを運用するアプリケーションエンジニア
タスク
- 誤った予測の原因を追う
- 近道を学習していないか確かめる
- ニューロンと層を比較する
- 学習データを監査する
シーン
- モデルレビューの準備
- 大規模言語モデルの研究
- リリース前の耐性テスト
主な機能
帰属アルゴリズム
Captumの手法は勾配ベースと摂動ベースの二系統に分かれる。勾配系にはSaliency、InputXGradient、IntegratedGradients、DeepLift、GradientShap、GuidedBackprop、Guided GradCam、摂動系にはFeatureAblation、Occlusion、ShapleyValueSampling、Limeがある。両方を同じ場所に揃えると結果を突き合わせられる。勾配法と摂動法が同じピクセルを指したとき、特徴量帰属の説得力は増す。モデルのデバッグに臨むとき、勘ではなく具体的な説明を持ち込めるわけだ。
ニューロンと層の帰属
特徴量帰属はモデルがどこを見たかを示す。ニューロンと層の帰属は、それがネットワークのどこで起きたかを示す。LayerConductance、LayerIntegratedGradients、LayerLRP、および対応するニューロン版は指定した層の活性値を評価する。壊れた予測をアーキテクチャ上の一点までさかのぼれる。
LLM向け帰属ラッパー
LLMAttributionとLLMGradientAttributionは、既存のアルゴリズムをHugging Face系の言語モデルのトークン列で動くように包んだものだ。生成された回答にどのプロンプトのトークンが効いたかを示し、スコアを付ける前にトークンを語や句にまとめることもできる。LLMの帰属は順伝播一回より時間がかかるため、推論コストを見込んでおきたい。
概念と影響度の分析
概念モジュールはTCAVを実装する。しま模様や毛といった概念がクラスにとって重要かを、活性値の上で小さな分類器を学習させて確かめる仕組みだ。影響度モジュールはTracInなどの推定器を追加し、どの学習サンプルが予測を形作ったかを問える。どちらも研究用途向けで、手軽な確認には向かない。
ロバスト性のテスト
ロバスト性モジュールはFGSM、PGD、AttackComparator、MinParamPerturbationを提供する。敵対的サンプルを生成し、攻撃を並べて比較し、ラベルを反転させる最小の摂動を探せる。帰属と組み合わせると筋が通る。勾配の検査と攻撃の検査の両方を通過した特徴は、主張としての重みが増す。
説明の品質を測る指標
InfidelityとSensitivityの指標は、帰属値の集合がどれだけ信頼できるかを推定する。それらしいヒートマップだからと信じる代わりに、入力を摂動させたときに説明とモデルがどれだけ食い違うかを数値で示し、同じサンプルでアルゴリズム同士を比較できる。
メリットとデメリット
メリット
- モデルを組み替えずに済む: 大半のアルゴリズムはPyTorchの `nn.Module` をそのまま受け取る。説明のために再学習や構造変更をする必要はない。
- アルゴリズムの網羅性: SaliencyからLRP、Shapley値、TCAVまで、60を超える帰属クラスが同じインポート経路で使える。
- 結果を検証できる: IntegratedGradientsは収束差分を返し、ライブラリ自体にInfidelityとSensitivityの指標が入っている。説明は前提ではなく検査の対象になる。
- 設計からマルチモーダル: 同じAPIで画像テンソル、テキストのトークン入力、音声、時系列を扱える。プロジェクトをまたいでもコードの書き方が揃う。
- 無料で寛容なライセンス: BSD 3 Clauseなので、商用コードに組み込むときも誰かの許諾を取る必要がない。
デメリット
- 学習の負荷が高い: 40を超えるアルゴリズムから選ぶには、それぞれの前提を理解する必要がある。どれを選ぶべきかはライブラリが教えてくれない。
- 表示用の画面がない: Captum Insightsはv0.8.0以降に廃止された。何かを見たければ描画コードを自分で書くことになる。
- 一部の手法は計算が重い: 摂動系のアルゴリズムやLLMの帰属はサンプルごとに順伝播を何度も回す。大きなモデルでは費用がかさむ。
- PyTorchの知識が要る: PyTorch以外の世界に向けたフレームワーク非依存のラッパーはなく、出力も生のテンソルだ。TensorFlowやJAXのチームはモデルコードを使い回せず、Pythonを書けない人には入口がない。
よくある質問
PyTorchモデルの予測を説明するためのライブラリである。各入力特徴、ニューロン、層が出力にどれだけ寄与したかを評価する。デバッグ、モデルのレビュー、ネットワークの判断過程の研究に役立つ。
関連コンテンツ
Captum · Model Interpretability for PyTorchに関連するツール、スキル、記事を探す。
Captum · Model Interpretability for PyTorchの代替ツール
Forefront
Forefront · コーディングForefrontはオープンソースAIで構築するためのウェブプラットフォームだ。主要なオープンソース言語モデルを自分のデータで微調整し、性能を評価し、API経由で実行したり、エクスポートして自分でホストしたりできる。クローズドなプラットフォームの手軽さを求めつつ、モデルとデータの所有権にはこだわる開発者が対象だ。
Startkit
StartKit.AI · コーディングStartkitは、AI SaaSとAIラッパー製品を作るためのボイラープレートだ。面倒な部分をあらかじめ配線済みにしたAIスタートアップボイラープレートと考えればいい。認証、StripeとLemon Squeezyの決済、利用制限、トランザクションメール、そしてOpenAI、Anthropic、Groq、Llamaと通信するAI APIスターターキットが含まれる。リポジトリをクローンして価格を設定し、ユーザーが実際にお金を払う部分に取りかかれる。ReactとTailwind上のNext.jsで作られているため、ボイラープレートコードの多くはすでに見慣れたものだ。
Testim
Tricentis · コーディングTestimは、Web・モバイル・Salesforceアプリ向けにエンドツーエンドテストを構築して実行するAIテスト自動化プラットフォームだ。機械学習を頼りに、インターフェースが変わってもテストを安定させ、チームが壊れたセレクターの修正に費やす時間を減らす。今日から使い始められる自動テストツールとしては悪くない。ブラウザで操作を録画してテストを作り、より細かい制御が必要なときはJavaScriptを足す。忙しいQAチームにとって堅実な選択肢である。
