Black Box AI(ブラックボックスAI)とは、入力から出力に至る判断の過程を、開発者自身も人が読める形で説明できないAIを指します。画像分類のCNNや、ChatGPTのような大規模言語モデル(LLM)がその典型です。精度が高くても「なぜその答えか」を示せなければ、与信や医療、採用の現場では採用できません。
この記事では、深層学習とLLMで根拠が追えなくなる理由を整理したうえで、Captumの統合勾配で単語ごとの寄与度を出すPythonコード、Grad-CAMとLLMのトレース記録、EU AI Actの適用日から逆算する記録の範囲、解釈可能なモデルへ切り替える判断までを実装の視点で扱います。表形式データでのSHAPやLIMEの選び方はモデル解釈性とは?説明可能性との違いとSHAP・LIMEの選び方を実装目線で解説にまとめているため、本記事は深層学習とLLMの側に絞りました。
まとめ:ブラックボックスAIを開く手段の選び方と、解釈可能モデルへ戻す判断
ブラックボックスAIの説明手段は、モデルの種類で決まります。テキストや画像の深層学習なら、勾配から入力ごとの寄与度を出す統合勾配やGrad-CAM。API経由で使うLLMなら内部に触れないため、入出力とツール呼び出しをトレースとして残すことが実務上の説明になります。
ただし事後説明は近似です。与信や採用のように1件ごとの判断へ責任を負う用途で、表形式データを扱うなら、先に決定木や一般化加法モデルで精度が足りるかを試すべきです。精度差が小さければ、ブラックボックスを説明するより、最初から読めるモデルを選ぶ方が監査に強い構成になります。
| 対象 | 主な手段 | 得られる説明 | 主な制約 |
|---|---|---|---|
| テキスト分類(BERT系) | 統合勾配(Captum) | 単語ごとの寄与度 | ベースラインで結果が変わる |
| 画像分類(CNN) | Grad-CAM | 注目領域のヒートマップ | 解像度が粗い |
| API経由のLLM | トレース記録 | 入出力と参照資料の履歴 | 内部の推論は見えない |
| オープンウェイトLLM | circuit-tracer | 内部特徴の帰属グラフ | 小型モデル限定・研究段階 |
| 表形式データ | 解釈可能モデル・SHAP | 特徴量の効き方 | 16357で詳述 |
ブラックボックスAIの定義と、深層学習やLLMで判断根拠が追えなくなる構造上の理由
ブラックボックスという言葉は、中身を見ずに入出力だけを扱う箱を指す工学用語から来ています。AIの場合は「中身を開けても読めない」点に本質があります。
数百万から数千億のパラメータに分散した表現が規則として読めない理由
決定木なら「年収が500万円未満かつ勤続3年未満なら否決」のように、判断を分岐条件として書き出せます。ニューラルネットワークでは、判断は層をまたいだ重みの掛け算と非線形変換の積み重ねに溶けています。本記事のコード例で使うDistilBERTでさえ、6層・12ヘッド・隠れ次元768の構成で、1つの重みが何を意味するかは誰にも言えません。
さらに1つのニューロンが複数の概念に反応する性質があり、個々の重みを追っても意味の単位になりません。層の構造そのものはニューラルネットワークとは?仕組み・種類・PyTorch実装まで実装目線で解説で扱っています。説明手法はこの読めなさを前提に、入力側か出力側から間接的に根拠を推定する道具だと捉えてください。
透かし文字で馬を当てたClever Hans事例に見る、偏りが隠れる経路
根拠が見えないと、モデルが間違った手がかりで正解していても気づけません。Lapuschkinらの研究Unmasking Clever Hans predictors and assessing what machines really learnでは、画像データセットPASCAL VOCの「馬」クラスで高精度を出していた分類器が、馬ではなく写真の隅に入った著作権表示の文字を手がかりにしていたことを、寄与度の可視化で示しました。
テスト精度は高いまま、本番で透かしの無い写真が来た瞬間に崩れます。同じ働きをする手がかりは、医療画像なら撮影装置の刻印、与信なら郵便番号のような代理変数です。ブラックボックスAIの危うさは説明できないこと自体より、誤った根拠を検収で見逃すことにあります。
コード生成サービスのBLACKBOX AIと、不透明なAIを指す用語の呼び分け
検索結果には「BLACKBOX AI」という名称のコード生成支援サービスも並びます。こちらは製品名で、本記事が扱う「判断過程を説明できないAI」という性質の話とは別物です。社内の議論で混ざらないよう、性質を指すときは「ブラックボックス問題」「説明可能性」と書き分けるのが安全です。
業務でチャットボットを入れる立場から見たブラックボックス問題の概略は、対話型AIとは?仕組み・生成AIとの違いから業務導入の判断までの落とし穴の章にあります。以降はその先の、開発者が手を動かす部分を扱います。
Captumの統合勾配でテキスト分類モデルの単語ごとの寄与度を出す実装手順
PyTorch公式の解釈ライブラリCaptumを使い、英文の感情分類モデルが「なぜ肯定と判定したか」を単語単位に分解します。
Python 3.10以上で感情分類を検証するライブラリの導入手順
検証環境に導入するライブラリは、PyTorch・Transformers・Captumです。Captumは2026年4月17日の0.9.0リリースで、最小要件がPython 3.10とPyTorch 1.13へ引き上げられました。同じリリースでNumPy 2系に対応し、可視化UIのCaptum Insightsは廃止されています。2026年9月時点のPyPIでは、Transformersは5.17系、PyTorchは2.14系が最新です。
python -m venv .venv
source .venv/bin/activate
pip install torch transformers "captum==0.9.*"
分類モデルには、Hugging Faceで公開されているdistilbert-base-uncased-finetuned-sst-2-englishを使います。config.jsonのラベル定義は0がNEGATIVE、1がPOSITIVEで、6層の小型モデルなのでGPUの無い環境でも試せます。
LayerIntegratedGradientsで感情分類を単語別に説明するコード
統合勾配は、何も無い入力(ベースライン)から実際の入力までを直線でつなぎ、その途中の勾配を積分して各入力の寄与度とする手法です。トークンIDは微分できないため、LayerIntegratedGradientsで埋め込み層の出力に対して計算します。
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from captum.attr import LayerIntegratedGradients
MODEL = "distilbert/distilbert-base-uncased-finetuned-sst-2-english"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
model.eval()
text = "The delivery was late, but the support team was excellent."
enc = tok(text, return_tensors="pt")
input_ids = enc["input_ids"]
attention_mask = enc["attention_mask"]
# ベースライン: 先頭の[CLS]と末尾の[SEP]は残し、間を[PAD]にする
baseline_ids = torch.full_like(input_ids, tok.pad_token_id)
baseline_ids[0, 0] = tok.cls_token_id
baseline_ids[0, -1] = tok.sep_token_id
def forward(ids, mask):
return model(input_ids=ids, attention_mask=mask).logits
with torch.no_grad():
pred = forward(input_ids, attention_mask).argmax(dim=-1).item()
lig = LayerIntegratedGradients(forward, model.distilbert.embeddings)
attr, delta = lig.attribute(
inputs=input_ids,
baselines=baseline_ids,
target=pred,
additional_forward_args=(attention_mask,),
n_steps=50,
return_convergence_delta=True,
)
scores = attr.sum(dim=-1).squeeze(0)
scores = scores / torch.norm(scores)
tokens = tok.convert_ids_to_tokens(input_ids[0])
print("predicted:", model.config.id2label[pred], "delta:", float(delta))
for t, s in zip(tokens, scores.tolist()):
print(f"{t:>12} {s:+.3f}")
埋め込みの次元方向(768次元)を合計してトークンごとの値にし、ノルムで割って比較しやすくしています。出力は各トークンの右に符号付きの寄与度が並ぶ形です。正の値が予測ラベルを押し上げた単語、負の値が逆向きに働いた単語を示します。
寄与度の読み方と、ベースラインの選び方と収束誤差で結果が変わる落とし穴
統合勾配の原論文Axiomatic Attribution for Deep Networksは、寄与度の合計が「入力での出力値とベースラインでの出力値の差」に一致する性質(完全性)を示しています。コードのdeltaはこの一致からのずれで、絶対値が出力差に比べて大きいときはn_stepsを100や200へ増やします。原論文で示された積分の誤差は、20〜300ステップで5%以内という範囲です。
見落としやすいのはベースラインです。[PAD]で埋めるか、[MASK]で埋めるか、ゼロベクトルにするかで、同じ文でも寄与度の順位が入れ替わります。本番で説明を保存するなら、ベースラインの作り方をモデル版と一緒に固定し、記録に残してください。ここを決めずに出した寄与度は、比較にも監査にも使えません。
画像モデルとLLMアプリで判断根拠を残す、Grad-CAMとトレース記録の組み込み方
テキスト分類以外では、使える道具と残せる情報がモデルの形で変わります。
Grad-CAMで画像分類の注目領域をヒートマップにする場面と、読み違えやすい限界
Grad-CAMは、最後の畳み込み層の特徴マップに対するクラススコアの勾配を平均して重みとし、どの領域が判定に効いたかをヒートマップで示す手法です。CaptumではLayerGradCamとして同じLayer Attributionの系統に入っています。外観検査で「傷と判定した根拠が本当に傷の位置か」を検収時に目で確かめる用途に向きます。
限界は解像度です。ResNet-50に224×224の画像を入れると最終畳み込み層は7×7しかなく、細い傷や小さな異物の位置までは示せません。ヒートマップが製品の外側や背景に出たら、Clever Hansと同じ近道学習を疑い、学習データの撮影条件を見直す合図にします。画像認識の案件全体の進め方は画像認識AIとは?仕組み・できること・開発の進め方が扱っています。
LLMアプリの入出力とツール呼び出しをGenAI規約のトレースで残す設計
APIで呼ぶLLMは重みに触れられないため、統合勾配もGrad-CAMも使えません。代わりに「どの入力と参照資料から、どのモデルが何を返したか」をトレースとして残すことが、事後に説明するための現実的な手段になります。RAGなら検索で渡した文書のID、エージェントなら呼んだツール名と引数まで記録します。
属性名は、OpenTelemetryのGenAIセマンティック規約(2026年9月時点でGitHubの専用リポジトリへ移転)に合わせると、監視基盤を替えても読み直せます。gen_ai.request.modelやgen_ai.usage.input_tokensなどの体系と移行の判断はOpenTelemetryのGenAIセマンティック規約|gen_ai属性とメトリクスの体系・移行の判断に譲ります。プロンプト本文には個人情報が混ざるため、保存期間とマスキングを先に決めてから記録を始めてください。
Anthropic公開circuit-tracerのLLM内部回路の追跡範囲と限界
LLMの内部そのものを読む研究も進んでいます。Anthropicは2025年5月29日に回路追跡ツールをオープンソース化し、モデル内部の特徴が出力へどう寄与したかを帰属グラフとして描くcircuit-tracerを公開しました。公開時点の対応はGemma-2-2bとLlama-3.2-1bで、グラフはNeuronpedia上で閲覧・注釈できます。
実務への持ち込みは限定的です。重みが公開されたモデルにしか使えず、公式も出力に至る過程を「部分的に」明らかにするものだと位置づけています。業務システムの説明責任をこれで満たす設計は、2026年9月時点では採りません。社内の研究開発で、小型のオープンウェイトモデルが誤答する仕組みを調べる用途に留めるのが妥当です。
EU AI Actの適用日から逆算する、ブラックボックスAIに要る説明と記録の範囲
説明の粒度は、技術的にできることからではなく、誰に何を示す義務があるかから決めます。
高リスク義務が2027年12月2日へ延期された後も先に済ませておく記録設計
欧州委員会のAI Actページによると、2026年7月27日に施行されたAI Omnibus規則で、附属書IIIの高リスク用途(生体認証、重要インフラ、教育、雇用など)への義務は2027年12月2日、製品組込型は2028年8月2日へ移りました。高リスクAIには、ログの自動記録や、利用者が出力を解釈できるだけの情報提供が求められます。
延期は準備期間の延長であって、免除ではありません。モデル版・入力・出力・説明値を紐付けて保存する仕組みは、後から足すと過去分を再現できないため、開発の初期に入れておくべき部分です。EU域内に利用者がいるかどうかの判定や日本企業への域外適用はEU AI Actとは?リスク分類・域外適用と日本企業の対応を解説で確認できます。
事後説明を監査証跡として扱うと危うい理由と、保存すべき4つの項目
統合勾配もGrad-CAMも、モデルの真の計算を近似した説明です。ベースラインや層の選び方で結果が変わる以上、「この寄与度だから否決した」とは言えません。監査で問われたときに出すべきは、説明値そのものより、同じ判断を再現できる材料です。
- モデルの版(重みのハッシュ値と学習データの版)
- 推論時の入力と前処理の版
- 出力と、そのときのしきい値
- 説明を出した手法・ベースライン・ライブラリの版
1〜3が揃えば、説明は後からでも出し直せます。逆に4だけを保存しても、モデルを更新した時点で検証できなくなります。優先順位は上から順です。
ブラックボックスAIを採用してよい案件と、解釈可能なモデルへ切り替える判断基準
ここまでの手段は、ブラックボックスを使うと決めた後の対処です。最後に、そもそも使うかどうかの判断を言い切ります。
精度差が小さい表形式データでは解釈可能モデルを選ぶ、Rudin論文の主張と条件
Cynthia Rudinの論文Stop Explaining Black Box Machine Learning Models for High Stakes Decisions and Use Interpretable Models Insteadは、意味のある特徴量を持つ構造化データでは、複雑なモデルと解釈可能なモデルの精度差が小さいことが多いと指摘しています。再犯予測では、商用ツールCOMPASと同程度の精度を短いルールの組み合わせで出せた例が示されています。
判断基準はこうです。与信・採用・保険査定のように1件ごとの判断へ説明責任が生じ、入力が表形式なら、まず決定木や一般化加法モデルで検証データの精度を測ります。勾配ブースティングとの差が業務上許せる範囲なら、ブラックボックスは採用しません。この切り分けはモデル解釈性の記事の手法選定と合わせて使ってください。
深層学習を残すべき画像・音声・自然文と、説明ダッシュボードを作らない判断
画像・音声・自然文は、人が手で特徴量を作れないため、解釈可能モデルでは精度が大きく落ちます。ここは深層学習を採用し、検収時のGrad-CAMや統合勾配による近道学習の点検と、運用時のトレース記録で説明責任を補います。
反対に、社内向けの文書分類やレコメンドのように1件の誤りが個人の不利益に直結しない用途では、利用者向けの説明ダッシュボードを作る工数は見送ってかまいません。作るべきは開発者が検収に使う点検スクリプトまでです。要件定義の段階で「誰に、どの粒度の説明を、いつまで保存して示すか」を決めきれない案件は、説明機能を含めた設計から生成AI開発・AI受託開発の相談として持ち込むと、後戻りを減らせます。
よくある質問
ブラックボックスAIについて、開発と導入の検討で出やすい質問に答えます。
ブラックボックスAIとホワイトボックスAIの違いは何ですか?
ホワイトボックスAIは、線形回帰や決定木のように判断の仕組みそのものを人が読めるモデルを指します。係数や分岐条件を見れば、どの入力がどう効いたかが分かります。ブラックボックスAIは深層学習やLLMのように、重みが膨大で仕組みを読めないモデルです。後者は精度で勝る場面が多い一方、根拠を示すには統合勾配やGrad-CAMなどの事後説明を足す必要があり、その説明も近似にとどまります。
説明可能AI(XAI)を使えばブラックボックス問題は解決しますか?
部分的にしか解決しません。XAIの手法は、モデルの計算を別の形で近似して見せるものです。統合勾配ならベースライン、Grad-CAMなら対象の層の選び方で結果が変わり、「説明どおりにモデルが判断した」保証はありません。誤った手がかりで学習していないかを検収で点検する道具としては有効です。一方で、1件ごとの判断の正当性を示す根拠として監査に出すなら、解釈可能なモデルを選ぶか、再現用の記録を別に残す設計が要ります。
ChatGPTなどの生成AIもブラックボックスAIですか?
はい、典型例です。LLMは数十億から数千億のパラメータを持ち、しかもAPIで使う場合は重みに触れられないため、勾配を使う説明手法は適用できません。実務では、入力・参照資料・ツール呼び出し・出力をトレースとして残し、何を根拠に回答したかを後から追える状態にします。RAG構成なら回答に使った文書を利用者に示すことが、利用者向けの説明として機能します。
Captumの統合勾配とSHAPはどう使い分ければよいですか?
入力の形で分けます。テキストや画像のように、入力を埋め込みやピクセルとして微分できる深層学習モデルには、統合勾配が計算量の面で扱いやすい手法です。表形式データで勾配ブースティングなどの木モデルを使うなら、TreeSHAPが高速で安定します。SHAPにもDeepExplainerなど深層学習向けの実装がありますが、Captumは埋め込み層など任意の層を指定できる点で、Transformer系の分析に向いています。
ブラックボックスAIの判断根拠には法律上の説明義務がありますか?
説明義務の有無を決める条件は、AIを使う用途と地域です。EUのAI Actでは、雇用や教育などの高リスク用途に対し、ログの自動記録や出力を解釈するための情報提供が求められ、附属書IIIの用途は2027年12月2日から適用されます。日本では同種の法的義務は限られますが、個人に不利益な判断を自動で下す用途では、苦情対応のために判断の再現材料を残しておく設計が現実的な備えになります。
関連記事
- モデル解釈性とは?説明可能性との違いとSHAP・LIMEの選び方を実装目線で解説:表形式データでの説明手法の選定と、説明値の保存設計です。
- ニューラルネットワークとは?仕組み・種類・PyTorch実装まで実装目線で解説:ブラックボックスになる層構造そのものの解説です。
- OpenTelemetryのGenAIセマンティック規約|gen_ai属性とメトリクスの体系・移行の判断:LLMのトレース記録に使う属性の体系です。
- モデルモニタリングとは?ドリフト検知の指標としきい値設計を実装目線で解説【2026年版】:本番で説明の変化を監視する基盤の設計です。
- AIガバナンスとは?企業に求められる統制の枠組みと最新ガイドライン対応を解説【2026年版】:説明責任を社内の統制へ落とし込む枠組みです。