ML_2021_6-4 生成式對抗網路(四) – Cycle GAN
Learning from unpaired data
- 把GAN用在unsupervised learning
- 如何用沒標註的資料做semi-supervised learning
- 2021 HW3,HW5都有用到
- 不過他們仍然需要一些paired data
- 2021 HW3,HW5都有用到
影像風格轉換
以影像風格轉換,要把三次元真人的圖片轉成二次元的輸出,不可能先幫3次元訓練資料畫一個二次元的圖片來pair,所以任何一筆成對資料都沒有
我們可否把輸入的真人圖片變成一個distribution,輸出的圖片也是一個distribution呢?
First approach
套用原本GAN的想法,只要能從x domain sample即可
- 從domain x sample,輸出以後跟y domain做discriminator,最後輸出向量
- 從domain x sample,輸出以後跟y domain做discriminator,最後輸出向量
問題:
- generator可以只訓練通過discriminator的照片,然後完全忽略輸入
- 所以我們需要condition,但又因為沒有paired data,我們不能用condition GAN
- generator可以只訓練通過discriminator的照片,然後完全忽略輸入
-> 既然這樣,就用兩次GAN,看輸出能不能還原原本的圖片 -> 使用cycle GAN
Cycle GAN
同樣以影像風格轉換為例(輸入3次元人臉,輸出二次元人臉)
在原本的GAN網路中再新增一個GAN,把第一個generator的輸出丟進第二個generator的輸入,第二個GAN用於產生跟原始的輸入x盡量相似的圖片
即讓$G_{x \rightarrow y}越接近G_{y\rightarrow x}$越好
問題2: 機器有沒有可能亂學,「串通作弊」呢
- EX: 機器gen1學到真人戴眼鏡,就會把眼鏡拿掉變成痣;gen2則學到看到二次元痣,就把痣拿掉換回眼鏡
- EX2: gen1跟gen2互相對稱旋轉圖片
不過在實作上這個問題發生率不高,因為network is lazy,看到眼鏡就輸出眼鏡了
相反來說,我們也會需要一個discriminator來看$G_{y\rightarrow x}$(就是生成的3次元頭像是否跟原始圖像很像)
如上圖,這兩個合起來就會是cycle GEN
其他做影像風格轉換的GAN
文字風格轉換
輸入一個句子,輸出另一個句子 (此例是把負面句子變成正面句子)
- 依樣畫葫蘆,收集一堆負面/正面的句子(同樣沒有成對資料)
套用Cycle GAN作法
問題: 文字的相似度如何計算?
自行研究輸出如果是文字接給discriminator會有問題,需要用RL做
文字風格轉換應用(除了負面轉正面的句子)
- Unsupervised Abstractive Summarization (摘要練習)
- Unsupervised Translation (翻譯)
- Unsupervised ASR (語音辨識)