Deep Weakly-supervised Anomaly Detection

1. どんなもの?

  • 大量の正常データと少量の異常データからAnomaly Detectionを行う
  • 入力は2入力でWeight SharingされたNNから得られた特徴ベクトル同士を結合して異常度回帰

2. 先行研究と比べてどこがすごい?

  • 正常データからAnomaly Detectionモデルを作れるのは当たり前
  • 実利用においては,少量の異常データを如何にうまく使うかが求められる
  • DevNetの異常度のreference scoreがデータに一切依存していないことを改善?

3. 技術や手法の"キモ"はどこ?

  • Pairwise Relation を学習
  • 大量の正常データと少量の異常データからAnomaly Detectionを行う
  • テスト時には正常データと異常データと比較することで異常度算出

変数の定義

  • U={u1,u2,,uN}\mathcal{U} = \{ u_1, u_2, \cdots, u_N \} : unlabeled samples (正常データとごく少量の異常データ)
  • A={a1,a2,,aK}\mathcal{A} = \{ a_1, a_2, \cdots, a_K \} : labeled samples (少量の異常データ)
  • その他の変数は下を参照

Loss関数

argminΘ1Bxi,xj,yijByijϕ((xi,xj);Θ)+λR(Θ) \underset{\Theta}{\arg \min } \frac{1}{|\mathcal{B}|} \sum_{\mathbf{x} _ {i}, \mathbf{x} _ {j}, y_{i j} \in \mathcal{B}}\left|y_{i j}-\phi\left(\left(\mathbf{x} _ {i}, \mathbf{x}_{j}\right) ; \Theta\right)\right|+\lambda R(\Theta)

  • B\mathcal{B}U\mathcal{U}(正常)とA\mathcal{A}(異常)からサンプリングされたサンプルで構成
  • c1<c2<c3c_1 < c_2 < c_3
  • 異常/異常の組み合わせ : y=c1y=c_1 (めちゃめちゃ遠くに)
  • 異常/正常の組み合わせ : y=c2y=c_2 (遠くに)
  • 正常/正常の組み合わせ : y=c3y=c_3 (近くに)

異常度の算出

sxk=12E[i=1Eϕ((ai,xk);Θ)+j=1Eϕ((xk,uj);Θ)] s_{\mathbf{x}_{k}}=\frac{1}{2 E}\left[\sum_{i=1}^{E} \phi\left(\left(\mathbf{a}_{i}, \mathbf{x}_{k}\right) ; \Theta^{*}\right)+\sum_{j=1}^{E} \phi\left(\left(\mathbf{x}_{k}, \mathbf{u}_{j}\right) ; \Theta^{*}\right)\right]

  • xkx_kが異常ならsxks_{x_k}が大(理論値 : c1+c2c_1 + c_2
  • xkx_kが正常ならsxks_{x_k}が小(理論値 : c2+c3c_2 + c_3

4. どうやって有効だと検証した?

  • 様々なAD datasetでSoTA
    • Deep SVDD: AD.タスクに合わせてenhanceしたモデルを実装したとのこと
    • prototypical networks (FSNet) : few-shot classification
    • iForest: AD
    • DevNet: 筆者のmethod

5. 議論はあるか?

  • c1c_1, c2c_2, c3c_3のチューニングは必要?
  • サンプリング方法を同じにしたSiamse Networkとの比較は?
  • Deep SVDDをどうenhanceしたか?

6. 次に読むべき論文はある?

Avatar
中塚 俊介
R&D Engineer

My research interests are in computer vision, especially in anomaly detection and XAI.