深層学習

モデルの近似解釈

複雑な予測器を、予測点の近傍での線形近似やShapley値による寄与分配に置き換えて局所的に読む方法です。

  • B|標準
  • 深層学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

モデルの近似解釈は、複雑なモデル全体を読み切らず、ある入力の予測を単純な説明モデルで近似する考え方です。LIMEは入力の周辺を摂動し、元モデルの出力に合う線形モデルを局所的に学習します。SHAPは特徴量を協力ゲームの参加者とみなし、Shapley値で一つの予測への寄与を配分します。

巨大な地図を全部読む代わりに、現在地の周囲だけを拡大した案内図を作るのがLIMEです。SHAPは、同行者が目的地への到達にどれだけ効いたかを、参加順の偏りが出ないよう分担計算する方法です。どちらも地図全体ではなく、特定地点の読み解きです。

なぜ必要か

精度の高いモデルほど、予測の根拠を人が直接追いにくくなります。「この入力のどの特徴が、どちら向きに予測へ効いたか」を取り出せると、予測の採用、モデル比較、信頼できない理由の調査を判断しやすくなります。LIMEの論文は、分類器を限定せず個別予測を説明することと、説明を使った信頼判断・モデル選択などを扱っています。

読みたい対象近似解釈で得るもの読み過ぎになるもの
一つの予測その入力の周辺で効いた特徴モデル全体の規則
手法の比較個別予測を比べる寄与因果効果の証明

示すのは元モデルの局所的な振る舞いです。LIMEの線形モデルは近傍の選び方や摂動結果に依存し、別の近傍では説明が変わり得ます。説明が安定しないときは、モデル全体の因果関係や普遍的な重要度と読み替えません。SHAPも個別予測の値なので、対象入力と寄与を測る基準を固定して比較します。

仕組み

入力を x\mathbf{x}、元の予測器を ff、説明点を x0\mathbf{x}_0 とします。LIMEでは x0\mathbf{x}_0 の近くの入力 z\mathbf{z} を作り、近いほど重い πx0(z)\pi_{\mathbf{x}_0}(\mathbf{z}) を付けます。線形モデル g(z)=β0+β⊤zg(\mathbf{z}) = \beta_0 + \boldsymbol{\beta}^{\top}\mathbf{z} を元モデルの出力に合わせて学習します。

arg⁡min⁡g∈G∑zπx0(z)(f(z)−g(z))2+Ω(g)\arg\min_{g \in G} \sum_{\mathbf{z}} \pi_{\mathbf{x}_0}(\mathbf{z})\bigl(f(\mathbf{z})-g(\mathbf{z})\bigr)^2 + \Omega(g)

GG は解釈可能なモデルの集合、Ω(g)\Omega(g) は複雑な説明を抑える項です。係数 βj\beta_j の符号と大きさを、その予測での特徴量の局所的な影響として読みます。元モデルを線形に置き換えたのではなく、周辺だけを近似した点が要点です。

SHAPは予測を基準値と各特徴の寄与の和に分けます。特徴量集合を NN、集合 SS を使ったモデル出力を v(S)v(S) とすると、特徴 ii のShapley値は次です。

ϕi=∑S⊆N∖{i}∣S∣!(∣N∣−∣S∣−1)!∣N∣!(v(S∪{i})−v(S))\phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!(|N|-|S|-1)!}{|N|!}\bigl(v(S \cup \{i\})-v(S)\bigr)

v(S)v(S) は集合 SS の出力、ϕi\phi_i は特徴量 ii の寄与です。全特徴の寄与は、基準値から対象予測までの差になります。論文は、望ましい性質を持つ加法的特徴量重要度のクラスを整理し、そのクラスで一意な解としてSHAPを位置づけ、既存手法との統一を示しています。

試験でどう問われるか

問われ方正解に寄る条件引っかけ
LIMEの説明手順入力を摂動し、予測点の近傍で線形モデルを学習モデル全体を一度だけ線形回帰する
SHAPの考え方協力ゲームのShapley値で個別予測の寄与を配分勾配だけで重要度を決める
説明の範囲元モデルの局所的な近似・個別予測の説明全入力域の規則や因果効果と断定する
手法の比較LIMEは近傍摂動、SHAPは寄与配分の枠組みどちらも同じ線形回帰とする

実装で確かめる

二つの特徴を持つ非線形な予測器の周囲を摂動し、重み付き線形回帰を当てます。続いて、二特徴の参加順を平均するShapley値を計算します。LIMEの係数は近傍への近似係数、SHAPの値は基準値からの寄与分解で、同じ量ではありません。

import numpy as np
rng = np.random.default_rng(0)
x0 = np.array([0.7, -0.2])
f = lambda x: np.sin(x[:, 0]) + x[:, 1] ** 2
z = x0 + rng.normal(0, 0.15, size=(200, 2))
y = f(z)
w = np.exp(-np.sum((z - x0) ** 2, axis=1) / 0.15 ** 2)
X = np.c_[np.ones(len(z)), z]
beta = np.linalg.solve(X.T @ (w[:, None] * X), X.T @ (w * y))
v0, v1, v2, v12 = f(np.array([[0., 0.]]))[0], f(np.array([[x0[0], 0]]))[0], f(np.array([[0, x0[1]]]))[0], f(x0[None, :])[0]
phi = np.array([(v1 - v0 + v12 - v2) / 2, (v2 - v0 + v12 - v1) / 2])
print("LIME係数:", beta[1:], "SHAP:", phi, "整合:", phi.sum(), v12 - v0)

取り違えやすいもの

手法・概念モデルの近似解釈との切り分け
LIME摂動した近傍に重みを付け、個別予測を局所モデルで説明する
SHAPShapley値を使い、基準値からの個別寄与を加法的に分解する
大域的な重要度データ全体や多数の予測の要約で、特定入力の説明とは対象が違う
感度分析入力変化による出力変化を見る分析で、寄与配分とは定義が違う

想起チェック

LIMEは何を摂動し、何を学習するか

説明対象の入力の周辺を摂動し、元モデルの出力に合う重み付き線形モデルを局所的に学習します。

SHAPの寄与は何に基づいて配分されるか

特徴量を協力ゲームの参加者とみなし、各参加順での限界的な寄与を平均するShapley値に基づきます。

近似解釈の説明が安定しないとき、何を断定してはいけないか

近傍や基準の変更で説明が変わる可能性があるため、局所的な説明をモデル全体の規則や因果効果として断定しません。

出典