36
ディープラーニングの最新動向 生成モデル編① GAN 2017/1/30 株式会社ウェブファーマー 大政 孝充

Introduction to GAN model

  • Upload
    -

  • View
    90

  • Download
    0

Embed Size (px)

Citation preview

ディープラーニングの最新動向 生成モデル編① GAN

2017/1/30 株式会社ウェブファーマー

大政 孝充

今回取り上げるのはこれ

[1] Generative Adversarial Nets: Goodfellow, Ian et al, Advances in Neural Information Processing Systems 27, 2014 対立する2つのユニットを交互に学習させるという、新たな生成モデルを提案している! →今日に至るGANブームの先駆け論文

 

論文全体はsshoji氏のQiita記事 http://qiita.com/sshoji/items/306bd8aa8359bca73208 などを参照してください。 今回は ① 全体のアーキテクチャ ② 学習方法 のみ解説

解説のポイント

① 全体のアーキテクチャ ② 学習方法 まとめ

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

実際のルノワールの絵を入力した場合x ≈ pdata

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

識別器でルノワールの描いた絵かどうかを識別x ≈ pdata

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

これは本物?x ≈ pdataD x( )

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

一方、 ノイズ z から

z ≈ pz z( )

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

z ≈ pz z( )

生成器で

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

z ≈ pz z( )

ルノワールっぽい画像を生成

G z( )

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

z ≈ pz z( )

これも識別器にかける

G z( )

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

z ≈ pz z( )

D G z( )( )

これは偽物?G z( )

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

識別器をどんどん学習させると、本物か偽物か見分ける精度が増すだろう

全体のアーキテクチャ

生成器 (generator)

実際のdata

識別器 (discriminator)

本物? 偽物?

ノイズ

その上で、識別器に見破られないように生成器を学習させると、本物っぽい画像を生成するようになるだろう

解説のポイント

① 全体のアーキテクチャ ② 学習方法 まとめ

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

実際のルノワールの画像 m 個 x を識別器に入力

・・・ x

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

D (x) を得る

0.30.8!0.4

⎜⎜⎜⎜

⎟⎟⎟⎟

・・・ x

D x( )

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

対数をとる

minGmaxDV D,G( ) = Εx≈pdata x( ) logD x( )⎡⎣ ⎤⎦+Εz≈pz z( ) log 1−D G x( )( )( )⎡

⎣⎤⎦

・・・ 0.30.8!0.4

⎜⎜⎜⎜

⎟⎟⎟⎟

x

D x( )

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

ノイズ m 個 z を生成器に 入力

36!9

⎜⎜⎜⎜

⎟⎟⎟⎟

z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

m 個のルノワールっぽい画像 G(z) を生成

・・・

36!9

⎜⎜⎜⎜

⎟⎟⎟⎟

z

G x( )

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ これを識別器に入れる

・・・

36!9

⎜⎜⎜⎜

⎟⎟⎟⎟

z

G x( )

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

・・・

36!9

⎜⎜⎜⎜

⎟⎟⎟⎟

D(G (z)) を得る

0.1−4.7!

−8.0

⎜⎜⎜⎜

⎟⎟⎟⎟

G x( ) D G x( )( )z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

・・・

36!9

⎜⎜⎜⎜

⎟⎟⎟⎟

0.1−4.7!

−8.0

⎜⎜⎜⎜

⎟⎟⎟⎟

minGmaxDV D,G( ) = Εx≈pdata x( ) logD x( )⎡⎣ ⎤⎦+Εz≈pz z( ) log 1−D G x( )( )( )⎡

⎣⎤⎦

G x( ) D G x( )( )z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

∇θd

1m

logD xi( )⎡⎣

⎤⎦+ log 1−D G zi( )( )( )⎡⎣⎢

⎤⎦⎥

⎡⎣⎢

⎤⎦⎥

i=1

m

識別器に関する勾配を計算する

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

∇θd

1m

logD xi( )⎡⎣

⎤⎦+ log 1−D G zi( )( )( )⎡⎣⎢

⎤⎦⎥

⎡⎣⎢

⎤⎦⎥

i=1

m

勾配分を足し、パラメータを更新する

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

以上を k 回繰り返したあと・・・

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

ノイズ m 個を生成器に 入力

84!7

⎜⎜⎜⎜

⎟⎟⎟⎟

z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

m 個のルノワールっぽい画像を生成

・・・

84!7

⎜⎜⎜⎜

⎟⎟⎟⎟

G x( )

z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ これを識別器に入れる

・・・

84!7

⎜⎜⎜⎜

⎟⎟⎟⎟

G x( )

z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

・・・

D(G (z)) を得る

−2.6−9.7!

−2.3

⎜⎜⎜⎜

⎟⎟⎟⎟

84!7

⎜⎜⎜⎜

⎟⎟⎟⎟

G x( ) D G x( )( )z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

∇θg1m

log 1−D G zi( )( )( )⎡⎣⎢

⎤⎦⎥

i=1

m

生成器に関する勾配を計算する

36!9

⎜⎜⎜⎜

⎟⎟⎟⎟

−2.6−9.7!

−2.3

⎜⎜⎜⎜

⎟⎟⎟⎟

G x( ) D G x( )( )z

学習の方法

生成器 (generator)

実際のdata

識別器 (discriminator)

ノイズ

∇θg1m

log 1−D G zi( )( )( )⎡⎣⎢

⎤⎦⎥

i=1

m

勾配分を引き、パラメータを更新する

解説のポイント

① 全体のアーキテクチャ ② 学習方法 まとめ

まとめ

l  GANは生成器 G と識別器 D を対立させながら交互に学習する新手法である

l  識別器 D は目的関数を最大化させるように学習す

l  生成器 G は目的関数の G に関する項を最小化させるよう学習する

おわり