generative adversarial nets

46
Generative Adversarial Nets hskksk @ 2016/10/21

Upload: keisuke-hosaka

Post on 19-Mar-2017

194 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Generative adversarial nets

Generative Adversarial Nets

hskksk @ 2016/10/21

Page 2: Generative adversarial nets

アジェンダ

• サマリ

• Generative Adversarial Nets

• DCGANs

1

Page 3: Generative adversarial nets

今⽇のお話「Generative Adversarial Nets」

2

Deep Neural Network

Adversarial Learning(敵対的学習)で

学習する

本物

偽物

Page 4: Generative adversarial nets

Adversarial learning

• 2つのモデルが戦うことで学習を進める教師なし学習フレームワーク

– 本物か偽物かを識別するモデル

– 偽物を作り出すモデル

3

Page 5: Generative adversarial nets

Deep LearningでAdversarial Learningをやると

• ベクトルから画像が⽣成できる

• ベクトル同⼠の演算について⾯⽩い性質が成り⽴つ

– Word2Vecなどと同じような概念の⾜し算引き算ができる

• 表情やアクセサリー、顔の⾓度など

– 定量的なものがベクトル空間内で線形に並ぶ

• 顔の⾓度など

4

Page 6: Generative adversarial nets

こんな画像や

5Radford et al, ICLR 2016

Page 7: Generative adversarial nets

こんな画像が作れる

6すぎゃーんメモ(http://memo.sugyan.com/entry/2016/10/12/084751)

Page 8: Generative adversarial nets

⾃分の動機

• DNN界隈のことをもっと勉強する!

• ⽅向性が⾯⽩い

– ランダムベクトルから画像が⽣成できるのが⾯⽩い

– Adversarial learningという考え⽅が⾯⽩い

7

Page 9: Generative adversarial nets

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

8

Page 10: Generative adversarial nets

紹介する論⽂

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

Page 11: Generative adversarial nets

事前知識:識別モデルと⽣成モデル

• 識別モデル

– あるサンプルがどのクラスに属するかを判別できる

– 判別関数を作る

– 同じクラスの別のサンプルを作ることはできない

– Eg: 判別分析、SVM

• ⽣成モデル

– 観測データの⺟集団分布を推定する

– どのクラスに属するかの判別もできる

– ⺟集団分布に従うサンプルを⽣成できる

– Eg: LDA、線形回帰、RBM10

Page 12: Generative adversarial nets

GANsの背景

• DNNを⽣成モデルとして使う試みは結構ある

– Deep Boltzmann machine

– Variational Sampling

– Iterative forward diffusion process

– Recurrent network

– Deconvolution network

※網羅性はありませんし粒度もおかしいかもしれません(次の勉強のインデックスとして活⽤)

• いろいろ問題点がある11

Page 13: Generative adversarial nets

Generative DNN modelの問題点

12

Multi layer 系

Boltzmann

Machine系 Autoencoder系

Page 14: Generative adversarial nets

GANを使うと

• Intractableな確率分布からサンプリングするのに必要な

– MCMC

– 変分近似

をなくせる

• 計算量コストが⼩さくなる

• 近似が不要になる

13

Page 15: Generative adversarial nets

Adversarial Learning

• 2つのモデルを作って競わせることにより、データの分布を学習させる教師なし学習フレームワーク

• 贋作師(generator): 本物のデータと⾒分けがつかないサンプルを作る ⽣成モデル

• 鑑定⼠(discriminator): 本物のデータと偽物のデータを識別する 識別モデル

• 贋作師は鑑定⼠の識別結果を元にしてデータの分布を学習していく

14

本物

偽物

Page 16: Generative adversarial nets

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

Page 17: Generative adversarial nets

Adversarial Learningを数式で追う

定義

• 本物のデータの確率分布

• 贋作師が作る偽造データの分布

• は以下の2つで間接的にモデル化する

– モデルへの⼊⼒を作る事前分布

– zをデータの空間に写像する関数

• 鑑定⼠の判別関数

– ⼊⼒が本物である確率を返す関数

⽬的関数

16

Generator

Discriminator

z

x

p

p

Generatorのイメージ

Page 18: Generative adversarial nets

Adversarial Learningを数式で追う

17

本物を本物と識別する確率

(の対数)

偽物を偽物と識別する確率

(の対数)

• 鑑定⼠Dから⾒ると、本物、偽物の⼆値判別における尤度最⼤化

• 贋作師Gから⾒ると本物と⾒破られる確率の最⼩化

Page 19: Generative adversarial nets

Adversarial Learningのアルゴリズム

18

鑑定士の学習ループ

贋作師の学習ループ

ある時点の贋作師にoverfitしないようなkの設定が重要

Page 20: Generative adversarial nets

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

19

Page 21: Generative adversarial nets

この問題の最適解は?

• この問題の最適解は であることが⽰せる

• 証明のアウトライン

1. 固定された贋作師Gに対して、最適な鑑定⼠Dが

となることを⽰す

2. Gに関する⽬的関数C(G)は以下のように書ける

3. KLやJSDは0以上なのでKL=JSD=0が最適解。この時20

Page 22: Generative adversarial nets

この問題の最適解は?

• この問題の最適解は であることが⽰せる

• 証明のアウトライン

1. 固定された贋作師Gに対して、最適な鑑定⼠Dが

となることを⽰す

2. Gに関する⽬的関数C(G)は以下のように書ける

3. KLやJSDは0以上なのでKL=JSD=0が最適解。この時21

贋作師は本物と区別がつかないモノを作れるようになる!!

Page 23: Generative adversarial nets

この問題の最適解は?

• この問題の最適解は であることが⽰せる

• 証明のアウトライン

1. 固定された贋作師Gに対して、最適な鑑定⼠Dが

となることを⽰す

2. Gに関する⽬的関数C(G)は以下のように書ける

3. KLやJSDは0以上なのでKL=JSD=0が最適解。この時22

現実世界ではとても嫌な結論

Page 24: Generative adversarial nets

実験条件

23

• データ

– MNIST

– TFD(Tronto Face Database)

– CIFAR-10

• 学習条件

– GeneratorではReLUとsigmoid activationを使⽤

– Discriminatorではmaxout activationを使⽤

– Discriminator学習でDropoutを使⽤

– 学習にはmomentum⼊りのminibatch SGDを使⽤

Page 25: Generative adversarial nets

実験結果:平均対数尤度の⽐較

24

• 他のモデルと⽐べてGANの対数尤度が⼤きい

• データに対する当てはまりが良いモデルであると⾔える

– 尤度=データの元でのモデルの尤もらしさ

Page 26: Generative adversarial nets

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

25

Page 27: Generative adversarial nets

26

あれから2年がたった

Page 28: Generative adversarial nets

画像⽣成アルゴリズム界隈でも進展があった

27

• Iterative forward diffusion process

• Laplacian pyramid extention to GAN

• Recurrent network approach

• Deconvolution network approach

• Deep Convolutional Generative Adversarial Network ← これ以降で紹介

※網羅性はありませんし粒度もおかしいかもしれません

(次の勉強のインデックスとして活用)

Page 29: Generative adversarial nets

28

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

2014 2016

Page 30: Generative adversarial nets

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を使うことで⾼解像度モデルがうまくいく

Page 31: Generative adversarial nets

Architecture guidelines for stable DCGANs

30

Page 32: Generative adversarial nets

実験条件

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

Page 33: Generative adversarial nets

事前確認:LSUN bedroomを⽤いたMemorizationの確認

32

• training画像を1つ1つ記憶してしまえば⾼品質な画像⽣成が出来てしまう(Memorization)。

• LSUN bedroomのデータセットを⽤いて、そうなっていないことを確認。

– 経験的には⼩さい学習率のMini-

batch SGDで学習でMemorizationが起こったことはない

– 収束後のモデルからのサンプル画像にunder-fittingが⾒られる

Page 34: Generative adversarial nets

実験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で分類モデルを作る

Page 35: Generative adversarial nets

実験1:CIFAR-10分類結果

34

• Exemplar CNN以外には勝っている

• 少ないfeature数でも⾼い精度が出る

• DiscriminatorはCIFAR-10を使わず学習しており、ドメインによらないFeature

Extractorが作れている

Page 36: Generative adversarial nets

実験1:SVHN分類結果

35

• State of the artを達成

• labelのないデータを活⽤する別の⽅法(SWWAE)よりも良い

• Discriminatorと同じ構造のCNNを教師ありで学習するよりも良い精度(!)

Page 37: Generative adversarial nets

実験2:潜在空間を覗いてみる

36

• 実験概要

– 潜在空間の構造(zからG(z)へのマッピング)を理解するために、zのある直線上の点に対するG(z)を並べてみてみる。

– この時G(z)が急激に変化するようならmemorizationが起こっている

– 緩やかに変化するならモデルが画像の性質を学習していると⾔える

Page 38: Generative adversarial nets

実験2:結果

37

• どの例も画像が緩やかに変化している

• さらに、どれもbedroomの画像として成り⽴っている

Page 39: Generative adversarial nets

実験2:結果

38

照明が 窓に

テレビが 窓に

Page 40: Generative adversarial nets

実験2:結果

39

この辺の画像もちゃんとbedroomしてる

Page 41: Generative adversarial nets

実験3:z同⼠の加減算をしてみる

40

• 実験概要

– NLPの⽂脈でWord2Vecが実現した以下のような関係と同じことができるか調べて⾒る

• eg: Vector(“King”) – Vector(“Man”) + Vector(“Woman”) 〜 Vector(“Queen”)

• 実験詳細

– ある画像に対応するベクトルの加減算で得られるベクトルがどんな画像に対応するかを調べた

– 1サンプルの加減算だと結果が不安定だったため、3つの画像の平均を⾏った

– 顔画像について、以下のことができるかを調べた

• 概念の加減算

• オブジェクトの加減算

Page 42: Generative adversarial nets

実験3:結果(性別、表情の加減算)

41

真ん中:加減算結果のZに対応する画像

周り:真ん中のZにノイズを加えた場合

Page 43: Generative adversarial nets

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

42

Page 44: Generative adversarial nets

実験3:結果(pixel空間での加減算)

43

• Zの空間で加減算すればうまくいくが、pixel空間で加減算すると全くうまくいかない

Page 45: Generative adversarial nets

実験3:結果(性別、顔の向きの加算)

44

• 右向きの⼥性、左向きの男性のZ

の間を線形補間して得られたZの画像は、中間的な顔の向きを持っている

• 顔の向きという1次元的な概念がZの空間でも1次元的に埋め込まれている

Page 46: Generative adversarial nets

まとめ

45

• Adversarial Learningという考え⽅により、⽣成モデルの学習が出来る

– 変分近似やMCMCなどが不要で使い易い⽣成モデルが作れる

• Adversarial Learning + Deep Convolutional NN でいろいろできるようになる

– ランダムなベクトルから画像が⽣成出来る

– ベクトルの演算が画像上の概念の演算になっている