異常検知と変化検知: 11章メモ(密度比推定による変化検知)

以下の赤い本の11章を読みます。キャラクターは適当です。誤りがありましたらご指摘いただけますと幸いです。

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)異常検知と変化検知 (機械学習プロフェッショナルシリーズ)
井手 剛 杉山 将

講談社 2015-08-08
売り上げランキング : 56236

Amazonで詳しく見る
by G-Tools
f:id:cookie-box:20180513082851p:plain:w60

10章の「疎構造学習による異常検知」では、9章のように「ある変数のようすが少し前と今とで変化したか」を測ろうとするだけでは検知できない、「複数の変数間の依存関係の変化」を見出そうという話でしたね。そのために、まず「直接相関」と「間接相関」を区別しました。そして、この本では変数間の依存関係に専らガウス型グラフィカルモデルを仮定することにして、データから精度行列を推定すればどの変数どうしが直接相関をもつのかわかるという寸法でしたね。

f:id:cookie-box:20180513082908p:plain:w60

でもその精度行列は単にデータに対して事後分布が最大になるような精度行列をとればいい(MAP推定すればいい)ってわけじゃなかったね。精度行列は解釈のしやすさの観点でもロバスト性の観点でもなるべくスカスカであってほしい。だったら、最大化すべき目的関数が「精度行列の各要素の絶対値の和の定数倍」を差し引くようなペナルティ項を含んでいるといい。これはMAP推定において事前分布にラプラス分布を仮定すると達成される。この最適化にはブロック座標降下法を用いるんだったね。

f:id:cookie-box:20180513082851p:plain:w60

疎構造学習はある意味、明示的にわかりやすさを求めたモデルだったんですね。しかし、143ページの最後の方に気になる書き方がしてあります。つまり、明示的にわかりやすさを求める必要はないはずだよね、と。もちろん、わかりやすさを目指さずともわかりやすいモデルがぽんと出てくれば苦労しませんが…。

f:id:cookie-box:20180513082908p:plain:w60

(10.30) 式は正常データとテストデータの確率密度の比を含んでいる。最初からこれを推定すればもっとシンプルになるのでは、って10章は結ばれているね。細かい構造まで立ち入らないに越したことはないからね。

f:id:cookie-box:20180513082851p:plain:w60

いや…(10.30) 式っていうほど「密度比直接推定すればいいじゃん」って示唆してますかね…。まあ前置きが長くなったので本題の11章に入りましょう。ここでの問題設定は、正常だとわかっているデータ  \mathcal{D} が与えられたときに検査対象データ  \mathcal{D'} から異常標本を見つけ出す…特に検査対象データをひとまとめに考える…特異スペクトル変換法やグラフィカルラッソに基づく異常解析も検査対象データをひとまとめに考えていたような感じでしたが…まあいいです。正常なデータがしたがう分布  p(x) と検査対象データがしたがう分布 p'(x) をつかって、ある検査対象データの「異常さの度合い」を  \ln \bigl(p'(x) / p(x)\bigr)=- \ln \bigl(r(x)\bigr) という負の対数密度比で測ることはできます。これは4ページの「異常度」とは違って、 p'(x) は異常データのしたがう分布というわけではないので、密度比は「異常っぽさよりも正常っぽさが何倍強い」というのを表すわけではありません。異常標本に対して密度比  r(x) が小さな値を取ることは図11.1からも直感的に理解できますが、特に異常標本の割合を  \alpha、異常標本がしたがう分布を  \tilde{p}(x) として  p'(x) = (1 - \alpha) p(x) + \alpha \tilde{p}(x) とかける場合は密度比の取りうる値の範囲が議論できて、つまり 0 と  1/(1-\alpha) の間になるということですね。それで、正常標本の「異常さの度合い」は  - \alpha 程度になるので、「異常さの度合い」がここから大きくずれたらその標本は異常が疑われると。

f:id:cookie-box:20180513082908p:plain:w60

146~147ページが主張しているのは、「正常データと検査対象データの密度比 r(x)」さえわかれば検査対象データに異常標本が混入しているかどうかがわかるってことだね。

f:id:cookie-box:20180513082851p:plain:w60

なるほど、だから密度比を直接推定すればよいとなるのですね。ただ「検査対象データに異常標本が含まれているか」という問題設定自体がここで初めてで、かついきなり密度比から出発したので、147ページにあるように「発想の転換」というよりは、とりあえず考えてみたらこうなってた、って感じがしますが…。まあそれはそれで、じゃあどうやって密度比 r(x) を推定するのかということで、基本的なモデルは必要なわけで、それが (11.2) 式の線形モデル r_{\theta}(x) ですね。基底関数  \psi(x) というのは各データを b 次元空間に埋め込む写像に見えますね。この基底関数の具体的な形は後回しで、線形結合のパラメータを如何に推定するかですが、目的関数が必要ですよね。しかし、密度比の学習の目的関数などどう設定すればよいのでしょう…。

f:id:cookie-box:20180513082908p:plain:w60

r_{\theta}(x) の定義より、「r_{\theta}(x)p(x)/p'(x) に近くなければならない」→「r_{\theta}(x)p'(x)p(x) に近くなければならない」→「r_{\theta}(x)p'(x)p(x) の一般化KLダイバージェンスは小さくなければならない」という流れだね。

f:id:cookie-box:20180513082851p:plain:w60

だから r_{\theta}(x)p'(x)p(x) の一般化KLダイバージェンス(の  \theta に依存しない項を除いたもの)を目的関数とするということですか…確かにそれで線形モデル r_{\theta}(x) のパラメータを最適化できそうです。あれでも、一般化KLダイバージェンスではなくてKLダイバージェンスでは駄目なのですか? r_{\theta}(x)p'(x)p(x) もいま確率分布でしょう?

f:id:cookie-box:20180513082908p:plain:w60

r_{\theta}(x)p'(x) は確率分布の近似であって確率分布ではないかな。この積分を常に1にする制約を入れておけば KL ダイバージェンスの最小化でもいいんじゃないかな。

f:id:cookie-box:20180513082851p:plain:w60

r_{\theta}(x) は密度比なので非負ではあるとして、(11.5) 式の J(\theta) の第1項は r_{\theta}(x) が小さければ小さいほど(非負なのでゼロに近いほど)小さくなり、 第2項は逆に r_{\theta}(x) が大きければ大きいほど小さくなるので、これらが上手くバランスするところに最適な r_{\theta}(x) があるんですよねきっと。ただ、この式を最適化するときに第1項を1に等しくするという制約は自ずとは入らないですよね? 150ページの「すなわち、問題 (11.5) は、制約  \langle r_{\theta} \rangle _{\mathcal{D}'} =1 のもとで訓練データに対する異常度を最小にする最適化問題と解釈できます」というの、ここで新たにそのような制約を課したんでしょうか?? 厳密に1に等しくならなければならないというのではなく単に第1項が r_{\theta}(x) に制約を課していると言いたかったんでしょうか?? よくわかりません…。

つづきは後で