0. 概要
いわゆるDomain Adaptationの論文。他の論文と異なるのは、今までの論文はDomain AとDomain Bの画像の分布(それとない形やテクスチャ)を似せるところにあったが、これはPixelレベルで似せようとしている。あまりちゃんとした解説がないので、読解していく。
Unsupervised Pixel-Level Domain Adaptation with Generative Adversarial Networks (PixelDA):
https://arxiv.org/pdf/1612.05424.pdf
論文の趣旨を理解したいので、Related research等は飛ばす。
1-2. Introduction
CNNはあらゆるタスクで非常に有用である。一方で、伝統的な方法では教師を必要とする。しかし、実世界のタスクでは教師が足りないことが多い。このため、CGなどのレンダリングに頼ることがあるが、実世界の画像と全く同じにすることは出来ない。この欠点を解決するために、PixelDAを開発した。Domain A(教師ありシミュレーションデータ)とDomain B(実世界データ)が与えられたときに、ドメイン間に関わらない不変的な特徴量を抽出するように学習させる。
ようはDomain A及びDomain Bから共通的な特徴を抽出するということ
3. Model
教師ありSource Domain (Domain A)と教師なしTarget Domain (Domain B)が与えられたとき、Source DomainをTarget Domainに変換して識別機を学習させる。
ドメイン間の違いの多くは、オブジェクトの種類、幾何学的な変形ではなくノイズ、解像度、照明、色などであると考えられる。
$X_s$をSource Domainから$N_s$個サンプルされたラベル付きデータとする。
$X_t$をTarget Domainから$N_s$個サンプルされたラベルなしデータとする。
Source Domain $X_s$はGenerator function $G$からノイズや$X_t$によって$X_f$に写像される。
すなわち$G$によって新たなデータセット$X_f$(任意のサイズになる)が生成される。この$X_f$を用いて識別機を学習させると、あたかもTarget Domainと同じ分布として学習させることができる。
多分$f$はFakeのfかな??
すなわち、Source DomainをまずはTarget Domainに写像する
3.1. Learning
学習モデルにはAdversarialを用いる(ようはGAN)。入力は$X_s$及びノイズ$z$である。これらから$X_f$を生成する。
この学習機はDiscriminator $D$によって効果的に学習させられる。$D$はTarget Domain $X_t$とSource Domain $X_s$から生成された$X_f$を比較し、RealかFakeを判定する。
GANによってSource DomainからTarget Domainぽい画像を作り出す
この$D$はClassifier $T$によって効果的に学習させられる。
最適化は以下のように行われる。
$\alpha L_d(D, G) + \beta L_t (G,T)$
この時、$\alpha$及び$\beta$はパラメータである。$L_d$はドメインの損失を表している。$L_d$は以下のように定義される。
$L_d(D, G)=E_{x_t}[\log(D)] + E_{x_s, z}[\log(1 - D)] $
$L_t$はタスク特有の識別問題の損失を表している$L_t$は以下のように定義される。
$L_t(G, T)=E_{x, y, z}[-y_s \log T(G)] -y_s \log T(X_s) $
ここで、$y_s$はone-hot vectorとする。
また$T$は$G(X_s)$すなわち$X_f$で訓練もするし、$X_s$だけでも訓練をする。前者だけでも問題ないが、両方を合わせることで安定性が増すそうだ。
これをまとめると以下のような図になる。
Pixel Levelなので、解像度を落とさないためにResNetの構成を$D$及び$G$で用いている。
3.2. Content-similarity loss
加えて、背景とオブジェクトをより区分けしやすいように、罰則項を追加して以下のように損失関数を設計している。
$\alpha L_d(D, G) + \beta L_t (G,T) + \gamma L_c (G) $
$L_c$はコンテンツの類似性損失(PMSE)である。
ようは、ソースに対して生成したものがあまりにも異なったものにならないようにしている。PMSEは以下のように与えられる。
因みにピクセルレベルでの損失関数となっている。普通の$D$であればSoftmaxによる2値の0, 1判定であるが、この損失関数は画素単位での0, 1判定である。
DiscriminatorとGeneratorはセットで1つの損失関数
GeneratorとClassiferはセットで1つの損失関数
ようはGeneratorはDiscriminatorを騙しつつも、Classiferの精度が高くなるような画像の変換手法を学習しなければならないということ
4. Evaluation
5. 感想
全体の仕組み的には簡単だけれども、各要素が濃い。工夫が凄い。これら工夫がちゃんと精度に結び付いているのが流石Google。しかし、少し複雑にしすぎている感は否めない。あらゆるタスクに適用させるには、調整するパラメータが多いような気がする。