機械学習
MachineLearning
DeepLearning
論文読み

流行りのAdversarial Examplesを使って、流行りのDomain Adversarial Netsを改良する、
カツカレー論文 "Generalizing across domains via cross-gradient training" の紹介をしていきます。

この論文はiclr2018 under_reviewの論文で、投稿された中でもtop3%に入るスコアを獲得しています。

新規性は2つで、どちらもドメイン系の研究で僕が非常に気になっていた問題です。
- Domainの情報を捨てずに分類ができる
- 訓練データに登場しない未知のドメインに対して汎化できる

また、本記事はAdversarial ExamplesとDomain Adversarial Netsに関する初歩的な知識を必要とするかもしれません。以下に参考にさせていただいたサイトを置いておきます。
- 「はじめてのAdversarial Example」, Elix Tech Blog
- ドメイン適合に関するスライド

それでは紹介に移りましょう。

abstract

  • Domain Adversarial Netsのような従来のドメイン適合の手法は、ドメイン情報を捨てることで特定のドメインへの過剰適合を防いでいた。
    • 別のドメインへの汎化性能は上がるが、ドメイン情報を捨てることで既知のドメインへのラベル予測性能が落ちるという問題があった
  • 提案手法CrossGradは、特定のドメインに対する過剰適合を防ぎながらも、ドメイン情報を利用する
  • また、複数のドメインのデータを使った訓練によって、未知のドメインに対して汎化する分類器を作ることができる
    • いわゆるターゲットドメインの訓練データが一切必要ない

手法

ドメイン情報を利用するためのベイズ的定式化

スクリーンショット 2017-12-08 17.11.56.png

  • 観測データ$x$は、ラベル$y$と、ドメイン$d$で条件付けた確率分布$Pr(x|y, d)$に従うと考える
  • ドメイン$d$はその埋め込み表現$g$を持つ
  • $y$の事後分布は、$d$の周辺化によって以下のように表せる
    • ただし訓練データとして手に入るドメインは、ドメインの母集合Dからの一様なサンプリングであるという仮定を置いている

スクリーンショット 2017-12-08 17.14.12.png

  • ただし、$\hat g = argmax_g Pr(g|x)$
  • よって、$Pr(g|x)$をモデル化すれば、ドメイン情報を利用したラベル予測を行なうことができる
  • しかしこれをナイーブに行なっても、$Pr(y|x, \hat{g})$が特定のドメインに対して過剰適合する危険がある
  • そこで、次節の工夫が必要となる

adversarial exampleを利用したdata augmentation

スクリーンショット 2017-12-08 17.48.41.png

  • $Pr(y|x, \hat{g})$の特定のドメインへの過剰適合を防ぐため、$\hat{g}$の摂動に対して$Pr(y|x, \hat{g})$が不変であればうれしい
  • そこで、ある$x$に類似するが、そのドメインは最も遠くにあるようなadversarial example $x^{\prime}_d$を作る
    • $ x^\prime_d = x + \epsilon \nabla J_d $
      • ただし、$J_d$はドメイン識別器$Pr(d|x, \theta_d)$のloss
  • この$x^\prime_d$に対する予測ラベルが変わらなけらば、識別器$Pr(y|x, \hat{g})$はgの摂動に対して汎化している
  • しかし、摂動が加わった$x^{\prime}_d$の真のラベルが変化しないという保証はない
    • 例) MNISTで1の画像を斜めにしたら7っぽく見えるみたいなこと??
    • ドメインとラベルの相関をなるべく弱くすれば良さそう
  • そこで、ある$x$に類似するが、そのラベルは最も遠くにあるようなadversarial example $x^{\prime}_l$を作る
    • $x^\prime_l = x + \epsilon \nabla J_l $
    • ただし、$J_l$はラベル識別器$Pr(y|x, \hat{g}, \theta_l)$のloss
  • この$x^\prime_l$に対するドメインが変わらなけらば、ドメイン識別器$Pr(d|x, \theta_d)$はyとの相関が弱い
  • 図にすると以下。二つの識別器の勾配を使ってadversarial exampleを作っているので、提案手法名はCrossGrad

スクリーンショット 2017-12-08 18.03.30.png

実験

設定

  • タスク
    • フォント付き文字認識
      • それぞれのフォントがドメイン
    • 手書き文字認識
      • それぞれの文字の書き手がドメイン
    • MNIST
      • 文字を傾けてドメインを作る
    • 音声認識
      • それぞれの話者がドメイン
  • 比較するモデル
    • Baseline: ドメイン汎化なし
    • DAN: Domain Adversarial Networks
    • LABELGRAD: label adversarial perturbation
      • [goodfellow+ 2014] Explaining and Harnessing Adversarial Examples
    • CROSSGRAD: 提案手法

結果

  • 四つのタスクすべてで勝利

スクリーンショット 2017-12-08 19.04.56.png

  • adversarial exampleが、gの空間上でドメイン間を滑らかに繋いでいる様子

スクリーンショット 2017-12-08 18.37.04.png

  • 訓練データに使えるドメインの数が増えると、何も工夫しないほうがよい(提案手法が負ける)
    • 音声認識で話者の数を1000にした場合
    • データがあれば勝手に汎化するのはまあ当たり前

スクリーンショット 2017-12-08 18.38.36.png

結論

  • adversarial exampleを使ったdata augmentation
  • ドメインの情報を捨てることなく、新しいドメインに汎化する
  • 特に訓練データとして得られるドメイン数が少ない場合に有効

感想

  • ここから個人の感想です。
  • 「ドメイン情報捨てるの勿体無い問題」を、当たり前だけど納得感のあるベイズ的な定式化から始めて、そこで生じうる過剰適合の問題をadversarial exampleで解くという一連の流れが美しいです
  • ただし、本手法が対象としているのはあくまで"ドメイン汎化"なので、以下のようなときは別のアプローチが必要だなーと思いました
    • 公平性・プライバシーの観点からドメイン情報を捨てたい時
    • 訓練時のドメインとテスト時のドメインが遠すぎる時(シミュレータと実ロボットとか?)
  • Crossでやる必要が微妙にない気がしていて、比較を載せて欲しかったです
    • 普通adversarial exampleって、摂動を加えてもラベルは変化しないことを仮定してよいのでは?
  • カツカレー美味しい!