generative adversarial nets
Embed Size (px)
TRANSCRIPT

Generative Adversarial Nets
hskksk @ 2016/10/21

アジェンダ
• サマリ
• Generative Adversarial Nets
• DCGANs
1

今⽇のお話「Generative Adversarial Nets」
2
Deep Neural Network
を
Adversarial Learning(敵対的学習)で
学習する
本物
偽物

Adversarial learning
• 2つのモデルが戦うことで学習を進める教師なし学習フレームワーク
– 本物か偽物かを識別するモデル
– 偽物を作り出すモデル
3

Deep LearningでAdversarial Learningをやると
• ベクトルから画像が⽣成できる
• ベクトル同⼠の演算について⾯⽩い性質が成り⽴つ
– Word2Vecなどと同じような概念の⾜し算引き算ができる
• 表情やアクセサリー、顔の⾓度など
– 定量的なものがベクトル空間内で線形に並ぶ
• 顔の⾓度など
4

こんな画像や
5Radford et al, ICLR 2016

こんな画像が作れる
6すぎゃーんメモ(http://memo.sugyan.com/entry/2016/10/12/084751)

⾃分の動機
• DNN界隈のことをもっと勉強する!
• ⽅向性が⾯⽩い
– ランダムベクトルから画像が⽣成できるのが⾯⽩い
– Adversarial learningという考え⽅が⾯⽩い
7

注意!この内容はGAN界隈の話としては古いです。
8

紹介する論⽂
1. Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., … Bengio, Y. (n.d.). Generative Adversarial Nets.
2. Radford, A., Metz, L., & Chintala, S. (2016). UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL, 1–16. http://doi.org/10.1051/0004-6361/201527329
9

事前知識:識別モデルと⽣成モデル
• 識別モデル
– あるサンプルがどのクラスに属するかを判別できる
– 判別関数を作る
– 同じクラスの別のサンプルを作ることはできない
– Eg: 判別分析、SVM
• ⽣成モデル
– 観測データの⺟集団分布を推定する
– どのクラスに属するかの判別もできる
– ⺟集団分布に従うサンプルを⽣成できる
– Eg: LDA、線形回帰、RBM10

GANsの背景
• DNNを⽣成モデルとして使う試みは結構ある
– Deep Boltzmann machine
– Variational Sampling
– Iterative forward diffusion process
– Recurrent network
– Deconvolution network
※網羅性はありませんし粒度もおかしいかもしれません(次の勉強のインデックスとして活⽤)
• いろいろ問題点がある11

Generative DNN modelの問題点
12
Multi layer 系
Boltzmann
Machine系 Autoencoder系

GANを使うと
• Intractableな確率分布からサンプリングするのに必要な
– MCMC
– 変分近似
をなくせる
• 計算量コストが⼩さくなる
• 近似が不要になる
13

Adversarial Learning
• 2つのモデルを作って競わせることにより、データの分布を学習させる教師なし学習フレームワーク
• 贋作師(generator): 本物のデータと⾒分けがつかないサンプルを作る ⽣成モデル
• 鑑定⼠(discriminator): 本物のデータと偽物のデータを識別する 識別モデル
• 贋作師は鑑定⼠の識別結果を元にしてデータの分布を学習していく
14
本物
偽物

Generative Adversarial Nets
• 贋作師と鑑定⼠をいずれもDNNとしてAdversarial Learningを⾏うフレームワーク
• 贋作師:乱数ベクトルを⼊⼒として、画像を出⼒するDNN
• 鑑定⼠:画像を⼊⼒として、画像が本物である確率を出⼒するDNN
15
https://medium.com/@awjuliani/generative-adversarial-networks-explained-with-a-classic-spongebob-squarepants-episode-54deab2fce39#.8bhybd8oa

Adversarial Learningを数式で追う
定義
• 本物のデータの確率分布
• 贋作師が作る偽造データの分布
• は以下の2つで間接的にモデル化する
– モデルへの⼊⼒を作る事前分布
– zをデータの空間に写像する関数
• 鑑定⼠の判別関数
– ⼊⼒が本物である確率を返す関数
⽬的関数
16
Generator
Discriminator
z
x
p
p
Generatorのイメージ

Adversarial Learningを数式で追う
17
本物を本物と識別する確率
(の対数)
偽物を偽物と識別する確率
(の対数)
• 鑑定⼠Dから⾒ると、本物、偽物の⼆値判別における尤度最⼤化
• 贋作師Gから⾒ると本物と⾒破られる確率の最⼩化

Adversarial Learningのアルゴリズム
18
鑑定士の学習ループ
贋作師の学習ループ
ある時点の贋作師にoverfitしないようなkの設定が重要

Adversarial Learningによる学習のイメージ
19

この問題の最適解は?
• この問題の最適解は であることが⽰せる
• 証明のアウトライン
1. 固定された贋作師Gに対して、最適な鑑定⼠Dが
となることを⽰す
2. Gに関する⽬的関数C(G)は以下のように書ける
3. KLやJSDは0以上なのでKL=JSD=0が最適解。この時20

この問題の最適解は?
• この問題の最適解は であることが⽰せる
• 証明のアウトライン
1. 固定された贋作師Gに対して、最適な鑑定⼠Dが
となることを⽰す
2. Gに関する⽬的関数C(G)は以下のように書ける
3. KLやJSDは0以上なのでKL=JSD=0が最適解。この時21
贋作師は本物と区別がつかないモノを作れるようになる!!

この問題の最適解は?
• この問題の最適解は であることが⽰せる
• 証明のアウトライン
1. 固定された贋作師Gに対して、最適な鑑定⼠Dが
となることを⽰す
2. Gに関する⽬的関数C(G)は以下のように書ける
3. KLやJSDは0以上なのでKL=JSD=0が最適解。この時22
現実世界ではとても嫌な結論

実験条件
23
• データ
– MNIST
– TFD(Tronto Face Database)
– CIFAR-10
• 学習条件
– GeneratorではReLUとsigmoid activationを使⽤
– Discriminatorではmaxout activationを使⽤
– Discriminator学習でDropoutを使⽤
– 学習にはmomentum⼊りのminibatch SGDを使⽤

実験結果:平均対数尤度の⽐較
24
• 他のモデルと⽐べてGANの対数尤度が⼤きい
• データに対する当てはまりが良いモデルであると⾔える
– 尤度=データの元でのモデルの尤もらしさ

実験結果:⽣成された画像
25

26
あれから2年がたった

画像⽣成アルゴリズム界隈でも進展があった
27
• Iterative forward diffusion process
• Laplacian pyramid extention to GAN
• Recurrent network approach
• Deconvolution network approach
• Deep Convolutional Generative Adversarial Network ← これ以降で紹介
※網羅性はありませんし粒度もおかしいかもしれません
(次の勉強のインデックスとして活用)

28
• テクニックの進歩により⽣成できる画像の質はかなり向上
2014 2016

DCGAN(deep convolutional generative adversarial networks)
29
• Adversarial learning + Deep Convolutional NN (+ stabilization knowledge)
– Knowledgeにより⾼解像度画像でdeepなモデルが学習可能になったknowledge 内容
All convolutional net • Deterministic spatial pooling function(maxpooling)をstrided convolutionに置き換える
• ⾃分⾃⾝の空間的なdownsamplingができるようになるGlobal averagepooling
• Eliminating fully connected layers on top of convolutional features• Increase model stability• Hurt convergence speed
Batch normalization • Inputをnormalizeする• 初期化が良くない時に学習がうまくいかないのを防ぐ• Deepなモデルでもgradientが届くようになる• generatorから得られるサンプルがすべて同じになるのを防ぐ
GeneratorでReLUDiscriminatorでLeaky ReLU
• GeneratorでBounded activationを使うことで「learn more quickly to saturate and cover the color space」
• Discriminatorでleaky ReLUを使うことで⾼解像度モデルがうまくいく

Architecture guidelines for stable DCGANs
30

実験条件
31
• データ
– Large-scale Scene Understanding (LSUN)
– Imagenet-1k
– Newly assembled Faces
• 学習条件
– ピクセルの[-1,1]へのスケーリング
– Mini-batch SGDで学習(size=128)
– Initial weights ~ N(0, 0.02)
– LeakyReLUのleakのslopeは0.2
– Adam optimizer
• Learning rate = 0.0002
• Momentum term β1 = 0.5

事前確認:LSUN bedroomを⽤いたMemorizationの確認
32
• training画像を1つ1つ記憶してしまえば⾼品質な画像⽣成が出来てしまう(Memorization)。
• LSUN bedroomのデータセットを⽤いて、そうなっていないことを確認。
– 経験的には⼩さい学習率のMini-
batch SGDで学習でMemorizationが起こったことはない
– 収束後のモデルからのサンプル画像にunder-fittingが⾒られる

実験1:DCGANをFeature Extractorとして使ってみる
33
• 実験概要
– DCGANをFeature Extractorとして使い、得られたFeatureを使って線形判別器を作って精度を⾒る
– 教師なし学習の質の評価の⼀般的な⽅法
• 実験詳細
– CIFAR-10、SVHNを分類
– DCGANをImagenet-1kを使って学習
– Discriminatorの全layerのfeautreを4×4にmaxpoolingし、flatteningしてfeatureとする(28672features)
– L2-SVMで分類モデルを作る

実験1:CIFAR-10分類結果
34
• Exemplar CNN以外には勝っている
• 少ないfeature数でも⾼い精度が出る
• DiscriminatorはCIFAR-10を使わず学習しており、ドメインによらないFeature
Extractorが作れている

実験1:SVHN分類結果
35
• State of the artを達成
• labelのないデータを活⽤する別の⽅法(SWWAE)よりも良い
• Discriminatorと同じ構造のCNNを教師ありで学習するよりも良い精度(!)

実験2:潜在空間を覗いてみる
36
• 実験概要
– 潜在空間の構造(zからG(z)へのマッピング)を理解するために、zのある直線上の点に対するG(z)を並べてみてみる。
– この時G(z)が急激に変化するようならmemorizationが起こっている
– 緩やかに変化するならモデルが画像の性質を学習していると⾔える

実験2:結果
37
• どの例も画像が緩やかに変化している
• さらに、どれもbedroomの画像として成り⽴っている

実験2:結果
38
照明が 窓に
テレビが 窓に

実験2:結果
39
この辺の画像もちゃんとbedroomしてる

実験3:z同⼠の加減算をしてみる
40
• 実験概要
– NLPの⽂脈でWord2Vecが実現した以下のような関係と同じことができるか調べて⾒る
• eg: Vector(“King”) – Vector(“Man”) + Vector(“Woman”) 〜 Vector(“Queen”)
• 実験詳細
– ある画像に対応するベクトルの加減算で得られるベクトルがどんな画像に対応するかを調べた
– 1サンプルの加減算だと結果が不安定だったため、3つの画像の平均を⾏った
– 顔画像について、以下のことができるかを調べた
• 概念の加減算
• オブジェクトの加減算

実験3:結果(性別、表情の加減算)
41
真ん中:加減算結果のZに対応する画像
周り:真ん中のZにノイズを加えた場合

実験3:結果(性別、サングラスの加減算)
42

実験3:結果(pixel空間での加減算)
43
• Zの空間で加減算すればうまくいくが、pixel空間で加減算すると全くうまくいかない

実験3:結果(性別、顔の向きの加算)
44
• 右向きの⼥性、左向きの男性のZ
の間を線形補間して得られたZの画像は、中間的な顔の向きを持っている
• 顔の向きという1次元的な概念がZの空間でも1次元的に埋め込まれている

まとめ
45
• Adversarial Learningという考え⽅により、⽣成モデルの学習が出来る
– 変分近似やMCMCなどが不要で使い易い⽣成モデルが作れる
• Adversarial Learning + Deep Convolutional NN でいろいろできるようになる
– ランダムなベクトルから画像が⽣成出来る
– ベクトルの演算が画像上の概念の演算になっている