1、generation
從normal distribution(正態分佈)中sample出一些點:
generator需要update它的參數,使得它output產生的image能被discriminator誤認爲它是realistic。
再update discriminator,使得之前被它判斷出來是realistic的image重新判斷爲fake。
不斷更新,直到generator產生出的image夠好爲止。
2、algorithm
3、f-divergence
convex function是指凸函數
(1)KL-divergence
(2)Reverse KL divergence
(3)Chi Square
4、Fenchel Conjugate(Fenchel 共軛)
(1)
給定t,找到不同x下的f*(t)的最大值
先給定x,得到不同的直線,再給定t,找到式子的最大值。不斷取不同的t,就會得到不同的f*,下圖所示的紅色實線就是f*(t),是一個convex。
如下圖:f(x) = xlogx,則畫出來的f*(t)有點像指數(expoential)函數。
(2)connection with GAN
5、double loop vs single step
6、WGAN
(1)earth mover's distance
想把P的distribution移成Q的distribution,會有很多不一樣的方法,所以你的distance也不一樣。選移動距離最小的。
每一個row之和,爲P要運送出去的量,顏色越亮,量越多。
如果用JS divergence,會發現PG50並沒有比PG0更接近Pdata。但如果用earth mover's distance就會不一樣。這樣你在做gradient的時候會有梯度下降。
右邊綠色的那根線,從PG到Pdata纔會有梯度下降,就不會有gradient vanish的問題。
如何optimize?
weight clipping
你的weight是有range的,所以你input變化的時候,你的output變化總是有限的。如果你的K是一個夠大的值,那你的neural network就會滿足k-lipschitz function。
WGAN:用RMSprop好還是用adam效果好是不一定的。
(2)improve WGAN
gradient penalty
這裏的gradient descent是input對output的descent(這裏是input x 對 output D(x)的gradient descent),與從前是對neural network 的參數進行gradient descent不同。
。
什麼是Ppenalty:
如何從Ppenalty中sample點:
先從Pdata中sample一個點,在從generator中sample一個點 ,再把這兩個點連起來。在他們的連線中間再sample一個點,就是你得到的x。不斷sample。。。
爲什麼這樣的結果是好的呢:
其實你希望gradient越接近1越好。
(3)sentence generation
但是你用neural network產生一個matrix的時候,很難固定只有0和1。對於binary classifier來說,你的discriminator只要認爲這個地方不是1或者不是0(沒有重疊部分no overlap),就會認爲是假的。WGAN就可以派上用場。
7、transform
1)sentence to image
conditional GAN中,如何train discriminator:
方法一:可以用WGAN來train 你的discriminator,input一個image,output distribution。結果:可能會得到清晰,但與輸入內容無關的image。
方法二:input 的是兩個東西,是generator的input和output。看他們兩個合在一起好不好。比如你輸入一個c爲單詞“train”,x爲火車的image,output的值越大越好。negative example:①c爲“train”,但x不爲火車的image;②c不爲“train”,但x爲火車的image。他們output的值要越小越好。結果比較好。
2)image to image
方法一:用傳統的有監督的方法,train出來的圖片可能是糊的。
3)unpaired transformation --cycle GAN disco GAN
之前都是paired數據,比如說一段話及對應的image,一個簡單的幾何圖及對應真實的image。。。這裏用unpaired,有點類似風格遷移。把一幅一般的風景畫轉換爲梵高式的image。
① cycle GAN
②真實的人物image轉化爲動漫