1. 程式人生 > >【深度學習】GAN生成對抗網路原理詳解(1)

【深度學習】GAN生成對抗網路原理詳解(1)

一個 GAN 框架,最少(但不限於)擁有兩個組成部分,一個是生成模型 G,一個是判別模型 D。在訓練過程中,會把生成模型生成的樣本和真實樣本隨機地傳送一張(或者一個 batch)給判別模型 D。判別模型 D 的目標是儘可能正確地識別出真實樣本(輸出為“真”,或者1),和儘可能正確地揪出生成的樣本,也就是假樣本(輸出為“假”,或者0)。這兩個目標分別對應了下方的目標函式的第一和第二項。而生成模型的目標則和判別模型相反,就是儘可能最小化判別模型揪出它的概率。這樣 G 和 D 就組成了一個 min-max game,在訓練過程中雙方都不斷優化自己,直到達到平衡——雙方都無法變得更好,也就是假樣本與真樣本完全不可區分。

通過這樣的巧妙設計,GAN 就擁有了一個非常吸引人的性質。GAN 中的 G 作為生成模型,不需要像傳統圖模型一樣,需要一個嚴格的生成資料的表示式。這就避免了當資料非常複雜的時候,複雜度過度增長導致的不可計算。同時,它也不需要 inference 模型中的一些龐大計算量的求和計算。它唯一的需要的就是,一個噪音輸入,一堆無標準的真實資料,兩個可以逼近函式的網路。

訓練難點一:過於自由

但是天下沒有免費的午餐,這樣簡單的要求使得 GAN 的自由度非常大。換句話說,GAN 的訓練就會很容易失去方向,變得野蠻生長。於是,早期的 GAN 經常出現如下讓人崩潰的現象:

這些現象其實是 GAN 中存在的三個難點或者說問題交織導致的。個人覺得,首當其中的難點一就是,深度神經網路自身的難訓練和不穩定。

雖然原始 GAN 的理論中,並不要求 G 和 D 都是神經網路,只需要是能擬合相應生成和判別的函式就可以。但是這恰好是深度神經網路擅長的事情嘛,所以大家就都用神經網路作為 G 和 D 了。但是神經網路的選擇、設計和訓練還充滿了藝術的驚喜與生活的不確定性,這也直接為 GAN 的訓練帶來了困難。加之本來 GAN 就缺乏指導,所以就有了一系列可以被歸結為解決這一方向問題的工作。我將這類工作概括為 Partial Guidance, Fine-Grained Guidance 和 Special Architecture。

解決方案一:Partial Guidance

先來看,Partial Guidance。Partial Guidance 中我概括的幾個重要工作,都是為原始 GAN 加上一些顯式的外部資訊,比如使用者的額外輸入,比如類別資訊等等。包含的工作有:

Conditional GAN[15],也叫 CGAN,幾乎是原始 GAN[2] 後的第一份工作,想法非常簡單,既然你的資訊不夠,我就把你原始的生成過程變成基於某些額外資訊的生成。這樣就相當於給你提供了一些 hint,所以公式如下:

可以看到,D 和 G 去擬合的分佈都變成了條件概率分佈。在 CGAN 的工作中,這個額外的 y 資訊,是通過在輸入層直接拼接樣本與 y 資訊的向量而實現的。具體使用的 y 資訊有 one-hot vector,也有影象(也就是基於另一個影象去生成)。這個 y 資訊的選擇其實十分靈活,在後期的工作中也依然很常見,畢竟是一種非常直觀有效的加入 label 資訊的方式。

第二個這方面的工作是由 OpenAI 提出的 Improved GAN[19],其中重點提出了兩個訓練 GAN 的技巧,feature matching 和 minibatch discrimination。feature matching 是指,既然 G 和 D 的訓練不夠穩定,常常 D 太強,G 太弱,那麼不如就把 D 網路學到的特徵直接“傳”給 G,讓 G 不僅能知道 D 的輸出,還能知道 D 是基於什麼輸出的。所以就有了如下的新的目標函式:

也就是說,現在的 D 直接就是神經網路的某一箇中間層了。這個方法在實驗中發現對於訓練的穩定度提升非常有幫助。與此同時,他們還提出了第二個方法,叫 minibatch discrimination:

這其實是讓 D 在判斷當前傳給它的樣本是真是假的同時,不要只關注當前的,也要關注其他的樣本。這會增加 D 判斷樣本時候的多樣性,從而增加了 G 生成樣本的多樣性,因為它不再會只基於一種“逼真”樣本的方向來改進自己。

第三個工作是來自 UC Berkeley 的 iGAN/GVM[24],也是開篇介紹 GAN 應用中的解放靈魂畫手的工作。他們的工作中蘊含了兩種指導資訊,一個是使用者的輸入,比如藍色的筆觸,比如綠色的線條,比如影象改變的方向和程度(拉伸、變形)。但是如果只利用這樣的資訊,生成的影象往往比較模糊,比如鞋子的紋理變得不夠清晰。為此它們的解決辦法是為在生成的鞋子的形狀上“貼”上原始真實圖片中的高清紋理。所以難點就是如何讓“貼”的過程變得可靠,不能“貼”出區域,也不能“貼”少了。他們在此利用了差值空間中的光場資訊,從而能捕捉到相鄰差值空間中的點對點對映關係,也就可以基於這樣的對映,迭代“貼”上紋理,直到最後一步:

iGAN 的工作之後,他們又繼續做了 pix2pix 的工作[21],用於生成一些影象兩兩之間的“變換”。也就是開篇介紹的,“從分割圖變成真實照片,從黑白圖變成彩色圖,從線條畫變成富含紋理、陰影和光澤的圖”,還有第一個 zi2zi 的字型變換,也是基於這個 pix2pix 的工作[21]。pix2pix 裡,將 D 的輸出從一張圖片變成了一對圖片,所以 D 的任務就變成了去判斷當前的兩張圖片是否是一個“真實”的“變換”。比如我們的需求是給一個黑白的 Hello Kitty 上色,那麼 pix2pix 的框架大概如下:

而 Partial Guidance 中的最後一個重要任務就是非常新的 GP-GAN[25],目標是將直接複製貼上過來的圖片,更好地融合進原始圖片中,做一個 blending 的事情。

這個過程非常像 iGAN,也用到了類似 iGAN 中的一些約束,比如 color constraint。另一方面,這個工作也有點像 pix2pix,因為它是一種有監督訓練模型,在 blending 的學習過程中,會有一個有監督目標和有監督的損失函式。

解決方案一:Fine-grained Guidance

除了 Partial Guidance 這種非常顯式的“半監督”(不是嚴格意義上的半監督)資訊,過去也有很多工作讓 GAN 的生成過程拆解到多步,從而實現“無監督”的 Fine-grained Guidance。個人總結了以下一些重要工作:

第一篇 LAPGAN 是來自 Facebook[16],是第一篇將層次化或者迭代生成的思想運用到 GAN 中的工作。在原始 GAN[2] 和後來的 CGAN[15] 中,GAN 還只能生成 16*16, 28*28, 32*32 這種低畫素小尺寸的圖片。而這篇工作[16] 是首次成功實現 64*64 的影象生成。思想就是,與其一下子生成這麼大的(包含資訊量這麼多),不如一步步由小轉大,這樣每一步生成的時候,可以基於上一步的結果,而且還只需要“填充”和“補全”新大小所需要的那些資訊。這樣資訊量就會少很多:

而為了進一步減少資訊量,他們甚至讓 G 每次只生成“殘差”圖片,生成後的插值圖片與上一步放大後的圖片做加法,就得到了這一步生成的圖片。

第二篇 Fine-grained Guidance 方面的工作[18]討論的是從 Text 生成 Image,比如從圖片標題生成一個具體的圖片。這個過程需要不僅要考慮生成的圖片是否真實,還應該考慮生成的圖片是否符合標題裡的描述。比如要標題形容了一個黃色的鳥,那麼就算生成的藍色鳥再真實,也是不符合任務需求的。為了捕捉或者約束這種條件,他們提出了 matching-aware discriminator 的思想,讓本來的 D 的目標函式中的兩項,擴大到了三項:

第三篇這方面的工作[20]可以粗略認為是 LAPGAN[16] 和 matching-aware[18] 的結合。他們提出的 StackGAN[20] 做的事情從標題生成鳥類,但是生成的過程則是像 LAPGAN 一樣層次化的,從而實現了 256*256 解析度的圖片生成過程。StackGAN 將圖片生成分成兩個階段,階段一去捕捉大體的輪廓和色調,階段二加入一些細節上的限制從而實現精修。這個過程效果很好,甚至在某些資料集上以及可以做到以假亂真:

最後一個這方面的工作[26],當時也因為效果逼真和工作夯實,引發了社交網路上和學術圈的廣泛關注,那就是去年年底的 PPGN[26],現在已被 CVPR 2017 接收。PPGN 也主張不要一次生成一張完整的圖片,而是要用一個迭代過程不斷地調整和完善。與 LAPGAN 和 StackGAN 不同的是,PPGN 使用了 Denoising AutoEncoder(DAE)的過程實現迭代,並在其網路結構中也多次體現了迭代和層次化的思想。

解決方案三:Special Architecture

針對 GAN 的第一大難點,也就是神經網路本身訓練的不穩定和難調參,也有許多工作提出了一些特殊結構,來改善這些情況。

將 GAN 成功從 MNIST 的多層感知機(MLP)結構擴充套件到卷積神經網路結構的就是 DCGAN 這篇工作[17]。這篇工作中,他們提出了一組卷積神經網路,不僅使得可以 GAN 可以在 celebA 和 LSUN 這種現實世界的真實大規模資料集上訓練,還使得 batchnorm 等 trick 也被成功運用。

雖然 DCGAN 的一度成為了 GAN 工作的標準,統治了大半年的江湖。但是隨後出現的效果非常驚豔的 pix2pix[21] 中卻指出了 U-Net 結構的優勢。pix2pix 中 G 和 D 使用的網路都是 U-Net 結構,是一種 encoder-decoder 完全對稱的結構,並且在這樣的結構中加入了 skip-connection 的使用。

這個結構對於生成效果至關重要,其也被後續的一些工作採用[9][11] 。skip-connection 不僅使得梯度傳導更通暢,網路訓練更容易,也因為這類工作多數是要學習圖片之間的對映,那麼讓 encoder 和 decoder 之間一一對應的層學到儘可能匹配的特徵將會對生成圖片的效果產生非常正面的影響。類似的討論可以見 [11]。

最後要指出的也是剛才就提到的 GP-GAN[25] 的工作。在這個工作中,它們提出了 blending GAN 的模組,雖然也是基於 encoder-decoder 的結構,但是略有不同的地方是,在兩者中間加入了一個 fully-connected layer:

這個全連線層的特殊之處在於,並不是卷積神經網路中的 channel-wise FCN,而是徹底全連線。這樣的好處是可以傳遞更多的全域性資訊,使得有監督學習變得更加有效。

訓練難點二:原始目標函式沒意義

其實,GAN 訓練之難,更多的源於它 GAN 目標函式自身。GAN 的 D 的目標函式上文已經提過:

而 G 的目標函式相應的是:

也就是說,G 需要最小化讓 D 識別出自己生成的假樣本的概率。但其實,在 GAN 原始論文[2] 中,作者就指出使用如上的 G 的目標函式會給訓練造成問題。從形象化的角度來理解,在訓練的早期,G 生成的假樣本質量還非常差,與真實樣本相距過遠。這會知道 D 非常容易識別出 G 的假樣本,從而使得 D 的訓練幾乎沒有損失,也就沒有有效的梯度資訊回傳給 G 讓 G 去優化自己。這樣的現象叫做 gradient vanishing,梯度消失問題。

從偏理論的角度來理解,梯度消失的問題實際上更“複雜”一些。想要理解它需要先理解 GAN 的 min-max game 的平衡條件。當 G 和 D 的對抗訓練達到平衡時,可以認為取得了最優的 D(和最優的 G),此時最優的 D* 應該是兩個分佈的比值:

有了最優的 D* 的表達,就可以將它帶入原始的 D 的目標函式,從而得到上頁 slides 中的等價表達。也就是說,在 GAN 原始論文[2] 中就已經給出了,優化這樣一個目標函式等價於優化 JS 散度(因為 2log2 是常數)。

然而,問題就出在了這個 JS 散度上。在論文[1] 中,作者指出當兩個分佈(比如這裡的真實資料分佈 P_r 和 生成資料分佈 P_g 之間幾乎不重合或者重合部分可忽略不計時,JS 散度也是個常數!而這在由神經網路擬合的分佈中是非常常見的!也就是說,原始的 GAN 目標函式幾乎是常數,所以也就不難理解為什麼梯度幾乎消失了。

訓練難點三:替代目標函式不合理

針對梯度消失問題,原始 GAN 論文[2] 就提出了一個啟發性的替代目標函式:

這一函式相比原始的目標函式,相當於從最小化 D 揪出自己的概率,變成了最大化 D 抓不到自己的概率。雖然直觀上感覺是一致的,但其實並不在理論上等價,也更沒有了理論保證在這樣的替代目標函式訓練下,GAN 還會達到平衡。

即使如此,論文[1] 依然指出,就算是這個替代的目標函式,也同樣有問題!他們證明了,去優化這樣一個目標函式等價於最小化 KL 散度的同時最大化 JS 散度。

可是,KL 散度和 JS 散度是同向的:

也就是說,如果要最小化其中一個的同時卻要最大化另一個,這隻會導致優化目標不一致和訓練不穩定,也就是 gradient unstable issue。不過,既然在難點二中分析了,JS 散度在這種情況下經常為常數,不提供資訊,那麼只看 KL 散度行不行呢。答案依然是不行。即使我們只考慮優化 KL 散度,因為 KL 散度是不對稱的,也會導致問題。也就是說,當生成器無法生成真實影象和生成了非常不真實的影象,這兩種情況下,它得到的懲罰是不一樣的。這會導致,生成器 G 為了得到更少的懲罰,只得選擇懲罰最小的策略,也就是生成儘可能多的看起來真實的圖片而不考慮這些圖片是不是一樣!也就是說,只要它生成了一張判別器認為還面前湊合的圖片,它就不會再願意冒險去嘗試新的圖片,因為這種冒險會帶來更多的懲罰。所以只優化一個不對稱的 KL 散度,就會導致一個叫 mode missing 的問題,這個在我們以前也專門分析過,點我傳送。

解決方法二:Encorder-Incorporated

為了解決上述 mode missing 的問題,有非常多的工作其實可以歸為一大類。那就是在原始 G 和 D 之上再加上一個自動編碼器 encoder。比如比較有代表性的工作[3],就是讓真實圖片通過一個編碼器 E 得到一個隱空間的表達 z,再在此基礎上用生成器 G 生成最後的圖片。所以,對於編碼器的目標函式是:

而對於加入了編碼器的生成器的目標函式就會變成:

在一個模擬實驗上可以看到,沒有編碼器的原始 GAN 會非常難以擬合多個分散的 mode,而加入了編碼器的 regularized GAN 則非常容易:

同時期還有許多相似的工作,比如 EBGAN[4] 和 BEGAN[5]。兩篇工作非常相似,EBGAN 將能量函式作為判別器 D 的輸出;而 BEGAN 則將這一條件“簡化”。

解決方法二:Noisy Input

雖然介紹了這些加入了編碼器的工作,但是他們為什麼就能解決 mode missing 的問題呢。這主要還是因為加入了編碼器後,就可以儘量讓生成資料的分佈 P_g 和真實資料的分佈 P_r 更相近,重合的可能性和程度更高。從而緩解 JS 散度幾乎為常數導致的梯度無意義的問題。

然而其實有更簡單的一些技巧和方法來實現相似的目的:

在論文[1] 中,作者們就指出,如果給 P_g 和 P_r 都加入非常小的噪音,那麼它們從完全不重合到重合,從而其 JS 散度也會變得有意義。雖然這篇論文[1] 到2016年底才被提出,但相似的技巧早在之前的工作中就被人運用過。比如在 G 和 D 的神經網路中間層中加入噪音[4],或者直接在圖片輸入加入噪音[6] 等等

解決方法二:Encoders-Constrained

但是上述工作其實並沒有完全解決 mode missing 的問題。這是為什麼呢?在最近介紹過的 DiscoGAN[22] 中,有針對 mode missing 的更深入的分析。關於 DiscoGAN 的詳細介紹點我傳送。

在上圖中,(a) 代表理想狀態下學習到的生成規則,(b) 是普通 GAN 會學習到的規則,(c) 是隻加了一個 encoder,只做一次 reconstruction constraint 時候的 GAN 的情況。可以粗略地將剛才提到的 RegGAN[3] EBGAN[4] 和 BEGAN[5] 都歸為情況 (c)。可以看到,雖然情況 (c) 會比 (b) 好一些,但並不能完全避免 mode missing 的問題,而是在兩種 mode 之間“震盪”。

對此,近期有三篇想法相似的工作可以從理論上完全避免 mode missing 的問題。這三篇工作就是前陣子專門為大家推薦過的 CycleGAN [9], DiscoGAN [10]和 DualGAN[11],點我傳送。

CycleGAN[9] 就是開篇的“莫奈從春天醒來”、“馬變斑馬”、“四季更迭”背後的模型。它的論文開頭非常優美和引人入勝,先是放出了這些 impressive 的 result;同時用一種帶逛博物館的語氣寫了 Introduction:“當莫奈在一個和煦的春天的早上,站在河畔畫下這幅畫時,他眼前究竟是怎樣的景象呢?如果莫奈站在一個清爽的夏天的早上,又會看到怎樣的景象,畫出怎樣的作品呢?” 作者的寫作功底可見一斑。

作者用這樣的開頭,引出了一個 motivation:我們雖然沒有辦法真的穿越時空,站在莫奈身邊看到他當時看到的景象,但是我們卻可以通過他的畫作,想象當時的場景;同時也可以根據他的作品(和他的畫風),想象他畫出的其他場景會是怎樣的。也就是說,我們沒有 paired data 卻可以實現這種 “翻譯” 或者說對映。那麼我們是否也可以讓機器做到這件事呢?

我們人類之所以可以做到這件事,作者假設,在兩個領域(X,Y)之間,是存在一種底層的關係的,或者說隱含的關聯——這種隱含的關聯可能是,對於同一個事物,有兩種不同的對映後的表達,那麼這兩種表達之間就是針對這同一個事物的一種關聯。如果我們僅用一個對映把 G: X->Y 進行單向對映,那麼我們無法保證這個 G 是單一的。或者說,我們無法保證 X 中的所有樣本 x 和 Y 領域中的所有樣本 y 是合理對應的。這也就(可能)導致 mode collpase 的問題。對於這個問題的描述,在 CycleGAN 中,作者用了 meaningful 這個詞;而在 DiscoGAN 中,作者強調了我們希望的是 one-to-one mapping, rather than many-to-one mapping

通過這樣的分析,很容易看出,一種自然的解決方案就是,我們不僅要求一個單向對映,而更要求一種雙向對映。在 CycleGAN 中,這個問題被形式化為:我們有 G: X->Y, F: Y->X 兩個對映或者說翻譯器,我們希望 F(G(x)) ≈ x, G(F(y)) ≈ y. 在 DiscoGAN 中,作者直接把這個對映用 GAN 中的 generator 代表,所以為了實現這樣的雙向對映,DiscoGAN 中指出我們需要兩個 G,並且讓儘量 G1(G2(x)) = x,反之同理。DualGAN 的形式化與 DiscoGAN 相似。不過,三篇論文分別用了三種不同的術語來實現這樣的約束或者說目標。CycleGAN 中,作者用了 vision 中被應用多次的 cycle consistency loss,CycleGAN 也因此得名;DiscoGAN 則是因為直接強調了一一對映,所以用了 bijective map來闡述;DualGAN 因為是從去年 NIPS 2016 Dual Learning for MT 的 paper 受到啟發的,所以是從closed loop角度來寫的。因為 CycleGAN 的模型示意圖比較簡潔,所以這裡以它為示例:

上圖中紅色箭頭指向的就是兩個方向對應的各自的 cycle-consistency loss。在這篇工作中,它們還實現了一種基於畫家風格的風格轉換。這種風格轉換不再是基於某一幅圖畫的風格,所以可以理解為批量風格轉換。比如梵高的《星夜》和其《向日葵》的風格就很不相似:

那麼 CycleGAN[9] 和 DiscoGAN[10] 等用雙向對映(也就是兩個編碼器)的思想,對於 mode missing problem 到底解決得如何呢?來看看下圖的實驗結果:

上圖中的 BiGAN[13] 和 CoGAN 雖然也是雙向對映,但是對映空間是在隱空間。從實驗結果來看,這樣的不同使得其效果大打折扣:

DiscoGAN[10] 則在這個問題的視覺化分析上做得更好:

上圖中 (a) 是原始資料分佈,(b) 是普通 GAN,(c) 是加了單向對映的 GAN,(d) 是 DiscoGAN。(c) (d) 都區分出了一定程度的 mode,但 (c) 還是 miss 掉了一些(右上角綠色背景的)。而 (d) 則完美地區分了10個 mode,並且從背景色來看(背景色代表判別器 D 的輸出),判別器對於同一種 mode 的輸出非常一致,幾乎沒有漸變色,這也說明了 DiscoGAN 的訓練優勢。綜上,這些基於編碼器的工作都可以認為幾乎解決了 GAN 訓練難點三:替代目標函式不合理,一定程度解決了 JS 散度在兩個分佈幾乎不重疊時候的問題。

解決方法三:Wasserstein Distance

其實從根本上講,GAN 目標函式的問題都是 KL 散度和 JS 散度衡量兩個分佈時候的不足造成的。那麼有沒有辦法直接用其他分佈度量來為 GAN 這種對抗遊戲提供優化目標呢?為此就有了論文[1] 的眼神,Wasserstein GAN[7],目前已被 ICML 2017 錄用。

Wasserstein GAN,簡稱 WGAN 基於的是 Wasserstein Distance,也叫 Earth-Mover Distance,推土機距離。

這個距離可以形象的理解為,將一個分佈變成另一個分佈所需要的消耗。如果用一個直觀的理解就是,把一個沙堆推到另一個地方,形成另一堆可能長得不一樣的沙堆所需要的“距離”。而這種“轉變”並不是唯一的,所以很可能有些“路徑”消耗大,有些消耗小。用比較嚴謹的說法,Wasserstein 距離表示的是“最有規劃路徑”下的最短距離。

這個距離有很多優良的性質,其中最最最重要的一條就是它可以在兩個分佈毫無重疊的情況下依然給出有效的度量。也就是說,用它作為優化目標則不需要擔心梯度無意義或者梯度消失的問題。但是 Wasserstein Distance 中的“求下界”的操作無法準確高效計算,所以作者用了 Kantorovich-Rubinstein 對偶將其變換了一下,就得到了 WGAN 的目標函式:

但是這樣的變換要求符合一個先決條件,也就是判別器 D 擬合的函式需要是 1-Lipschitz 連續函式。Lipschitz 連續實際上是要求一個連續函式的導函式的絕對值不大於某個常數,也就是說,它限制了一個連續函式的最大區域性變動幅度。這個對於由神經網路來擬合的函式來講,導數可以粗暴理解為神經網路的權重。所以在 WGAN[7] 中他們採取了 weight clipping,梯度剪裁的方式,將“導數”限制在 [-c,c] 範圍內。也就是每次更新 D 的引數後,超過這個範圍的都拉回來。

從上圖可以看到,WGAN 的 D 的導數很平滑(也就是所謂的 WGAN Critic,淺藍色線),而原始的 GAN 的梯度消失很嚴重(紅色線)。也就是說,有了基於 Wasserstein distance 的 WGAN,原始 GAN 中的難點二,梯度消失問題就解決了。

同時,他們還發現基於由於現在的 WGAN 中的 D 不再是做二分類任務,而是做一個“回顧”任務去擬合 Wasserstein distance,這個 distance 從實驗上發現,與生成的圖片質量呈負相關:

梯度裁剪的問題以及改進

雖然 WGAN 在實驗中展現了自己比原始 GAN 穩定的一面,但它依然遺留了一個問題。也就是通過 weight clipping,梯度裁剪這種方法選擇的那個超參 c 對於實驗結果的影響有多大?其實這個問題在原始 WGAN[7] 的論文中作者就有討論。當 c 太大時,會出現梯度爆炸問題;過小也會導致梯度消失問題。

基於此,就有了 Improved WGAN[14] 這篇工作。他們首先分析了,到底基於梯度裁剪方式,會導致什麼樣的問題。首先在 Section 2.3 中他們證明,用這樣的方式實際上也存在一個最優的判別器 D,當達到這個最優判別器時,D 的所有權重都會傾向於等於c,如下:

而這樣的一個缺點就是,會導致學出來的網路過於簡單,對於複雜函式的擬合能力或者說對於分佈的建模能力會明顯下降。比如下面的模擬實驗中,就可以看到基於梯度裁剪的方法擬合分佈,會忽略掉高階動量。

為此,[14] 提出了一種新的方式去滿足 WGAN 目標函式的額外要求,也就是 Lipschitz 連續性。他們指出既然最優的判別器的權重會傾向於一個常數,不如就把這個常數當成“目標”,把當前的權重與這個常數的距離,當成一種懲罰項或者正則項,加入 WGAN 的目標函式中:

也因此,這個方法被叫做 gradient penalty,這樣的 WGAN 就叫 WGAN-GP [14]。WGAN-GP 比原始 WGAN 的收斂速度更快,訓練也更穩定,得到的生成結果的質量也更好。

結語及資源

本文主要總結了 GAN 發展過程中的一些重要模型。這些模型的出現有些甚至甚至早於理論上的發展,但是當理論發展到一定程度,回過頭再去看這些模型就會有一些新的理解。如果大家對 GAN 很感興趣,也想自己上手試試,優先推薦以下的一些模型和技巧:

最後再次附上這份文字版乾貨對應的完整 slides 和回顧視訊。只要公眾號後臺回覆“原理篇”就可以獲取126頁完整 PDF 和分享視訊啦!

參考文獻

[1] Arjovsky and Bottou, “Towards Principled Methods for Training Generative Adversarial Networks”. ICLR 2017.

[2] Goodfellow et al., “Generative Adversarial Networks”. ICLR 2014.

[3] Che et al., “Mode Regularized Generative Adversarial Networks”. ICLR 2017.

[4] Zhao et al., “Energy-based Generative Adversarial Networks”. ICLR 2017.

[5] Berthelot et al., “BEGAN: Boundary Equilibrium Generative Adversarial Networks”. arXiv preprint 2017.

[6] Sønderby, et al., “Amortised MAP Inference for Image Super-Resolution”. ICLR 2017.

[7] Arjovsky et al., “Wasserstein GANs”. ICML 2017.

[8] Villani, Cedric. “Optimal transport: old and new”, volume 338. Springer Science & Business Media, 2008.

[9] Jun-Yan Zhu*, Taesung Park*, Phillip Isola, Alexei A. Efros. “Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks”. arXiv preprint 2017.

[10] Taeksoo Kim, Moonsu Cha, Hyunsoo Kim, Jung Kwon Lee, Jiwon Kim. “Learning to Discover Cross-Domain Relations with Generative Adversarial Networks”. ICML 2017.

[11] Zili Yi, Hao Zhang, Ping Tan, Minglun Gong. “DualGAN: Unsupervised Dual Learning for Image-to-Image Translation”. arXiv preprint 2017.

[12] Jeff Donahue, Philipp Krähenbühl, Trevor Darrell. “Adversarial Feature Learning”. ICLR 2017.

[13] Vincent Dumoulin, Ishmael Belghazi, Ben Poole, Olivier Mastropietro, Alex Lamb, Martin Arjovsky, Aaron Courville. “Adversarially Learned Inference”. ICLR 2017.

[14] Ishaan Gulrajani, Faruk Ahmed, Martin Arjovsky, Vincent Dumoulin, Aaron Courville. “Improved Training of Wasserstein GANs”. arXiv preprint 2017.

[15] Mehdi Mirza, Simon Osindero. “Conditional Generative Adversarial Nets”. arXiv preprint 2014.

[16] Emily Denton, Soumith Chintala, Arthur Szlam, Rob Fergus. “Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks”. arXiv preprint 2015.

[17] Alec Radford, Luke Metz, Soumith Chintala. “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks”. ICLR 2016.

[18] Scott Reed, Zeynep Akata, Xinchen Yan, Lajanugen Logeswaran, Bernt Schiele, Honglak Lee. “Generative Adversarial Text to Image Synthesis”. ICML 2016.

[19] Tim Salimans, Ian Goodfellow, Wojciech Zaremba, Vicki Cheung, Alec Radford, Xi Chen. “Improved Techniques for Training GANs”. arXiv preprint 2016.

[20] Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang, Xiaolei Huang, Xiaogang Wang, Dimitris Metaxas. “StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks”. arXiv preprint 2016.

[21] Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, Alexei A. Efros. “Image-to-Image Translation with Conditional Adversarial Networks”. CVPR 2017.

[22] Yaniv Taigman, Adam Polyak, Lior Wolf. “Unsupervised Cross-Domain Image Generation”. ICLR 2017.

[23] Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio. “Generative Adversarial Nets”. NIPS 2014.

[24] Jun-Yan Zhu, Philipp Krähenbühl, Eli Shechtman and Alexei A. Efros. “Generative Visual Manipulation on the Natural Image Manifold”, ECCV 2016.

[25] Huikai Wu, Shuai Zheng, Junge Zhang, Kaiqi Huang. “GP-GAN: Towards Realistic High-Resolution Image Blending”. arXiv preprint 2017.

[26] Anh Nguyen, Jeff Clune, Yoshua Bengio, Alexey Dosovitskiy, Jason Yosinski. “Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space”. CVPR 2017.