back to index
GAN Lecture 2 (2018): Conditional Generation

link |
我們要train一個輸入文字,然後要產生對應的二次元人物的頭像
link |
那這個技術呢,你就要用到conditional game
link |
conditional game的意思是說,我們之前的game是隨機輸入一個vector
link |
那你其實根本不能夠控制說,你要output什麼樣的東西
link |
那我們這邊要講conditional game的意思是說
link |
它其實可以被當作是一個單純的supervised learning的problem來看
link |
那怎麼用supervised learning的方式來learn一個text to image的model呢
link |
然後套用一個傳統的supervised learning的方法
link |
你可以說我就learn一個network
link |
那你希望輸出的圖片跟你的目標越接近越好
link |
那比如說你會minimize你的network output的
link |
你的network output跟這個文字所對應的image的L1或L2的Loss
link |
你可以想像說在你的training data裡面
link |
火車呢,它的對應的圖片其實是有很多張的
link |
這些是側面的火車,它們也通通都是火車
link |
那你現在如果要讓你的network output去產
link |
如果你用傳統的方法來learn一個network的話
link |
它會覺得說輸入train的時候,輸入火車的時候
link |
它要長得像這三張,同時也要長得像這三張
link |
所以到時候你的network output就會變成是
link |
那如果你產生這種正面的火車是好的結果
link |
但是同時產生正面的火車跟側面的火車合起來
link |
先假設你用traditional的方法來learn一個conditional的generation
link |
你用一般的方法來learn一個text to image的generator
link |
你會發現說你產生出來的image都是特別模糊的
link |
為什麼?那因為你產生出來的image會是多張image的平均
link |
它想要產生的結果是多張image的平均
link |
你的generator就是吃一個從normal distribution裡面sample出來的z
link |
但在conditional generation裡面
link |
吃了另外一個conditional的text c
link |
所以你的conditional game
link |
它就是同時吃一個normal distribution
link |
這sample出來的vector跟一段文字
link |
還有這個sample出來的vector
link |
接下來你要train一個discriminator
link |
discriminator只吃一張image x
link |
然後它告訴你說這個x它的quality好不好
link |
這個discriminator它吃一個x
link |
這個scalar代表說input的x
link |
那你在train這個discriminator的時候
link |
你就告訴這個discriminator說
link |
如果是real的image就給它1分
link |
如果是generated的image就給它0分
link |
來traindiscriminator的話
link |
今天generator在產生image的時候
link |
它會完全無視input的condition
link |
因為discriminator它是檢查說
link |
是不是一張high quality的image
link |
它只要產生high quality的image就好
link |
它可以完全無視你input的condition
link |
反正只要這個discriminator覺得
link |
我們希望機器是按照我們輸入的condition
link |
當你在做conditional game的時候
link |
它要同時看generator的輸入跟輸出
link |
這個時候你的discriminator有兩個任務
link |
它吃一個condition跟吃一個object
link |
就是discriminator的output
link |
所以你今天在train這種discriminator的時候
link |
我們今天在train這種discriminator的時候
link |
對這種discriminator來說
link |
現在discriminator它不是只吃image
link |
它不是只要看你產生出來的image好不好
link |
也要給discriminator低分
link |
你要告訴discriminator說
link |
所以跟一般的generator不一樣
link |
當你做conditional game的時候
link |
那你在train這個discriminator的時候
link |
它有兩種negative的example
link |
因為今天是conditional的generation
link |
所以你的每一個sample data
link |
前半段是在訓練discriminator
link |
好 那你接下來sample出m個vector
link |
每一個都去加上一個condition
link |
產生m張generated image
link |
這個xdelta是generated image
link |
也是database裡面sample出來的image
link |
在訓練discriminator的時候
link |
配上generated出來的模糊的結果
link |
sample出來的real的image
link |
之前只有一種next example
link |
現在變成有兩種next example
link |
接下來train generator
link |
train generator怎麼做
link |
sample出angle vector
link |
再sample出angle condition
link |
那這個就是在train generator
link |
有另外一種discriminator的架構
link |
而這種discriminator的架構
link |
object先通過一個network
link |
這個embedding也跟你的condition
link |
丟到另外一個藍色的network裡面
link |
有兩種negative example
link |
一種negative example是
link |
其實你的image跟文字還是match的
link |
你的image的quality是好的
link |
不過我現在看到比較多的network
link |
來設計它的discriminator
link |
你就可以用一下State Game這樣子
link |
在原始的State Game的Paper裡面
link |
所以State Game在Train的時候
link |
它把整個Training的Process
link |
然後第二個Discriminator
link |
應該Performance會比較好的
link |
可以產生什麼1024x1024的超級大圖
link |
這些所有疊在一起的Generator
link |
都是用Euclid合在一起Chain的
link |
那剛才講的那個Conditioned
link |
首先當然你要有Training Data
link |
當然你可以用Supervised的方法
link |
Text to Image的Case一樣
link |
你的Discriminator會檢查
link |
這個Generator的Input跟Output
link |
你今天在Conditional Gan裡面
link |
在Trend Discriminator的時候
link |
而不是只是Generator的Output
link |
Generator的Input跟Output的Pair
link |
對這個Discriminator來說
link |
要給它下額外的Constraint的話
link |
你可以下另外一個Constraint說
link |
你希望Generator的Output
link |
Trend就很容易Overfitting
link |
前面那個Image to Image
link |
來做Speech Enhancement
link |
什麼是Speech Enhancement呢
link |
Speech Enhancement意思是說
link |
Speech Enhancement
link |
你就Train一個Generator
link |
Complete Generation
link |
Speech Enhancement上面
link |
不只要直接Train Generator
link |
你還要Train一個Discriminator
link |
就是看Generator的Input加Output
link |
在Conditional Game裡面
link |
Generator的Input跟Output
link |
也可以做Video的Generation
link |
那怎麼做Video Generation呢
link |
你就需要一個Discriminator
link |
不能夠只看Generator的Output
link |
Generator的Input跟Output
link |
所以就把Generator的Input跟Output
link |
然後讓Discriminator去檢查說
link |
因為TrainingData裡面同一個轉角
link |
但是對一個沒有Game的Generator來說
link |
好,那這個就是Conditional Game