# HY機器學習#7: 生成式對抗網路(Generative Adversarial Network, GAN) 輸入會再多加一個隨機的變數z(可能是串接或相加),隨機變數z要是固定的分佈且可以取樣的,這樣network就可以視為一個generator,而輸出不再固定 時機:有時候輸出本來就是機率分布,有很多可能,或是任務是有創造性的時候。例如機器畫圖、機器對話 GAN就是其中一種network ## Generative Adversarial Network (GAN)  ### 以unconditional generation為例 (沒有資料輸入,純粹只有隨機變數輸入) 輸入(某一個向量,每次不同)->(generator)->輸出(向量,dim數跟輸入不一定要一樣)並調整成要的東西(例如圖像)  ### Discriminator 輸入一張圖像,輸出值表示是否越接近要的東西(可用數值或是分類的向量) 架構可以自己創造,例如說處理圖像可以用CNN 作用是要拿來偵測generator製造的圖片是否是想要的  Discriminator與Generator有對抗關係,製造出結果->找麻煩->用更多特徵去製造->繼續找麻煩.....,因此才會有Advisersarial(對抗)這個字眼  ## 訓練過程 輸入->Generator(G)->Discriminator(D)->輸出 跟實際正確結果比較 而G-D可以看成一個大的Network Step 1:固定G,訓練D讓D盡可能在正確的圖輸出1、G產生的圖輸出0(或分類) (一開始G可能是隨機的,會輸出雜訊)  Step 2:固定D,調整訓練G可以讓加上D輸出的結果越高越好(覺得是正確的圖)  Step 3:重複1 2  ### Progressive GAN 製造人臉的技術 https://arxiv.org/abs/1710.10196 也可以調整兩個輸入向量(內插),得到兩個照片的特徵的綜合(例如左看0右看1,使0.5看中間) ## GAN理論 ### Generator目標 找到一組參數,使得Generate的資料以及Sample的資料Diverenge最小(兩者的機率分布越接近)  分布沒有函數,只能從Discriminator下手 目標是最大化某個function V:使得原始圖形y帶入並取log會較大、製造出來的圖形取log較小(因此取1-log) 此式即為負的Cross Entropy,也就是計算分類問題時候會用到的公式,也推導出"跟JS Divergence有關",因此連接回原來的目標  直觀解釋:兩組資料很像,表示Discriminator不容易分辨,也造成V舉之後的最大值是比較小的值,Divergence就會比較小  將原始的Divergence替換成Discriminator的目標式子 也就是GAN的演算法:最大化D之下調整G參數使得函數值越小  也可以用其他Divergence (設計不同的目標函數,連結到不同Divergence)  ## GAN的改進:WGAN ### JS Divergence的問題 Pg(Generator產生的資料)以及Pdata分布常常不會有什麼重疊 只要不重疊,不管是否更相近,divergence都是log2,這樣無法分辨是否改善;而且binary classifier都可以得到完全正確答案,不容易藉由訓練而改進。 Wasserstein distance 把某個分布變成另一個分布,所需的最小平均距離 這樣就可以把上面的問題解決,不同相近程度有不同的d ### WGAN 利用Wasserstein distance 取代JS Divergence Wasserstein distance計算麻煩 相當於解下面問題(找出D(x),D是一個足夠平滑的函數) 式子的值就是Wasserstein distance   ### 其他GAN影片 https://www.youtube.com/playlist?list=PLJV_el3uVTsMq6JEFPW35BCiOQTsoqwNw Variational Autoencoder (VAE) https://www.youtube.com/watch?v=8zomhgKrsmQ FLOW-based Model https://www.youtube.com/watch?v=uXY18nzdSsM ### 直接用supervise方法得到圖形 Generative Latent Optimization (GLO) https://arxiv.org/abs/1707.05776 Gradient Origin Networks https://arxiv.org/abs/2007.02798  ## GAN的效能評估 ### 人工看 工資貴且太過主觀 ### 通過Classifier 單一圖片丟入影像分類系統: Inception net, VGG, etc. 若同一類的分數高,表示系統肯定影像就是某種類別,表現較佳 以下缺點至今難解 1. More Collapse:只產生出某幾種很像的圖片(D的盲點,G根據盲點產出)  2. More Dropping:多樣性有問題,有相同的某一特徵 將每張圖片丟入分類後,將結果平均,若分布過於集中,表示有此問題 (越平坦越好,表示每張照片都處於不同類別)  Inception Score (IS): Good quality(單張分類) large diversity(各張分布) → Large IS FID: 把真實跟產出圖片丟入系統,SoftMax之前的向量評比,假設都是高斯分布,用某公式寄送兩個分布的差距,越小越好  3. Memory GAN 用資料庫的答案作為輸出,表現很好但不是好的系統 ## Conditional Generation 給條件,依此條件給輸出 應用:輸入文字,根據文字給予符合文字特徵的圖片 ###### tags: `機器學習` `李宏毅`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.