循環生成對抗網路
CycleGAN(Zhu 等人,2017)把影像從一個域轉換到另一個域——馬到斑馬、夏天到冬天、照片到莫內畫作——而無需任何配對範例。一般而言,要學會「把這張照片變成莫內」,你需要同一個場景既由莫內畫出、又被拍成照片,但這幾乎不存在。CycleGAN 從兩堆未配對的影像(一堆照片、一堆莫內畫)學習,靠的是強制一種巧妙的一致性:若你把一張照片轉成莫內、再把那張轉回照片,你應當還原出原圖。正是這個來回往返的約束,讓未配對轉換得以成立。
CycleGAN 訓練兩個生成器:G 把域 X 映到 Y,F 把 Y 映到 X;以及兩個判別器:D_Y(域 Y 中的真/假)與 D_X(域 X 中的真/假)。兩種要素結合在一起。第一,對抗損失讓 G(x) 看起來像真的 Y 影像、F(y) 看起來像真的 X 影像。第二,循環一致性損失強制 F(G(x)) ≈ x 與 G(F(y)) ≈ y,以 L1 範數衡量。單靠對抗損失約束嚴重不足——許多映射都能讓輸出「看起來像」目標域、卻把內容打亂——因此循環一致性把每個輸入釘在一個特定、保留內容的輸出上。一個可選的身分損失(identity loss,G(y) ≈ y)有助於保留色彩與構圖。
CycleGAN 擅長幾何大致保留的紋理、外觀與風格變換(蘋果到橘子、照片到畫作、白天到夜晚)。它在需要大幅幾何或形狀改變的轉換(貓到狗的體型)上則力有未逮,因為循環一致性獎勵的是讓版面保持可逆。一個已知的假影:循環約束可能逼模型把重建所需的資訊藏進人眼難察的高頻圖樣中(一種隱寫術),使來回往返之所以成功,是出於真正語意轉換以外的原因。它免去了對配對資料的需求,但你仍需要兩個大致匹配的域分布。
給 CycleGAN 一個裝有馬匹影片影格的資料夾,與一個裝有斑馬照片的資料夾(沒有任何一格是同一隻動物的馬/斑馬配對);訓練後,把一張新的馬影像餵給 G,會得到相同姿態與背景、但帶斑馬條紋的結果,再把它經 F 餵回,則還原出棕色的馬——正是訓練它的那個循環。
CycleGAN 的決定性貢獻在於證明循環一致性能取代配對監督——但它是一個軟性、有時可被鑽漏洞的約束,而非語意正確的保證。當配對資料確實存在時,像 pix2pix 這類配對方法通常更銳利、更可靠;唯有在無法蒐集到配對時,才特地採用 CycleGAN。