Ref:
1-1 Deep why
由於Universality Theory,理論上shallow能fit任何continuous function,到任何精準度ε都可以(只需要2L/ε個neuron就行,L的定義見)
但是!相同的參數下,deep能產生更多pieces:
如圖在最佳情況下,八個neuron最多能產生28的pattern,即28個linear pieces,雖然某些pattern是不合理的,但也只是少部分不行而已。
3-1 Intro of GAN
如果GAN只用Generator的話就只能用VAE的做法,但需要考慮的東西會多很多,因爲需要每一個pixel與隔壁的pixel有聯繫,這樣就需要更深的network:
也有隻用Discriminator的,相比只用Generator能識別的更好,但問題是生成圖片比較麻煩…需要求解這個來訓練:
雖然好像能實現,所以還是Generator和Discriminator分開會比較好。
GAN
Discriminator訓練需要Realistic Negative Examples來進行訓練,訓練是一個迭代過程(通過對argmaxD(X)進行generation,然後輸出後重新丟回去當negative examples):
用圖像表示的話過程是這樣的(學習的時候會有認爲那些沒有example的部分分數高(找弱點
),那麼就生成那部分分數高的又不是real的來作爲negative example):
這按理說Discriminator就可以自己生成圖了,但實際上對argmaxD(X)進行Generation是比較複雜的過程(線性假設限制,非線性解不出),所以可以用Generator代替:
3-2 Conditional GAN
傳統方法做Test-to-Image會出現典型問題(如輸入train他輸出的實際上是多張image的平均)
而且傳統的GAN的D只能評分,不管他輸出的是什麼,這樣會導致G產生的圖片沒有類別,只要求真實。
CGAN與GAN的區別分別在D和G上有了不同,G多了Condition爲參數,D則從單純的真實度打分器變成了還要考慮類別正誤的打分器:
算法就是這樣了:
如今有的D的設計有這兩種,第一種用的比較多但第二種似乎更合理因爲它能得出低分的原因:
StackGAN的做法:先train出小圖,再拿小圖train大…
Image-to-Image也是一樣,用傳統Supervised Learning的話會產生很模糊的圖像。
用GAN能很好解決這個問題,但GAN由於產生出來的圖太過真實反而沒有符合原來輸入的pattern,這時候如果再結合supervised learning的話效果會出奇的好。
生成圖太大給D的話就會很慢很麻煩,可以做Patch GAN(不過需要自己調參,控制檢查區域的大小
聲音處理上的思路
影像處理的思路
3-3 Unsupervised Conditional Generation
Point: Transform an object from one domain to another without paired data.
兩種方法:
- 還是會保留input的整體信息,只是在紋理以及色彩等方面進行改變
- input和output可能就完全不一樣了
Direct Transformation方式
- 方法1:直接用GAN框架:
- 方法2:在直接產生的基礎上,希望的輸出與輸入經過Encoder Network之後的code儘可能接近(其中的Encoder Network可以直接使用類似VGG等訓練好的模型)
- 方法3:CycleGAN,即通過和能夠將"變化"轉回去
CycleGAN會有將一些細節隱藏,藏信息在G生成的圖片裏且肉眼看不出來,來讓還原出來的圖與原來更像,但那樣偷懶並不是我們想要的。
- 方法4:用StarGAN實現不同的風格轉換(一般來說如下圖(a)可能就需要設計個CycleGAN來實現,但StarGAN只用一個統一的架構就完成了!
他是這樣實現的:
Projection to Common Space方式
這種方法的思想在於希望兩個Domain經過轉換可以有一個"公共的code域",即希望和(兩者參數是不一樣的)產生的Code具有相同的域(比如第一維代表同一個特徵—如戴眼鏡等等)
- 方法1:共用參數,即將和的後面部分參數,以及和的前面部分參數共享—這樣帶來的好處就是,強制code變成同一個域了,且不共享的參數部分又允許各個域之間確實能夠存在差異;而共享的部分又能夠提取出公共的特點。
這種方法有用在了CoupleGAN裏。
- 方法2:加一個Domain Discriminator,望產生的code能夠被Domain Discriminator誤以爲是產生的
- 方法3:Cycle Consistency
這種方法有用在了ComboGAN裏。
- 方法4:Semantic Consistency,其實和方式3基本一樣的,只是在比較的時候採用:產生的code1和經過產生的code2儘可能相近
然後這個又用在了XGAN裏。
名言警句
Hungyi Lee:學這個有什麼用?到時候外星人來了時候會對我們進行降維打擊啊!我們學會這個技術就能先把自己二維化就能躲開外星人的降維打擊。
聲音轉換的思路
Supervised的方式,我們必須收集一堆兩個人講的一一對應的話;可是Unsupervised的方式則完全不需要,只需要有一堆兩個人的話就好,我們就可以運用類似CycleGAN等上面介紹的方式達到一句話從一個人的聲音轉爲另一個人的聲音