-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1810.00740] Improving the Generalization of Adversarial Training with Domain Adaptation [paper-reading] #49
Comments
画像データに対しては adversarial training をすると、test clean data に対して degradation をしているような結果を見ることが多かった。 実用上は clean data に対して性能が落ちないような adversarial training が欲しいところなので、そういうことができてる論文はないかなと思っていたら見つけた論文。 ということで読んでいく。 |
adversarial training の基本は何かしらの攻撃方法に基づいて adversarial example を作成してそれを学習データとすることにあるが、どうしても特定の攻撃方法で生成した adversarial example に過学習しやすい。 この論文は、学習手順を target domain のサンプルが少ないという状況での domain adaptation として定式化してその問題を解決しよう、という狙い。 具体的には unsupervised と supervised の両方で domain adaptation の loss を導入して、clean 分布と adversarial 分布間の gap を最小化するのと類似度を最大化することで、うまく汎化してくれることを期待する。 |
この論文では adversarial training をする際の adversarial example を作る際の手法は従来の主要なものを使うのみで特筆すべき点はない。 adversarial training の loss の作り方が手が混んでいるものになっていて、そこが論文の主たる貢献になっている。これは、典型的な adversarial training (clean と adv. に対して loss を計算して α, (1 - α) で重みづけて足す) では clean data に対する adv. data の領域は大きいので、そのままでは学習に適した adv. data を選ぶのが難しいという問題意識に起因している。 この論文で使う攻撃方法を挙げておく。
|
label leaking (https://arxiv.org/abs/1611.01236 で指摘されたもの) について。 元々、adversarial example を作る時の微分の計算には、y_true を用いていた。これはナイーブにはそれで良さそうに思える。
これを防ぐために、true label を作るのではなく、x に対するモデルのラベル出力 argmax(f(x)) を使う。 |
本題の loss function の提案。 まずは全体像として以下の loss になる。 まずは UDA の項から。 MMD は標準的な分布間距離を測る指標である。clean と adv. の平均ベクトルの違いが $ l_1 $ の意味で最小になることを要請している。下の式で第一項は $ x ∈ D $ (clean data) の間違いである。arXiv でまあまあ revise されている割にはミスが多い論文だな。 次いで SDA に関して。 logit space での label の中心は model 出力によって計算するものなので、学習とともに変動していくものである。最初はランダムに設定し、それ以降は以下の更新式で更新していく。1_condition は condition が true なら 1 でそうでなければ 0 を取るものとして定義している。 |
ということで実験。まずはセットアップを確認しておく。 データは Fashion-MNIST, SVHN, CIFAR10, CIFAR100 を使う(どれもデータは [0, 1] に正規化)。 baseline model は以下の 4 つを使用。
実験は white-box と black-box setting で実施していて、white-box はそのままだが black-box は学習したモデルの test データでの評価の際にテストデータは学習モデル以外のモデルで構築した adv. example を使用するというもの。 |
結果は以下。 特に CIFAR-100 では clean data に対しても性能がかなり上がっている点が面白い。 一方で簡単なデータセットでは他の手法よりも adv. data に対しては優秀だが clean data での degradation の程度は大きいという結果になっている。 ともかく、提案手法である ATDA はなかなか優秀な手法であることが示された。 |
embedding space で t-SNE を調べた結果もなかなか面白い。 NT や SAT では adv. data での分布がだいぶ歪められてしまっているが、提案手法では分布が保たれていて狙い通り adv. example も clean data と同じようにモデルが解釈できていることが分かる。 ちょっと気になるのは NT とか SAT と比べるとそもそも training data での embdedding sp. でクラス間のマージンが少なくてギュッと詰まっているように見えるという点だ。これのせいで clean data での性能劣化が起きているのだろうか?metric learning とかでも使われるように margin を確保するような工夫も加えることでその辺も解決できたら面白そう。 |
ということで一通り読んだ。 adversarial example のみならず clean data に対する汎化性能がどうなるのかというのも興味があるので、この辺の話題はちょこちょこ追っていきたいところ。 |
論文リンク
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 に対しても良い精度を発揮することを示した。
The text was updated successfully, but these errors were encountered: