ML_2021_6-4 生成式對抗網路(四) – Cycle GAN

Learning from unpaired data

  • 把GAN用在unsupervised learning
  • 如何用沒標註的資料做semi-supervised learning
    • 2021 HW3,HW5都有用到
        - 不過他們仍然需要一些paired data

影像風格轉換

  • 以影像風格轉換,要把三次元真人的圖片轉成二次元的輸出,不可能先幫3次元訓練資料畫一個二次元的圖片來pair,所以任何一筆成對資料都沒有

  • 我們可否把輸入的真人圖片變成一個distribution,輸出的圖片也是一個distribution呢?

First approach

  • 套用原本GAN的想法,只要能從x domain sample即可

    • 從domain x sample,輸出以後跟y domain做discriminator,最後輸出向量
  • 問題:

    • generator可以只訓練通過discriminator的照片,然後完全忽略輸入
      • 所以我們需要condition,但又因為沒有paired data,我們不能用condition GAN

-> 既然這樣,就用兩次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

  • Disco GAN

  • Dual GAN

  • Cycle GAN

    • 這三個想法幾乎一模一樣,只是團隊不同
  • StarGAN則是可以在多種風格間轉換(Cycle只能兩種風格)

  • 進階版GAN,以及應用他的網站

文字風格轉換

  • 輸入一個句子,輸出另一個句子 (此例是把負面句子變成正面句子)

    • 依樣畫葫蘆,收集一堆負面/正面的句子(同樣沒有成對資料)
  • 套用Cycle GAN作法

  • 問題: 文字的相似度如何計算?
    自行研究

  • 輸出如果是文字接給discriminator會有問題,需要用RL做

文字風格轉換應用(除了負面轉正面的句子)

  1. Unsupervised Abstractive Summarization (摘要練習)
  2. Unsupervised Translation (翻譯)
  3. Unsupervised ASR (語音辨識)