Featured image of post モデルの予測結果を説明するLIMEの理論

モデルの予測結果を説明するLIMEの理論

本記事はQrunchからの転載です。


モデルの予測結果を説明する方法としてLIMEがあります。 LIMEはディープラーニングに限らず、任意のモデルに対して予測結果を適用することができます。 また手法としては結構有名かと思います。

今回はそんなLIMEの理論について説明します。

論文:“Why Should I Trust You?” Explaining the Predictions of Any Classifie

LIMEの戦略

任意のモデルffに入力xRdx \in \mathbb{R}^dが与えられたときの予測結果f(x)f(x)への特徴量の寄与を求めることを考えます。

LIMEではxx近傍(近傍については後述)に対してはffと同じような予測をすることができる、かつ解釈が容易なモデルggを求めます。 例えばggが線形モデルの場合には、ggの各係数を見ることで特徴量の寄与を得ることが可能です。あるいはggが決定木であれば、人間でもある程度容易にモデルの解釈が可能です。ですから、このようなモデルggffの代わりに使って、予測結果の解釈をしようというモチベーションです。 ただし、LIMEではggには特徴量の値が0011となるベクトルxx’が入力として与えられるものとします。これは何らかのルールでxxの要素とxx’の要素が対応づいているとします。ここも詳細をあとで述べます。 以上のように、解釈が難しいモデルffを解釈が容易なモデルggに落とし込むことがLIMEのやりたいことになります。

実際にどうやってggを求めるのかといえば、次式のようになります。 argmingG L(f,g,πx)+Ω(g).{\rm argmin_{g \in G}} \ L(f, g, \pi_x) + \Omega(g).

ここで、

  • LLは損失関数です。xx近傍でggの予測値がffの予測値に近いと、小さくなるようにLLを定義します。
  • πx\pi_xは損失関数で使われる重みで、xxの近傍点がxxから遠いほど小さい値を取るようにします。詳細は後述する線形モデルの項を参照。
  • Ω\Omegaはモデルの複雑さとなります。決定木を使う場合には木の深さであったり、線形モデルの場合には非ゼロの重みの数になります。モデルを解釈するためには、モデルはシンプルな方が良いため、Ω\Omegaを加えることでggをなるべく人間にやさしいモデルにしてあげます。

まだ色々と詳細を述べていないため、わからないところは多々あると思いますが、上式はなるべくシンプルなモデルでxxの近傍でffと近似するggを見つけるといったことを意味します。 この局所的に近似されたggが得られれば、xx近傍での特徴量がggへ与える寄与がわかる、つまりffへ与える寄与が近似的にはわかります。

次に画像の場合のケースについて、詳細に踏み込みます。

画像に対する線形モデルでのLIME

superpixel

画像にLIMEを適用する場合、まず次のように入力画像をsuperpixelに分割し、領域ごとに寄与を求めていきます。

引用元:https://towardsdatascience.com/understanding-how-lime-explains-predictions-d404e5d1829c

実際には上記のようにある程度細かく領域を分けますが、以下では例として扱いやすいように次のような画像を考えて、粗く領域を分けていきます(左がオリジナルのくまモンで、右がsuperpixelに分割されたくまモンです)。

各領域をggに与える入力xx’の各要素に対応させます。例えば1番の領域がxx’の1番目の要素、2番が2番目の要素のようにします。その上で、xx’の各要素が1のときには対応する領域のピクセルがxxと同じピクセル値、0のときにはその領域がグレーで埋められた画像と対応していると考えます。 具体的には x=[0,0,1,1,0,0,0,0]x’ = [0, 0, 1, 1, 0,0,0,0] としたとき、3番目と4番目だけが1ですので、このxx’に対応した画像は次のようになります。

近傍のサンプリング

LIMEでは xxの近傍のサンプリングをおこないます。 画像の場合に近傍とはどうなるんでしょうか?直感的には謎じゃないでしょうか。

LIMEの場合には分割された領域のうち、適当な個数(個数もランダムに決めますが、個数の下限は決めておきます)をそのままにし、それ以外をグレーに置き換える処理をします。 xx’の話でいえば、適当な個数の要素については1とし、それ以外は0とする処理に等しいです。

このようにして得られた画像をxxの近傍として扱います。またこのようにして近傍を得ることを、近傍のサンプリングとします。 先程示したxx’に対応した画像もxxの近傍になります。

線形モデルのケース

ggが線形モデルの場合にはg(z)g(z’)は次のようになります。

線形モデルの係数(寄与)を求めるため、次のように損失関数LLを定義します。 L(f,g,πx)=z,zZπx(z)(f(z)g(z))2. L(f, g, \pi_x) = \sum_{z,z’∈Z}\pi_x(z) (f(z) − g(z’))^2. ここでπx\pi_xは以下のとおりです。 πx=exp(D(x,z)2/σ2). \pi_x = \exp(−D(x, z)^2/\sigma^2). zzxx近傍の画像をあらわし、zz’は先程まで説明していた(zzに対応する)xx’と同じものです。ZZはサンプリングされたzzzz’のペアになります。

上式の意味合いとしては、近傍画像zzの学習済みモデルでの予測値f(z)f(z)と解釈が容易なモデルg(z)g(z’)が近い値になるようにggを学習していきます。

また、πx\pi_xの存在のため、zzxxに近ければ(=近傍が入力画像に近い)二乗誤差(f(z)g(z))2(f(z) − g(z’))^2LLに与える影響は大きいですが、一方でzzxxと大きく異なれば(=近傍が入力画像と大きく異なる)、(f(z)g(z))2(f(z) − g(z’))^2LLに与える影響が小さくなります。 よりxxに近いzzに関してはg(z)g(z’)が良くf(x)f(x)に近似されるべきですので、このように重み付けされているのは分かる話かと思います。

なお論文中ではLasso回帰としてargmingG L(f,g,πx)+Ω(g){\rm argmin_{g \in G}} \ L(f, g, \pi_x) + \Omega(g)を解いています。

LIMEの実験結果

実験結果は他の方のブログなどで散々書かれていますので、そちらを参考ください(力尽きました)。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。