Multi-task Multi-modal Models for Collective Anomaly Detectionを読んだ

勤労に感謝しながら読みました(論文, スライド)。いい論文をありがとうございます。

概要

基本的にはSparse Gaussian Markov Random Field Mixtures for Anomaly Detection(ICDM 2016)の素直な拡張だと思います。式は少しゴツいですが、拡張を順番に追っていくと大丈夫。拡張のされ方は以下のようになっています。

  • 次元数がある程度高いような場合、どの事例が外れ値か分かるだけでは不十分。どの次元がいつもと異なる動きをしているか教えて欲しい
    • Gaussian Markov Random Field(GMRF)
  • GMRFだけではシステムが状態を一つしか取らないような状況にしか対応できない。昼/夜、停止中/運転中/高速を運転中などいくつかの状態を通常状態として取り得る場合にも対応したい
    • Gaussian Markov Random Field Mixtures
    • ICDM 2016
  • システムの状態がいくつかある状態を仮定しつつ、それぞれの情報源(この論文ではタスクと読んでいます)の特性をモデルに反映させたい
    • ICDM 2017。この論文です
    • 例: 車の状態といっても運転手によってdriving conditionはかなり変わる
    • 例: 学生でも学校によって特性が異なる、その特性をモデルに反映したい
    • 例: 同じはてなのWebサービス(昼と夜でアクセスパターンが異なるなどの特徴がある)といっても、はてなブックマーク、はてなブログ、カクヨムではそれぞれ異なった特性がある。それらを反映したい
      • 自分で勝手に想定した例です

それぞれのタスクの特性をモデルに反映させたい場合、各タスク毎にGaussian Markov Random Field Mixturesのモデルパラメータを推定するというのは一つの手です。しかし、モデル一個当たりに使用できる学習データの量は減ってしまします。学習データの量を増やすために特性を反映させず一個のモデルを作る方法もありますが、全体としてぼやけた推定になってしまいます。この論文ではいわゆるマルチタスク学習を用いて、様々な学習データを使えるうまみを利用しつつ、それぞれのタスクの特徴を反映させる手法を提案しています。

この手法が効きそうなMotivating exampleが挙げられていて、これを見るのが分かりやすかったです。図は論文のFigure 2から引用しました。1次元でタスクが2つあるようなケースです。タスク1、タスク2ともに大きな山が二つあるようなmulti-modalityがある分布になっていますが、それぞれの山の尖り方は異なっています。

f:id:syou6162:20171123013356p:plain

単純なマルチタスク学習(MTL)ではmulti-modalityを反映できず、ぼやけた分布になってしまいます。混合ガウス分布(GMM)では二つの山こそ表現できていますが、それぞれのタスクの山の尖り方は反映できていません。今回の提案手法(MTL-MM)ではmulti-dalityを反映しつつ、それぞれの山の尖り方もかなり反映できています。事例x毎にタスクのラベルsが付いているという状況は割とあるので、現実的な問題設定でもいけそうです。

モデル化: Multi-task sparse GGM mixture

マルチタスク間の共通点や相違点を反映しつつ、どの変数が異常か見て分かりやすく(=結果がスパースになっている)なるようなモデルをベイズ流の生成モデルで記述していきます。モデル化はICDM 2016の論文とそこまで違いはありません。クラスタ毎に考えていた潜在変数がクラスタ/タスク毎に考えるようになったくらいが変更点でしょうか。結果がスパースになるように事前分布にはラプラス分布を組み込んでいきます。

モデルパラメータの推定

式は結構ゴツいですが、ICDM 2016のときと同様に変分ベイズを使い、近似しつつ変分下限を最大化していきます。やり方は大体同じですが、潜在変数z^sに対するパラメータ\pi^sの(スパースになる)解き方が二通り紹介されています。

一つ目は従来からあるような変分ベイズの流儀で進めていく方法。関連度自動決定の枠組みで結果がスパースになってくれるというやつです。しかし、今回の定式化の場合、目的関数に\log \pi^s_kという項が入っており、スパースになる(\pi^s_k = 0)とこの項がマイナス無限大になってしまい都合がよくありません。論文ではヒューリステックを使って解決する方法が述べられています。

二つ目は\pi^sにl0ノルムに相当するような事前分布(これも結果はスパースになる)を考えて、目的関数を書き換えるという方法です。この目的関数はconvex mixed-integer programming (MIP)の形式になっています。基本的には汎用ソルバーに投げて解くのかなと思っていたのですが、論文では頑張ってアルゴリズムを導出していました(ごつかったので詳細は追ってない...)。ここまで頑張ってconvex mixed-integer programmingを解く必要はあるのか(関連度自動決定+ヒューリステックでもよさそう?)と思って論文を読み進めていたところ、6.1章の実験で頑張ったほうがよい解が得られたと書いてあったので御利益はあるようでした。

モデルパラメータが推定できれば、あとは簡単です。モデルは基本的にはGaussian Markov Random Field Mixturesなので、ある事例が異常かの判定は負の対数尤度を計算すればよいだけですし、ある事例のある次元が異常かどうかはGaussian Markov Random Field Mixturesならば簡単に計算できます(条件付き確率が簡単な形になるため)。詳しくは異常検知本を読みましょう。

実験

ここではLondon SchoolのデータセットとAnuran Calls(カエルの鳴き声?)のデータセットで提案手法と既存手法の精度比較が行なわれていました。どちらのデータセットでも提案手法が結構なマージンで勝っていましたが、データセットはどちらも元々異常検知でよく使われるデータセットというわけではなく、実験の状況設定がいいものなのかは自分には判断しかねるという感想でした(しかし、マルチタスクの設定になっている異常検知用のデータセットは今のところないと思うので、仕方なさそう)。