Machine Learning and having it deep and structured - Hung-yi Lee

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.
兩種方法:

  1. 還是會保留input的整體信息,只是在紋理以及色彩等方面進行改變
  2. input和output可能就完全不一樣了
    在這裏插入圖片描述

Direct Transformation方式

  • 方法1:直接用GAN框架:
    在這裏插入圖片描述
  • 方法2:在直接產生的基礎上,希望GXYG_{X\to Y}的輸出與輸入經過Encoder Network之後的code儘可能接近(其中的Encoder Network可以直接使用類似VGG等訓練好的模型)在這裏插入圖片描述
  • 方法3:CycleGAN,即通過GXYG_{X\to Y}GYXG_{Y\to X}能夠將"變化"轉回去在這裏插入圖片描述
    CycleGAN會有將一些細節隱藏,藏信息在G生成的圖片裏且肉眼看不出來,來讓還原出來的圖與原來更像,但那樣偷懶並不是我們想要的。

CycleGAN, a Master of Steganography(大屁眼子)

  • 方法4:用StarGAN實現不同的風格轉換(一般來說如下圖(a)可能就需要設計Ck2C_{k}^2個CycleGAN來實現,但StarGAN只用一個統一的架構就完成了!在這裏插入圖片描述
    他是這樣實現的:
    在這裏插入圖片描述

Projection to Common Space方式

這種方法的思想在於希望兩個Domain經過轉換可以有一個"公共的code域",即希望ENXEN_XENYEN_Y(兩者參數是不一樣的)產生的Code具有相同的域(比如第一維代表同一個特徵—如戴眼鏡等等)
在這裏插入圖片描述

  • 方法1:共用參數,即將ENXEN_XENYEN_Y的後面部分參數,以及DEXDE_XDEYDE_Y的前面部分參數共享—這樣帶來的好處就是,強制code變成同一個域了,且不共享的參數部分又允許各個域之間確實能夠存在差異;而共享的部分又能夠提取出公共的特點。在這裏插入圖片描述

這種方法有用在了CoupleGAN裏。

  • 方法2:加一個Domain Discriminator,望ENXEN_X產生的code能夠被Domain Discriminator誤以爲是ENYEN_Y產生的在這裏插入圖片描述
  • 方法3:Cycle Consistency在這裏插入圖片描述

這種方法有用在了ComboGAN裏。

  • 方法4:Semantic Consistency,其實和方式3基本一樣的,只是在比較的時候採用:ENXEN_X產生的code1和經過DEY+ENYDE_Y+EN_Y產生的code2儘可能相近在這裏插入圖片描述

然後這個又用在了XGAN裏。

名言警句

Hungyi Lee:學這個有什麼用?到時候外星人來了時候會對我們進行降維打擊啊!我們學會這個技術就能先把自己二維化就能躲開外星人的降維打擊。

聲音轉換的思路

在這裏插入圖片描述
Supervised的方式,我們必須收集一堆兩個人講的一一對應的話;可是Unsupervised的方式則完全不需要,只需要有一堆兩個人的話就好,我們就可以運用類似CycleGAN等上面介紹的方式達到一句話從一個人的聲音轉爲另一個人的聲音

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章