はじめに
最近自分の研究分野との親和性が高いこともあり, Unsupervised Domain Adaptation (教師なしドメイン適応)の理論を勉強しています. その理論を応用した手法に, Domain Adversarial Neural Networks (DANN) というものがあり自分でも動かしてみました.
目次
- Unsupervised Domain Adaptationとは
- H-divergenceを用いた汎化誤差上界
- Domain Adversarial Neural Networks
- 簡易実験
- さいごに
Unsupervised Domain Adaptationとは
まずUnsupervised Domain Adaptation (UDA) を定式化します.
入力空間を, 出力空間をとします.
ここで, あるdomain とは, 入力の分布とlabeling functionのpair のことを指します.
UDAは, labelが得られているsource domainからのサンプル とlabelが得られていないtarget domainからのサンプル から, 次のtarget domainにおける期待判別誤差をできるだけ小さくするような仮説を得ることを目指します.
以降は, 損失関数として0-1損失のみを考えます. この時,
です. このように表されるtarget domainにおける期待判別誤差を(一様に)boundしたいというのが理論的なモチベーションになります.
学習データとテストデータのDomainが同一であるような通常の教師あり機械学習の場合, 次のような形で予測判別誤差をboundするのが一般的です.
任意のについて, 少なくとも () の確率で次の不等式を満たす.
しかし, UDAではテストデータのlabelがサンプルとして得られていないので, target domainの経験判別誤差を用いることができません. よって, 次のようなboundを得ることを目指すこととします.
任意のについて, 少なくとも () の確率で次の不等式を満たす.
(1)は, Source Domainにおける経験判別誤差. (2)は, 仮説集合の複雑さ. (3)はに依存する項. (4)はSourceとTargetの入力分布の乖離度. (5)はSourceとTargetのlabeling functionの乖離度です. 次節では, H-divergenceと呼ばれるdiscrepancyを用いたboundについて説明します.
H-divergenceを用いた汎化誤差上界
H-divergenceは次のように定義されるdiscrepancyの一種です.
仮説集合が対称であるとき, empiricalには
です. よって, H-divergenceは仮説集合がsource domainとtarget domainのデータを入力から判別する性能に依存することがわかります. 入力からどちらのDomainからのサンプルかが判別できるほど, 2つのDomainのH-Divergenceが大きくなるというイメージです.
このH-divergenceを用いると次のようなboundが得られます. ([Ganin+ 2015]のTheorem 2, [Ben David+ 2010]のTheorem 2を参考にした)
任意のについて, 少なくとも () の確率で次の不等式を満たす.
ただし, です. つまり, はとの和の下限の上界です.
さらに, 既存の統計的機械学習における結果を用いてempricalに推定可能なboundを次の通りに得ます.
を有限のVC次元を持つ仮説集合とする. 任意のについて, 少なくとも () の確率で次の不等式を満たす. ただし, とした.
VC次元やそれを用いた予測判別誤差と経験判別誤差の差の一様boundについては, MLPシリーズ『統計的機械学習』のChapter 2に説明があります.
Domain Adversarial Neural Networks (DANN)
ようやくDANNの説明に入ります. 前節で得たの上界のうち, 私たちがどうにかできるのはsource domainにおける経験判別誤差との経験H-Divergence です. これらの和を小さくするために3つのlayer を考えます. はrepresentation layerと呼び, 入力空間をある望ましい空間に写像する役割を持ちます. はprediction layerと呼び, で得た特徴表現からlabelを予測します. 最後に, はdomain layerと呼び, 特徴表現からSource Domainから得られたサンプルなのかTarget Domainで得られたサンプルなのかを判別します.
これらを用いてDANNの損失関数は次のように定義されます.
ここで,
はそれぞれサンプルに対するprediction lossとdomain lossです.
損失関数のうち, (1)はsource domainにおける経験判別誤差を表しており(2)は, によって生成される表現上での経験H-Divergenceと読めます. はそのどちらをどれだけ重視するかを司るハイパーパラメータです. 要はは, の上界のうち私たちがどうにかできる項と言えます. 3つのパラメータはそれぞれ次のように更新します.
は学習率です. 3つの更新式の中で最も重要なのは, の更新式でしょう. は, prediction lossを小さくするような勾配とdomain lossを大きくするような勾配によって更新されていることがわかります. これにより, はLabelの予測には役立つ (を小さくする) がDomainの予測には役立たない (を大きくする) ような入力表現を得るための写像に近づいていくことが期待されます.
DANNのarchitectureは次の通りです. Domain Adversarialの名は, prediction layer とdomain layer が敵対的な関係にあることに由来すると思われます.
簡易実験
DANNのイメージをより鮮明に持つため, 人工データを用いた簡易実験を行ってみます. 本節は大いにこちらのrepositoryを参考にしました.
まず, scikit learnのmake_blobsを用いて人工データを生成します. sはsource, tはtargetを表しています.
Xs, ys = make_blobs(500, centers=[[0, 0], [0, 1]], cluster_std=0.2) Xt, yt = make_blobs(500, centers=[[1, -1], [1, 0]], cluster_std=0.2)
描画すると次のような感じです.
このうち学習時にsource domainの入力とラベル, target domainの入力のみを用いて, テストデータにおけるラベルを精度よく予測したいというのがUDAの目標でした.
いよいよDANNを学習します. 学習とテストは8:2で分け, OptimizerはMomentum (learning_rate=0.01, momentum=0.6), batchサイズは32, epoch数は5,000としました.
結果は次の通りです. 表の結果は, テストデータにおける最終epochの結果です. ちゃんとvalidationを用意して検証すればもう少し良い結果が出ると思いますが, target domainのラベルを学習時に全く用いていないのにも関わらず, 90%以上の精度を達成しています.
Source | Target | Domain | |
---|---|---|---|
Cross Entropy | 0.03359 | 0.20099 | 0.68040 |
Accuracy (%) | 99.019 | 90.815 | 55.371 |
一方で, domainの判別はうまくいっていないことから, representation layerでdomainの判別が付かないような(が小さいような)入力表現を得ることができていそうです. 実際, representation layerでの表現を抜き出してPCAで2次元に圧縮して描画してみると次のようになりました.
これを見ると, source domain (赤, 薄赤) と target domain (青, 緑) が上と下に分かれていそうですが, 初期表現と比べるとかなり判別しにくくなっていることがわかります. 一方で, class 0とclass 1は綺麗に左右に分かれており, source domain target domainに関わらず, labelの判別はうまくいきそうなことがわかります. もちろんかなりシンプルな人工データを使ったからうまくいっているのですが, DANNのイメージが湧きやすい結果が出たのではないでしょうか.
さいごに
今回は, [Ganin+ 2015]で提案されたDomain Adversarial Neural Networksのarchitectureを理論背景も含めて整理し, 人工データを用いた追試を行ってみました. 個人的なモチベーションとしてはDANNそのものではなく, その別の分野への応用です. その話題についても今後触れようと思います.
参考
[Ben David+ 2007] Ben-David, S.; Blitzer, J.; Crammer, K.; and Pereira, F. 2007. Analysis of representations for domain adaptation. In NIPS, 137–144.
[Ben David+ 2010] Ben-David, S.; Blitzer, J.; Crammer, K.; Kulesza, A.; Pereira, F.; and Vaughan, J. W. 2010. A theory of learning from different domains. Machine Learning 79(1-2):151– 175.
[Ganin+ 2015] Ganin, Y.; Ustinova, E.; Ajakan, H.; Germain, P.; Larochelle, H.; Laviolette, F.; Marchand, M.; and Lempitsky, V. 2016. Domain-adversarial training of neural networks. Journal of Machine Learning Research 17(1):2096–2030.
[Kota Matsui 2019] Recent Advances on Transfer Learning and Related Topics. (https://www.slideshare.net/KotaMatsui/recent-advances-on-transfer-learning-and-related-topics)