yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[1810.00740] Improving the Generalization of Adversarial Training with Domain Adaptation [paper-reading] #49

Open yoheikikuta opened 4 years ago

yoheikikuta commented 4 years ago

論文リンク

https://arxiv.org/abs/1810.00740

公開日(yyyy/mm/dd)

2018/10/01

概要

adversarial training は汎化性能(この文脈では言葉の使い方が少し難しいが、test の adversarial example に対する精度と test の clean data に対する精度があり、前者のみを指す場合も見受けられるが個人的には両方含めたものとして使う)を上げ得るものと期待されるが、従来の手法ではそう単純には汎化性能が上がらない。 (この論文では)その原因を adversarial training において使う adversarial example が限られた手法で生成したものでしかないので十分な representation learning になっていないせいだと考える。 従来の手法ではアンサンブルを使ったり如何にして良い adversarial example を入手して adversarial training するかに注目したものが多いが、それは計算コスト的にも高くつく。 この論文では違うアプローチを取り、問題設定を clean, adversarial の二つの domain が存在するような限られたデータでの domain adaptation の問題と捉えて、domain adaptation 的な loss を導入して adversarial training をする。adversarial example 自体は単純な FGSM などで作る。 実験では test clean data に対して degradation を起こさず(CIFAR-100 ではむしろ精度が高くなる)、test adversarial example に対しても良い精度を発揮することを示した。

yoheikikuta commented 4 years ago

画像データに対しては adversarial training をすると、test clean data に対して degradation をしているような結果を見ることが多かった。

実用上は clean data に対して性能が落ちないような adversarial training が欲しいところなので、そういうことができてる論文はないかなと思っていたら見つけた論文。

ということで読んでいく。

yoheikikuta commented 4 years ago

adversarial training の基本は何かしらの攻撃方法に基づいて adversarial example を作成してそれを学習データとすることにあるが、どうしても特定の攻撃方法で生成した adversarial example に過学習しやすい。

この論文は、学習手順を target domain のサンプルが少ないという状況での domain adaptation として定式化してその問題を解決しよう、という狙い。 ここで、 source domain は clean data から成るもので target domain は adversarial data から成るものと定義している。

具体的には unsupervised と supervised の両方で domain adaptation の loss を導入して、clean 分布と adversarial 分布間の gap を最小化するのと類似度を最大化することで、うまく汎化してくれることを期待する。

yoheikikuta commented 4 years ago

この論文では adversarial training をする際の adversarial example を作る際の手法は従来の主要なものを使うのみで特筆すべき点はない。

adversarial training の loss の作り方が手が混んでいるものになっていて、そこが論文の主たる貢献になっている。これは、典型的な adversarial training (clean と adv. に対して loss を計算して α, (1 - α) で重みづけて足す) では clean data に対する adv. data の領域は大きいので、そのままでは学習に適した adv. data を選ぶのが難しいという問題意識に起因している。

この論文で使う攻撃方法を挙げておく。

yoheikikuta commented 4 years ago

label leaking (https://arxiv.org/abs/1611.01236 で指摘されたもの) について。

元々、adversarial example を作る時の微分の計算には、y_true を用いていた。これはナイーブにはそれで良さそうに思える。 しかしこれには問題が生じ得る。具体的には以下のような状況が発生し得る。

これを防ぐために、true label を作るのではなく、x に対するモデルのラベル出力 argmax(f(x)) を使う。

yoheikikuta commented 4 years ago

本題の loss function の提案。 clean data 分布と adv. data 分布には高レベルの表現空間で大きな分布シフトがあることが知られている(だからこそ誤認識する)ので、いかにしてモデルがそれらを近しいものと認識するように loss を作るのかという問題になる。

まずは全体像として以下の loss になる。 未定義のものはすぐに説明するとして、最初の二項が clean, adv. に対する単純な classification loss となり、残りの項が domain adaptation を取り入れた loss になっている。domain adaptation の項は Unsupervised Domain Adaptation (UDA) と Supervised Domain Adaptation (SDA) とから成る。

まずは UDA の項から。 これは CORrelation ALignment (CORAL) と Maximum Mean Discrepancy (MMD) の二つの寄与から成る。 CORAL は、logit space (k 次元空間) において clean と adv. がそれぞれ別の多変数正規分布から成るものと仮定して、covariant matrix C の $ l_1 $ loss として定義する。簡単な分布に従うことは仮定し、その上で(平均の違いは無視して)同じ分布になることを要請している。

MMD は標準的な分布間距離を測る指標である。clean と adv. の平均ベクトルの違いが $ l_1 $ の意味で最小になることを要請している。下の式で第一項は $ x ∈ D $ (clean data) の間違いである。arXiv でまあまあ revise されている割にはミスが多い論文だな。

次いで SDA に関して。 まず $ cj $ をクラス $ j $ の logit space での中心とする。$ c^n ∈ C/{c{y_{true}}} $ は正解ラベル以外のラベルの logit space での中心。 これを用いて、softplus: $ \ln(1 + \exp()) $ で以下のように loss を構築する。正しいラベルの中心には近づくようにして、正しくないラベルの中心からは離れるようにするというものになっている。

logit space での label の中心は model 出力によって計算するものなので、学習とともに変動していくものである。最初はランダムに設定し、それ以降は以下の更新式で更新していく。1_condition は condition が true なら 1 でそうでなければ 0 を取るものとして定義している。

yoheikikuta commented 4 years ago

loss は項の数が多いのでうまくバランスして学習が進むのかなという懸念はありつつも、それぞれは特に難しいところはない。

更新アルゴリズムは以下。 adv. example を使うのでネットワークの更新状態に応じて都度 $ x_{adv} $ を生成しないといけないのと、上で書いたように logit space でのクラス中心を更新しないといけないが、それ以外は特に注意すべき点はない。

yoheikikuta commented 4 years ago

ということで実験。まずはセットアップを確認しておく。

データは Fashion-MNIST, SVHN, CIFAR10, CIFAR100 を使う(どれもデータは [0, 1] に正規化)。

baseline model は以下の 4 つを使用。

実験は white-box と black-box setting で実施していて、white-box はそのままだが black-box は学習したモデルの test データでの評価の際にテストデータは学習モデル以外のモデルで構築した adv. example を使用するというもの。

yoheikikuta commented 4 years ago

結果は以下。 全データセットで完全勝利というわけではないが、この中で最も難しい CIFAR-100 では特に優秀な成績を収めている。

特に CIFAR-100 では clean data に対しても性能がかなり上がっている点が面白い。

一方で簡単なデータセットでは他の手法よりも adv. data に対しては優秀だが clean data での degradation の程度は大きいという結果になっている。 簡単なデータのテストデータではそもそも適切に汎化性能を評価できてないという可能性もあると思うのだが、そういうのを真面目に調べている論文とかってのはあるんかな。

ともかく、提案手法である ATDA はなかなか優秀な手法であることが示された。

yoheikikuta commented 4 years ago

他の指標として Local Loss Sensitivity という量も計算している。 これは clean data の test data に対して loss を計算するもので、loss に対するある種の滑らかさを測るものになっている。

この Local Loss Sensitivity という指標で見ると、提案手法が全データセットで他の手法を outperform している。

その他にも clean と adv. 間の MMD distance を計算して提案手法が優れているとも言っているが、これは直接 loss に設定しているのでまあ当然だろう。

yoheikikuta commented 4 years ago

embedding space で t-SNE を調べた結果もなかなか面白い。 各種手法で学習したモデルで {training, test, FGSM adv. data, PGD adv. data} それぞれで embedding sp. の可視化をしたものが以下(データは Fashion-MNIST を使用)。

NT や SAT では adv. data での分布がだいぶ歪められてしまっているが、提案手法では分布が保たれていて狙い通り adv. example も clean data と同じようにモデルが解釈できていることが分かる。

ちょっと気になるのは NT とか SAT と比べるとそもそも training data での embdedding sp. でクラス間のマージンが少なくてギュッと詰まっているように見えるという点だ。これのせいで clean data での性能劣化が起きているのだろうか?metric learning とかでも使われるように margin を確保するような工夫も加えることでその辺も解決できたら面白そう。

yoheikikuta commented 4 years ago

ということで一通り読んだ。 domain adaptation とかやったことなかったけど、こういうところで関連が出てくるとちょっとずつ勉強できるのでいいね。

adversarial example のみならず clean data に対する汎化性能がどうなるのかというのも興味があるので、この辺の話題はちょこちょこ追っていきたいところ。