萬字長文解讀GAN:從基本概念、原理到實際應用

2020-11-22 雷鋒網

雷鋒網(公眾號:雷鋒網) AI 科技評論按,本文作者是我愛饅頭,原載於知乎。

前陣子學習 GAN 的過程發現現在的 GAN 綜述文章大都是 2016 年 Ian Goodfellow 或者自動化所王飛躍老師那篇。可是在深度學習,GAN 領域,其進展都是以月來計算的,感覺那兩篇綜述有些老了。最近發現有一篇最新的有關 GAN 綜述的 paper[1],四十餘頁,介紹了 GAN 的各個方面,於是就學習並整理筆記如下。文中許多內容大都根據自己所學總結,有不當之處歡迎指出。此外,本文參考了許多博客資料,已給出參考連結。如有侵權,請私信刪除。文章目錄如下:


1. GAN 的基本介紹

生成對抗網絡(GAN,Generative Adversarial Networks)作為一種優秀的生成式模型,引爆了許多圖像生成的有趣應用。GAN 相比於其他生成式模型,有兩大特點:

下面,我們圍繞上述兩點展開介紹。

1.1 GAN 的基本概念

GAN(Generative Adversarial Networks)從其名字可以看出,是一種生成式的,對抗網絡。再具體一點,就是通過對抗的方式,去學習數據分布的生成式模型。所謂的對抗,指的是生成網絡和判別網絡的互相對抗。生成網絡儘可能生成逼真樣本,判別網絡則儘可能去判別該樣本是真實樣本,還是生成的假樣本。示意圖如下:

隱變量 z(通常為服從高斯分布的隨機噪聲)通過 Generator 生成  Xfake,判別器負責判別輸入的 data 是生成的樣本 Xfake 還是真實樣本 Xreal。優化的目標函數如下:

對於判別器 D 來說,這是一個二分類問題,V(D,G) 為二分類問題中常見的交叉熵損失。對於生成器 G 來說,為了儘可能欺騙 D,所以需要最大化生成樣本的判別概率 D(G(z)),即最小化 (注意: 一項與生成器 G 無關,所以可以忽略。)

實際訓練時,生成器和判別器採取交替訓練,即先訓練 D,然後訓練 G,不斷往復。值得注意的是,對於生成器,其最小化的是,即最小化 V(D,G) 的最大值。為了保證 V(D,G) 取得最大值,所以我們通常會訓練迭代 k 次判別器,然後再迭代 1 次生成器(不過在實踐當中發現,k 通常取 1 即可)。當生成器 G 固定時,我們可以對 V(D,G) 求導,求出最優判別器D*(x) :

把最優判別器代入上述目標函數,可以進一步求出在最優判別器下,生成器的目標函數等價於優化  pdata(x) , pg(x) 的 JS 散度 (JSD, Jenson Shannon Divergence)。

可以證明,當 G,D 二者的 capacity 足夠時,模型會收斂,二者將達到納什均衡。此時,pdata(x) = pg(x),判別器不論是對於 pdata(x) 還是 pg(x) 中採樣的樣本,其預測概率均為 0.5,即生成樣本與真實樣本達到了難以區分的地步。

1.2 目標函數

前面我們提到了 GAN 的目標函數是最小化兩個分布的 JS 散度。實際上,衡量兩個分布距離的方式有很多種,JS 散度只是其中一種。如果我們定義不同的距離度量方式,就可以得到不同的目標函數。許多對 GAN 訓練穩定性的改進,比如 EBGAN,LSGAN 等都是定義了不同的分布之間距離度量方式。

1.2.1 f-divergence

f-divergence 使用下面公式來定義兩個分布之間的距離:

上述公式中 f 為凸函數,且 f(1) = 0。採用不同的 f 函數(Generator),可以得到不同的優化目標。具體如下:

值得注意的是,散度這種度量方式不具備對稱性,即 和 不相等(嚴格來說,距離度量方式必須具備對稱性,所以散度不是一種距離度量方式,不過此處不去刻意關注這一點,直接把散度也作為一種距離度量方式,下文也是如此)。

LSGAN

上面提到,LSGAN 是 f-divergence 中  時的特殊情況。具體來說 LSGAN 的 Loss 如下:

原作中取 a = c = 1,b = 0。LSGAN 有兩大優點 [2]:

對於第一點,穩定訓練,可以先看一張圖:

上圖左邊是傳統 GAN 使用 sigmoid 交叉熵作為 loss 時,輸入與輸出的對照關係圖。上圖右邊是 LSGAN 使用最小二乘 loss 時,輸入與輸出的對照關係圖。可以看到,在左圖,輸入比較大的時候,梯度為 0,即交叉熵損失的輸入容易出現梯度飽和現象。而右邊的最小二乘 loss 則不然。

對於第二點,改善生成質量。這個在原文也有詳細的解釋。具體來說:對於一些被判別器分類正確的樣本,其對梯度是沒有貢獻的。但是判別器分類正確的樣本就一定是很接近真實數據分布的樣本嗎?顯然不一定。

考慮如下理想情況,一個訓練良好的 GAN,真實數據分布 pdata 和 pg 生成數據分布 完全重合,判別器決策面穿過真實數據點,所以,反過來,我們利用樣本點離決策面的遠近來度量生成樣本的質量,樣本離決策面越近,則 GAN 訓練的越好。

上圖 b 中,一些離決策面比較遠的點,雖然被分類正確,但是這些並不是好的生成樣本。傳統 GAN 通常會將其忽略。而對於 LSGAN,由於採用最小二乘損失,計算決策面到樣本點的距離,如圖 c,可以把離決策面比較遠的點「拉」回來,也就是把離真實數據比較遠的點「拉」回來。

1.2.2 Integral probality metric(IPM)

IPM 定義了一個評價函數族 f,用於度量任意兩個分布之間的距離。在一個緊湊的空間  中,定義  p(x) 為在 x上的概率測度。那麼兩個分布 pdata,pg 之間的 IPM 可以定義為如下公式:

類似於 f-divergence,不同函數 f 也可以定義出一系列不同的優化目標。典型的有 WGAN,Fisher GAN 等。下面簡要介紹一下 WGAN。

WGAN

WGAN 提出了一種全新的距離度量方式——地球移動距離 (EM, Earth-mover distance),也叫 Wasserstein 距離。關於 Wasserstein 距離的介紹可以參考:

我愛饅頭:白話 Wassertein 距離

Wasserstein 距離具體定義如下:

表示一組聯合分布,這組聯合分布裡的任一分布 r 的邊緣分布均為 pdata(x) 和 pg(x)。

直觀上來說,概率分布函數(PDF)可以理解為隨機變量在每一點的質量,所以  W(pdata, pg) 則表示把概率分布 pdata(x) 搬到 pg(x) 需要的最小工作量。

WGAN 也可以用最優傳輸理論來解釋,WGAN 的生成器等價於求解最優傳輸映射,判別器等價於計算 Wasserstein 距離,即最優傳輸總代價 [4]。關於 WGAN 的理論推導和解釋比較複雜,不過代碼實現非常簡單。具體來說 [3]:

上述第三點,在 WGAN 的後來一篇工作 WGAN-GP 中,將梯度截斷替換為了梯度懲罰。

1.2.3 f-divergence 和 IPM 對比

  • f-divergence 存在兩個問題:其一是隨著數據空間的維度 的增加,f-divergence 會非常難以計算。其二是兩個分布的支撐集 [3] 通常是未對齊的,這將導致散度值趨近於無窮。

  • IPM 則不受數據維度的影響,且一致收斂於 pdata, pg 兩個分布之間的距離。而且即便是在兩個分布的支撐集不存在重合時,也不會發散。

1.2.4 輔助的目標函數

在許多 GAN 的應用中,會使用額外的 Loss 用於穩定訓練或者達到其他的目的。比如在圖像翻譯,圖像修復,超分辨當中,生成器會加入目標圖像作為監督信息。EBGAN 則把 GAN 的判別器作為一個能量函數,在判別器中加入重構誤差。CGAN 則使用類別標籤信息作為監督信息。

1.3 其他常見生成式模型

1.3.1 自回歸模型:pixelRNN 與 pixelCNN

自回歸模型通過對圖像數據的概率分布 p_{data}(x) 進行顯式建模,並利用極大似然估計優化模型。具體如下:

上述公式很好理解,給定  條件下,所有 p(xi) 的概率乘起來就是圖像數據的分布。如果使用 RNN 對上述依然關係建模,就是 pixelRNN。如果使用 CNN,則是 pixelCNN。具體如下 [5]:

pixelRNN

pixelCNN

顯然,不論是對於 pixelCNN 還是 pixelRNN,由於其像素值是一個個生成的,速度會很慢。語音領域大火的 WaveNet 就是一個典型的自回歸模型。

1.3.2 VAE

PixelCNN/RNN 定義了一個易於處理的密度函數,我們可以直接優化訓練數據的似然;對於變分自編碼器我們將定義一個不易處理的密度函數,通過附加的隱變量 z 對密度函數進行建模。VAE 原理圖如下 [6]:

在 VAE 中,真實樣本 X 通過神經網絡計算出均值方差(假設隱變量服從正態分布),然後通過採樣得到採樣變量 Z 並進行重構。VAE 和 GAN 均是學習了隱變量 z 到真實數據分布的映射。但是和 GAN 不同的是:

生成式模型對比

1.4 GAN 常見的模型結構

1.4.1 DCGAN

DCGAN 提出使用 CNN 結構來穩定 GAN 的訓練,並使用了以下一些 trick:

上面這些 trick 對於穩定 GAN 的訓練有許多幫助,自己設計 GAN 網絡時也可以酌情使用。

1.4.2 層級結構

GAN 對於高解析度圖像生成一直存在許多問題,層級結構的 GAN 通過逐層次,分階段生成,一步步提生圖像的解析度。典型的使用多對 GAN 的模型有 StackGAN,GoGAN。使用單一 GAN,分階段生成的有 ProgressiveGAN。StackGAN 和 ProgressiveGAN 結構如下:

1.4.3 自編碼結構

經典的 GAN 結構裡面,判別網絡通常被當做一種用於區分真實/生成樣本的概率模型。而在自編碼器結構裡面,判別器(使用 AE 作為判別器)通常被當做能量函數 (Energy function)。對於離數據流形空間比較近的樣本,其能量較小,反之則大。有了這種距離度量方式,自然就可以使用判別器去指導生成器的學習。

AE 作為判別器,為什麼就可以當做能量函數,用於度量生成樣本離數據流形空間的距離呢?首先,先看 AE 的 loss:

AE 的 loss 是一個重構誤差。使用 AE 做為判別器時,如果輸入真實樣本,其重構誤差會很小。如果輸入生成的樣本,其重構誤差會很大。因為對於生成的樣本,AE 很難學習到一個圖像的壓縮表示(即生成的樣本離數據流行形空間很遠)。所以,VAE 的重構誤差作為 pdata 和 pg 之間的距離度量是合理的。典型的自編碼器結構的 GAN 有:BEGAN, EBGAN, MAGAN 等

1.5 GAN 的訓練障礙 (Obstacles)

1.5.1 理論中存在的問題

經典 GAN 的判別器有兩種 loss,分別是:

  • 使用上面第一個公式作為 loss 時:在判別器達到最優的時候,等價於最小化生成分布與真實分布之間的 JS 散度,由於隨機生成分布很難與真實分布有不可忽略的重疊以及 JS 散度的突變特性,使得生成器面臨梯度消失的問題

  • 使用上面第二個公式作為 loss 時:在最優判別器下,等價於既要最小化生成分布與真實分布直接的 KL 散度,又要最大化其 JS 散度,相互矛盾,導致梯度不穩定,而且 KL 散度的不對稱性使得生成器寧可喪失多樣性也不願喪失準確性,導致 collapse mode 現象 [7]。

1.5.2 實踐中存在的問題

GAN 在實踐中存在兩個問題:

其一,GAN 提出者 Ian Goodfellow 在理論中雖然證明了 GAN 是可以達到納什均衡的。可是我們在實際實現中,我們是在參數空間優化,而非函數空間,這導致理論上的保證在實踐中是不成立的。

其二,GAN 的優化目標是一個極小極大 (minmax) 問題,即,也就是說,優化生成器的時候,最小化的是。可是我們是迭代優化的,要保證 V(G,D) 最大化,就需要迭代非常多次,這就導致訓練時間很長。如果我們只迭代一次判別器,然後迭代一次生成器,不斷循環迭代。這樣原先的極小極大問題,就容易變成極大極小 (maxmin) 問題,可二者是不一樣的,即:

如果變化為極小極大問題,那麼迭代就是這樣的,生成器先生成一些樣本,然後判別器給出錯誤的判別結果並懲罰生成器,於是生成器調整生成的概率分布。可是這樣往往導致生成器變「懶」,只生成一些簡單的,重複的樣本,即缺乏多樣性,也叫 mode collapse。

1.5.3 穩定 GAN 訓練的技巧

如上所述,GAN 在理論上和實踐上存在三個大問題,導致訓練過程十分不穩定,且存在 mode collapse 的問題。為了改善上述情況,可以使用以下技巧穩定訓練:

  • Feature matching: 方法很簡單,使用判別器某一層的特徵替換原始 GAN Loss 中的輸出。即最小化:生成圖片通過判別器的特徵和真實圖片通過判別器得到的特徵之間的距離。

  • 標籤平滑:GAN 訓練中的標籤非 0 即 1,這使得判別器預測出來的 confidence 傾向於更高的值。使用標籤平滑可以緩解該問題。具體來說,就是把標籤 1 替換為 0.8~1.0 之間的隨機數。

  • 譜歸一化:WGAN 和 Improve WGAN 通過施加 Lipschitz 條件來約束優化過程,譜歸一化則是對判別器的每一層都施加 Lipschitz 約束,但是譜歸一化相比於 Improve WGAN 計算效率要高一些。

  • PatchGAN:準確來說 PatchGAN 並不是用於穩定訓練,但這個技術被廣泛用於圖像翻譯當中,PatchGAN 相當於對圖像的每一個小 Patch 進行判別,這樣可以使得生成器生成更加銳利清晰的邊緣。具體做法是這樣的:假設輸入一張 256x256 的圖像到判別器,輸出的是一個 4x4 的 confidence map,confidence map 中每一個像素值代表當前 patch 是真實圖像的置信度,即為 PatchGAN。當前圖像 patch 的大小就是感受野的大小,最後將所有 Patch 的 Loss 求平均作為最終的 Loss。

1.6 GAN mode collapse 的解決方案

1.6.1 針對目標函數的改進方法

為了避免前面提到的由於優化 maxmin 導致 mode 跳來跳去的問題,UnrolledGAN 採用修改生成器 loss 來解決。具體而言,UnrolledGAN 在更新生成器時更新 k 次生成器,參考的 Loss 不是某一次的 loss,是判別器後面 k 次迭代的 loss。注意,判別器後面 k 次迭代不更新自己的參數,只計算 loss 用於更新生成器。這種方式使得生成器考慮到了後面 k 次判別器的變化情況,避免在不同 mode 之間切換導致的模式崩潰問題。此處務必和迭代 k 次生成器,然後迭代 1 次判別器區分開 [8]。DRAGAN 則引入博弈論中的無後悔算法,改造其 loss 以解決 mode collapse 問題 [9]。前文所述的 EBGAN 則是加入 VAE 的重構誤差以解決 mode collapse。

1.6.2 針對網絡結構的改進方法

Multi agent diverse GAN(MAD-GAN) 採用多個生成器,一個判別器以保障樣本生成的多樣性。具體結構如下:

相比於普通 GAN,多了幾個生成器,且在 loss 設計的時候,加入一個正則項。正則項使用餘弦距離懲罰三個生成器生成樣本的一致性。

MRGAN 則添加了一個判別器來懲罰生成樣本的 mode collapse 問題。具體結構如下:

輸入樣本 x 通過一個 Encoder 編碼為隱變量 E(x),然後隱變量被 Generator 重構,訓練時,Loss 有三個。DM 和 R(重構誤差)用於指導生成 real-like 的樣本。而 DD 則對 E(x) 和 z 生成的樣本進行判別,顯然二者生成樣本都是 fake samples,所以這個判別器主要用於判斷生成的樣本是否具有多樣性,即是否出現 mode collapse。

1.6.3 Mini-batch Discrimination

Mini-batch discrimination 在判別器的中間層建立一個 mini-batch layer 用於計算基於 L1 距離的樣本統計量,通過建立該統計量去判別一個 batch 內某個樣本與其他樣本有多接近。這個信息可以被判別器利用到,從而甄別出哪些缺乏多樣性的樣本。對生成器而言,則要試圖生成具有多樣性的樣本。

2. 關於 GAN 隱空間的理解

隱空間是數據的一種壓縮表示的空間。通常來說,我們直接在數據空間對圖像進行修改是不現實的,因為圖像屬性位於高維空間中的流形中。但是在隱空間,由於每一個隱變量代表了某個具體的屬性,所以這是可行的。

在這部分,我們會探討 GAN 是如何處理隱空間及其屬性的,此外還將探討變分方法如何結合到 GAN 的框架中。

2.1 隱空間分解

GAN 的輸入隱變量 z 是非結構化的,我們不知道隱變量中的每一位數分別控制著什麼屬性。因此有學者提出,將隱變量分解為一個條件變量 c 和標準輸入隱變量 z。具體包括有監督的方法和無監督的方法。

2.1.1 有監督方法

典型的有監督方法有 CGAN,ACGAN。

CGAN 將隨機噪聲 z 和類別標籤 c 作為生成器的輸入,判別器則將生成的樣本/真實樣本與類別標籤作為輸入。以此學習標籤和圖片之間的關聯性。

ACGAN 將隨機噪聲 和類別標籤 作為生成器的輸入,判別器則將生成的樣本/真實樣本輸入,且回歸出圖片的類別標籤。以此學習標籤和圖片之間的關聯性。二者結構如下 (左邊為 CGAN,右邊為 ACGAN):

2.1.2 無監督方法

相比於有監督方法,無監督方法不使用任何標籤信息。因此,無監督方法需要對隱空間進行解耦得到有意義的特徵表示。

InfoGAN 對把輸入噪聲分解為隱變量 z 和條件變量 c(訓練時,條件變量 c 從均勻分布採樣而來。),二者被一起送入生成器。在訓練過程中通過最大化 c 和 G(z, c) 的互信息 I(c,G(z,c))  以實現變量解耦(的互信息表示 c 裡面關於 G(z,c) 的信息有多少,如果最大化互信息,也就是最大化生成結果和條件變量 c 的關聯性)。模型結構和 CGAN 基本一致,除了 Loss 多了一項最大互信息。具體如下 [10]:

從上面分析可以看出,InfoGAN 只是實現了信息的解耦,至於條件變量 c 每一個值的具體含義是什麼,我們無法控制。於是 ss-InfoGAN 出現了,ss-InfoGAN 採用半監督學習方法,把條件變量 c 分成兩部分,css則利用標籤像 CGAN 一樣學習,則像 InfoGAN 一樣學習。

2.2 GAN 與 VAE 的結合

GAN 相比於 VAE 可以生成清晰的圖像,但是卻容易出現 mode collapse 問題。VAE 由於鼓勵重構所有樣本,所以不會出現 mode collapse 問題。

一個典型結合二者的工作是 VAEGAN,結構很像前文提及的 MRGAN,具體如下:

上述模型的 Loss 包括三個部分,分別是判別器某一層特徵的重構誤差,VAE 的 Loss,GAN 的 Loss。

2.3 GAN 模型總結

前面兩節介紹了各種各樣的 GAN 模型,這些模型大都是圍繞著 GAN 的兩大常見問題:模式崩潰,以及訓練崩潰來設計的。下表總結了這些模型,讀者可以根據下表回顧對照:

3. GAN 的應用

由於 GAN 在生成樣本過程成不需要顯式建模任何數據分布就可以生成 real-like 的樣本,所以 GAN 在圖像,文本,語音等諸多領域都有廣泛的應用。下表總結了 GAN 在各個方面的應用,後文會這些算法做相應介紹。

3.1 圖像

3.1.1 圖像翻譯

所謂圖像翻譯,指從一副(源域)圖像到另一副(目標域)圖像的轉換。可以類比機器翻譯,一種語言轉換為另一種語言。翻譯過程中會保持源域圖像內容不變,但是風格或者一些其他屬性變成目標域。

Paired two domain data

成對圖像翻譯典型的例子就是 pix2pix,pix2pix 使用成對數據訓練了一個條件 GAN,Loss 包括 GAN 的 loss 和逐像素差 loss。而 PAN 則使用特徵圖上的逐像素差作為感知損失替代圖片上的逐像素差,以生成人眼感知上更加接近源域的圖像。

Unpaired two domain data

對於無成對訓練數據的圖像翻譯問題,一個典型的例子是 CycleGAN。CycleGAN 使用兩對 GAN,將源域數據通過一個 GAN 網絡轉換到目標域之後,再使用另一個 GAN 網絡將目標域數據轉換回源域,轉換回來的數據和源域數據正好是成對的,構成監督信息。

3.1.2 超分辨

SRGAN 中使用 GAN 和感知損失生成細節豐富的圖像。感知損失重點關注中間特徵層的誤差,而不是輸出結果的逐像素誤差。避免了生成的高分辨圖像缺乏紋理細節信息問題。

3.1.3 目標檢測

得益於 GAN 在超分辨中的應用,針對小目標檢測問題,可以理由 GAN 生成小目標的高解析度圖像從而提高目標檢測精度

3.1.4 圖像聯合分布學習

大部分 GAN 都是學習單一域的數據分布,CoupledGAN 則提出一種部分權重共享的網絡,使用無監督方法來學習多個域圖像的聯合分布。具體結構如下 [11]:

如上圖所示,CoupledGAN 使用兩個 GAN 網絡。生成器前半部分權重共享,目的在於編碼兩個域高層的,共有信息,後半部分沒有進行共享,則是為了各自編碼各自域的數據。判別器前半部分不共享,後半部分用於提取高層特徵共享二者權重。對於訓練好的網絡,輸入一個隨機噪聲,輸出兩張不同域的圖片。

值得注意的是,上述模型學習的是聯合分布 P(x,y),如果使用兩個單獨的 GAN 分別取訓練,那麼學習到的就是邊際分布 P(x) 和 P(y)。通常情況下,。

3.1.5 視頻生成

通常來說,視頻有相對靜止的背景和運動的前景組成。VideoGAN 使用一個兩階段的生成器,3D CNN 生成器生成運動前景,2D CNN 生成器生成靜止的背景。Pose GAN 則使用 VAE 和 GAN 生成視頻,首先,VAE 結合當前幀的姿態和過去的姿態特徵預測下一幀的運動信息,然後 3D CNN 使用運動信息生成後續視頻幀。Motion and Content GAN(MoCoGAN) 則提出在隱空間對運動部分和內容部分進行分離,使用 RNN 去建模運動部分。

3.2 序列生成

相比於 GAN 在圖像領域的應用,GAN 在文本,語音領域的應用要少很多。主要原因有兩個:

為了解決上述問題,強化學習中的策略梯度下降(Policy gredient descent)被引入到 GAN 中的序列生成問題。

3.2.1 音樂生成

RNN-GAN 使用 LSTM 作為生成器和判別器,直接生成整個音頻序列。然而,正如上面提到的,音樂當做包括歌詞和音符,對於這種離散數據生成問題直接使用 GAN 存在很多問題,特別是生成的數據缺乏局部一致性。

相比之下,SeqGAN 把生成器的輸出作為一個智能體 (agent) 的策略,而判別器的輸出作為獎勵 (reward),使用策略梯度下降來訓練模型。ORGAN 則在 SeqGAN 的基礎上,針對具體的目標設定了一個特定目標函數。

3.2.2 語言和語音

VAW-GAN(Variational autoencoding Wasserstein GAN) 結合 VAE 和 WGAN 實現了一個語音轉換系統。編碼器編碼語音信號的內容,解碼器則用於重建音色。由於 VAE 容易導致生成結果過於平滑,所以此處使用 WGAN 來生成更加清晰的語音信號。

3.3 半監督學習

圖像數據的標籤獲得需要大量的人工標註,這個過程費時費力。

3.3.1 利用判別器進行半監督學習

基於 GAN 的半監督學習方法 [12] 提出了一種利用無標籤數據的方法。實現方法和原始 GAN 基本一樣,具體框架如下 [13]:

相比於原始 GAN,主要區別在於判別器輸出一個 K+1 的類別信息(生成的樣本為第 K+1 類)。對於判別器,其 Loss 包括兩部分,一個是監督學習損失(只需要判斷樣本真假),另一個是無監督學習損失(判斷樣本類別)。生成器則只需要儘量生成逼真的樣本即可。訓練完成後,判別器就可以作為一個分類模型去分類。

從直觀上來看,生成的樣本主要在於輔助分類器學會區分真實的數據空間在哪裡。

3.2.2 使用輔助分類器的半監督學習

上面提及的利用判別器進行半監督學習的模型存在一個問題。判別器既要學習區分正負樣本,也要學習預測標籤。二者目標不一致,容易導致二者都達不到最優。一個直觀的想法就把預測標籤和區分正負樣本分開。Triple-GAN 就是這麼做的 [14]:

分別表示生成的數據,有標籤的數據,無標籤的數據。CE 表示交叉熵損失。

3.4 域適應

域適應是一個遷移學習裡面的概念。簡單說來,我們定義源數據域分布為 Ds(x,y),目標數據域分布為DT(x,y)。對於源域數據,我們有許多標籤,但是對於目標域的數據沒有標籤。我們希望能通過源域的有標籤數據和目標域的無標籤數據學習一個模型,在目標域泛化的很好。遷移學習的「遷移」二字指的是源域數據分布向目標域數據分布的遷移。

GAN 用於遷移學習時,核心思想在於使用生成器把源域數據特徵轉換成目標域數據特徵,而判別器則儘可能區分真實數據和生成數據特徵。以下是兩個把 GAN 應用於遷移學習的例子 DANN 和 ARDA:

以上圖左邊的 DANN 為例,Is,It 分別代表源域數據,目標域的數據,ys 表示源域數據的標籤。Fs,Ft 表示源域特徵,目標域特徵。DANN 中,生成器用於提取特徵,並使得提取的特徵難以被判別器區分是源域數據特徵還是目標域數據特徵。

在行人重識別領域,有許多基於 CycleGAN 的遷移學習以進行數據增廣的應用。行人重識別問題一個難點在於不同攝像頭下拍攝的人物環境,角度差別非常大,導致存在較大的 Domain gap。因此,可以考慮使用 GAN 來產生不同攝像頭下的數據進行數據增廣。[15] 中提出了一個 cycleGAN 用於數據增廣的方法。具體模型結構如下:

對於每一對攝像頭都訓練一個 cycleGAN,這樣就可以實現將一個攝像頭下的數據轉換成另一個攝像頭下的數據,但是內容(人物)保持不變。

3.5 其他應用

GAN 的變體繁多,應用非常廣泛,在一寫非機器學習領域也有應用,以下是一些例子。

3.5.1 醫學圖像分割

[16] 提出了一種 segmentor-critic 結構用於分割醫學圖像。segmentor 類似於 GAN 中的生成器用於生成分割圖像,critic 則最大化生成的分割圖像和 ground truth 之間的距離。此外,DI2IN 使用 GAN 分割 3D CT 圖像,SCAN 使用 GAN 用於分割 X 射線圖像。

3.5.2 圖片隱寫

隱寫指的是把秘密信息隱藏到非秘容器,比如圖片中。隱寫分析器則用於判別容器是否含有秘密信息。一些研究嘗試使用 GAN 的生成器生成帶有隱寫信息的圖片,判別器則有兩個,一個用於判別圖片是否是真實圖片,另一個則判別圖片是否具有秘密信息 [17]。

3.6.3 連續學習

連續學習目的在於解決多個任務,且在學習過程中不斷積累新知識。連續學習中存在一個突出的問題就是「知識遺忘」。[18] 中使用 GAN 的生成器作為一個 scholars model,生成器不斷使用以往知識進行訓練,solver 則給出答案,以此避免「知識遺忘」問題。

4. 討論

在第一,二部分我們討論了 GAN 及其變體,第三部分討論了 GAN 的應用。下表總結了比較有名的一些 GAN 的模型結構及其施加的額外約束。

前面都是對於 GAN 的微觀層面的探討。接下來,我們會站在一個宏觀的視角來討論 GAN。

4.1 GAN 的評價

GAN 的評價方法多種多樣,現有的 example-based(顧名思義,基於樣本層面做評價)方法,均是對生成樣本與真實樣本提取特徵,然後在特徵空間做距離度量。具體框架如下:

關於本小節的符號對照關係如下:

下面分別對常見的評價指標進行一一介紹:

4.1.1 Inception Score

對於一個在 ImageNet 訓練良好的 GAN,其生成的樣本丟給 Inception 網絡進行測試的時候,得到的判別概率應該具有如下特性:

因此,可以設計如下指標: 根據前面分析,如果是一個訓練良好的 GAN,趨近於脈衝分布,趨近於均勻分布。二者 KL 散度會很大。Inception Score 自然就高。實際實驗表明,Inception Score 和人的主觀判別趨向一致。IS 的計算沒有用到真實數據,具體值取決於模型 M 的選擇。

特點:可以一定程度上衡量生成樣本的多樣性和準確性,但是無法檢測過擬合。Mode Score 也是如此。不推薦在和 ImageNet 數據集差別比較大的數據上使用。

4.1.2 Mode Score

Mode Score 作為 Inception Score 的改進版本,添加了關於生成樣本和真實樣本預測的概率分布相似性度量一項。具體公式如下:

4.1.3 Kernel MMD (Maximum Mean Discrepancy)

計算公式如下:

對於 Kernel MMD 值的計算,首先需要選擇一個核函數 k,這個核函數把樣本映射到再生希爾伯特空間 (Reproducing Kernel Hilbert Space, RKHS),RKHS 相比於歐幾裡得空間有許多優點,對於函數內積的計算是完備的。將上述公式展開即可得到下面的計算公式:

MMD 值越小,兩個分布越接近。

特點:可以一定程度上衡量模型生成圖像的優劣性,計算代價小。推薦使用。

4.1.4 Wasserstein distance

Wasserstein distance 在最優傳輸問題中通常也叫做推土機距離。這個距離的介紹在 WGAN 中有詳細討論。公式如下:

Wasserstein distance 可以衡量兩個分布之間的相似性。距離越小,分布越相似。

特點:如果特徵空間選擇合適,會有一定的效果。但是計算複雜度為 O(n^3) 太高

4.1.5 Fréchet Inception Distance (FID)

FID 距離計算真實樣本,生成樣本在特徵空間之間的距離。首先利用 Inception 網絡來提取特徵,然後使用高斯模型對特徵空間進行建模。根據高斯模型的均值和協方差來進行距離計算。具體公式如下:

分別代表協方差和均值。

特點:儘管只計算了特徵空間的前兩階矩,但是魯棒,且計算高效。

4.1.6 1-Nearest Neighbor classifier

使用留一法,結合 1-NN 分類器(別的也行)計算真實圖片,生成圖像的精度。如果二者接近,則精度接近 50%,否則接近 0%。對於 GAN 的評價問題,作者分別用正樣本的分類精度,生成樣本的分類精度去衡量生成樣本的真實性,多樣性。

特點:理想的度量指標,且可以檢測過擬合。

4.1.7 其他評價方法

AIS,KDE 方法也可以用於評價 GAN,但這些方法不是 model agnostic metrics。也就是說,這些評價指標的計算無法只利用:生成的樣本,真實樣本來計算。

4.1.8 總結

實際實驗發現,MMD 和 1-NN two-sample test 是最為合適的評價指標,這兩個指標可以較好的區分:真實樣本和生成的樣本, mode collapsing。且計算高效。

總體說來,GAN 的學習是一個無監督學習過程,所以很難找到一個比較客觀的,可量化的評估指標。有許多指標在數值上雖然高,但是生成效果卻未必好。總之,GAN 的評價目前依然是一個開放性的問題。

4.2 GAN 與強化學習的關係

強化學習的目標是對於一個智能體,給定狀態 s,去選擇一個最佳的行為 a(action)。通常的可以定義一個價值函數 Q(s,a) 來衡量,對於狀態 s,採取行動 a 的回報是 Q(s,a),顯然,我們希望最大化這個回報值。對於很多複雜的問題,我們是很難定義這個價值函數 Q(s,a) 的,就像我們很難定義 GAN 生成的圖片到底有多好一樣。

說到這裡,大家可能反應過來了。GAN 生成的圖片好不好,我確實找不到一個合適的指標,那我學習一個判別器去判斷一下生成圖片和真實圖片的距離不就好了嗎。強化學習裡面的價值函數 Q(s,a) 難以定義,那直接用個神經網絡去學習它就好了。典型的模型有 InverseRL,GAIL 等等

4.3 GAN 的優缺點

4.3.1 優點

GAN 的優點在開頭已有所介紹。這裡再總結一下:

  • GAN 可以並行生成數據。相比於 PixelCNN,PixelRNN 這些模型,GAN 生成非常快,因為 GAN 使用 Generator 替代了採樣的過程

  • GAN 不需要通過引入下界來近似似然。VAE 由於優化困難,引入了變分下界來優化似然。但是 VAE 對於先驗和後驗分布做了假設,使得 VAE 很難逼近其變分下界。

  • 從實踐來看,GAN 生成的結過要比 VAE 更清晰的多。

4.3.2 缺點

GAN 的缺點在前文也有詳細討論,主要問題在於:

4.4 未來的研究方向

有同學希望給出 PDF,這裡轉成了 PDF 放到了 github,需要的同學自行下載:

Morde-kaiser/LearningNotesgithub.com

[1]: Hong, Yongjun, et al. "How Generative Adversarial Networks and its variants Work: An Overview of GAN."

[2] https://blog.csdn.net/victoriaw/article/details/60755698

[3] https://zhuanlan.zhihu.com/p/25071913

[4] https://mp.weixin.qq.com/s/gv-cpK161oyXinUyh05KXA

[5] https://blog.csdn.net/poulang5786/article/details/80766498

[6] https://spaces.ac.cn/archives/5253

[7] https://www.jianshu.com/p/42c42e13d09b

[8] https://medium.com/@jonathan_hui/gan-unrolled-gan-how-to-reduce-mode-collapse-af5f2f7b51cd

[9] https://medium.com/@jonathan_hui/gan-dragan-5ba50eafcdf2

[10] https://medium.com/@jonathan_hui/gan-cgan-infogan-using-labels-to-improve-gan-8ba4de5f9c3d

[11] https://blog.csdn.net/carrierlxksuper/article/details/60479883

[12]: Salimans, Tim, et al. "Improved techniques for training gans." Advances in neural information processing systems. 2016.

[13] https://blog.csdn.net/qq_25737169/article/details/78532719

[14] https://medium.com/@hitoshinakanishi/reading-note-triple-generative-adversarial-nets-fc3775e52b1e1

[15]: Zheng Z , Zheng L , Yang Y . Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in VitroC// 2017 IEEE International Conference on Computer Vision (ICCV). IEEE Computer Society, 2017.

[16]: Yuan Xue, Tao Xu, Han Zhang, Rodney Long, and Xiaolei Huang. Segan: Adversar- ial network with multi-scale l_1 loss for medical image segmentation. arXiv preprint arXiv:1706.01805, 2017.

[17]: Denis Volkhonskiy, Ivan Nazarov, Boris Borisenko, and Evgeny Burnaev. Steganographicgenerative adversarial networks. arXiv preprint arXiv:1703.05502, 2017.

[18]: Shin, Hanul, et al. "Continual learning with deep generative replay." Advances in Neural Information Processing Systems. 2017.                

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 光纖光柵傳感器的基本原理及實際應用
    與光纖Bragg光柵傳感器的工作原理基本相同,在外界物理量的作用下啁啾光纖光柵除了△λB的變化外,還會引起光譜的展寬。這種傳感器在應變和溫度均存在的場合是非常有用的,啁啾光纖光柵由於應變的影響導致了反射信號的拓寬和峰值波長的位移,而溫度的變化則由於折射率的溫度依賴性(dn/dT),僅影響重心的位置。通過同時測量光譜位移和展寬,就可以同時測量應變和溫度。
  • 國科大舉辦「超分子手性——基本概念以及應用」主題講座
    6月20日上午10點,中科院化學研究所劉鳴華研究員為同學們帶來了一場以「超分子手性——基本概念以及應用」為題的講座。講座伊始,劉鳴華研究員向同學們介紹了超分子手性的產生、應用和表徵方法以及超分子組裝體的手性研究等工作。
  • 深入淺出:GAN原理與應用入門介紹
    Statsbot 小組邀請數據科學家 Anton Karazeev 通過日常生活實例深入淺出地介紹 GAN 原理及其應用。生成對抗網絡由 Ian Goodfellow 於 2014 年提出。GAN 不是神經網絡應用在無監督學習中的唯一途徑,還有玻爾茲曼機(Geoffrey Hinton 和 Terry Sejnowski,1985)和自動解碼器(Dana H.
  • CNV解讀-CNV基本概念
    本期是CNV解讀專欄第1篇文章。主要分享CNV的基本概念,CNV分類,致病類型,變異產生機制和常用檢測平臺等。
  • 深度學習新星:GAN的基本原理、應用和走向 | 雷鋒網公開課
    傳統概率生成模型一般都需要進行馬可夫鏈式的採樣和推斷,而GAN避免了這個計算複雜度特別高的過程,直接進行採樣和推斷,從而提高了GAN的應用效率,所以其實際應用場景也就更為廣泛。其次GAN是一個非常靈活的設計框架,各種類型的損失函數都可以整合到GAN模型當中,這樣使得針對不同的任務,我們可以設計不同類型的損失函數,都會在GAN的框架下進行學習和優化。
  • 從基礎知識到實際應用,一文了解「機器學習非凸優化技術」
    選自arXiv機器之心編譯優化技術在科技領域應用廣泛,小到航班表,大到醫療、物理、人工智慧的發展,皆可看到其身影,機器學習當然也不例外,且在實踐中經歷了一個從凸優化到非凸優化的轉變,這是因為後者能更好地捕捉問題結構。本文梳理了這種轉變的過程和歷史,以及從機器學習和信號處理應用中習得的經驗。
  • 2014應用統計學專業解讀及開設課程
    專業解讀及開設課程 應用統計學專業應用的範圍十分廣泛,但是就現今情況看來,尖端人才還是比較缺乏的,因此建議大家一定要把握好機會。 專業培養要求 本專業學生主要學習統計學的基本理論和方法,打好數學基礎,具有較好的科學素養,受到理論研究、應用技能和使用計算機的基本訓練,具有數據處理和統計分析的基本能力。
  • 化學:系統理解基本原理 準確把握化學本質
    解答嘉賓:貴陽六中馬靜仁特級教師試卷特點:基礎知識靈活呈現2017年的化學試題,從內容來看涵蓋了高考所必須的知識點,從難度來看,試題側重對學生基礎知識學習情況的準確考查,體現了基本能力的學習要求。事實上,這樣的例子不勝枚舉,恰恰很多自然科學的原理和結論,都是在一定前提下提出的。2.以圖形結合、數形結合進行信息溝通能力差。如同斑馬線代表的含義一樣,無論圖與形,數與形結合,都包含著科學內涵、知識應用、推理判斷。它們是另一種信息表達方式。只是我們需要用科學思想整合專業知識方能解讀而已。3.對試題設問意圖理解不準。
  • 動力電池原理概念
    小編將通過最淺顯易懂的方式解讀動力電池的相關概念、結構及工作原理,讓大家對動力電池有更深入的理解。本文引用地址:http://www.eepw.com.cn/article/201807/384504.htm一、若干重要概念
  • 「數字世界」基本的工作原理
    首先回顧並評述了數據孿生概念的起源,其次回顧並評述了各大工業軟體巨頭是如何定義和使用數字孿生的,之後從「數字世界」基本的工作原理角度重新審視了數字孿生,在前述工作的基礎上給出了個人關於數字孿生的觀點,並對想進入該領域的後來者給出了本人的忠告。本系列文章的寫作,得到了e-works數位化企業網總編黃培博士的鼓勵,並給出了寶貴的意見,在此表示衷心的感謝!。
  • 小波變換原理與應用_小波變換的基本原理_小波變換的應用
    打開APP 小波變換原理與應用_小波變換的基本原理_小波變換的應用 發表於 2018-01-13 09:42:37   它的主要特點是通過變換能夠充分突出問題某些方面的特徵,能對時間(空間)頻率的局部化分析,通過伸縮平移運算對信號(函數)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻信號分析的要求,從而可聚焦到信號的任意細節,解決了Fourier變換的困難問題,成為繼Fourier變換以來在科學方法上的重大突破。
  • 馬克思主義基本原理與中國具體實際相結合的典範
    《講話》是我們党進入新世紀的綱領性文獻,是馬克思主義基本原理與中國具體實際相結合的典範。貫穿其中的一根紅線,就是必須始終堅持馬克思主義基本原理與中國具體實際相結合,堅持科學理論的指導,堅定不移地走自己的路。只有抓住這根紅線,才能準確理解《講話》的豐富內容。  江澤民同志在中國共產黨成立八十周年大會上的重要講話,不僅是我們党進入新世紀的光輝的綱領性文獻,也是對馬克思主義思想寶庫的新貢獻。
  • CMOS圖像傳感器基本原理與應用簡介
    60年代末期,美國貝爾實臉室發現電荷通過半導體勢阱發生轉移的現象,提出了固態成像這一新概念和一維CCD(Charge-Coupled Device 電荷耦合器件)模型器件。到90年代初,CCD技術已比較成熱,得到非常廣泛的應用。但是隨著CCD應用範圍的擴大,其缺點逐漸暴露出來。首先,CCD技術晶片技術工藝複雜,不能與標準工藝兼容。
  • 【智享丨薦書】氧化石墨烯基本原理與應用
    內容簡介《氧化石墨烯基本原理與應用》系統地介紹了氧化石墨烯自19世紀起的歷史發展沿革,不僅涵蓋了氧化石墨烯合成過程機理、結構模型、成分組成、化學性質、能譜表徵結果以及功能化修飾等相關內容,同時也介紹了氧化石墨烯在電子傳感器件、能源收集存儲、薄膜宏觀體、複合材料、生物醫學、化學催化以及工業化生產方面應用的新研究進展。
  • 中國電力體制改革的基本概念
    中國電力體制改革的基本概念 作者:廖高威 發布時間:2016-11-08   來源:本站編輯
  • 一文了解物聯網:定義、概念到應用
    從物聯網的定義到所應用的技術再到所應用的領域,下面來了解一下。一、什麼是物聯網物聯網是新一代信息技術的重要組成部分。其英文名稱是「The Internet of things」。由此,顧名思義,「物聯網就是物物相連的網際網路」。
  • 生成式對抗網絡GAN的高級議題
    風格遷移和操縱風格遷移涉及將一個圖像的"樣式"遷移到另一個圖像上。這與神經風格遷移非常相似。使用GAN進行樣式傳輸的示例這對於背景場景非常有效,並且類似於圖像過濾,除了我們可以操縱實際圖像的各個方面(比較上面圖像中的雲以用於輸入和輸出)。GAN如何在動物或水果等其他物體上表現?看起來相當不錯!
  • 電磁手性:從基本原理到手性光學
    近日,韓國浦項科技大學的Junsuk Rho()教授及其合作者以「Electromagnetic chirality: from fundamentals to nontraditional chiroptical phenomena」為題對光的手性、納米結構和納米系統中的手性及其手性光學相互作用的理論研究進行了全面的概述,並深入討論了基於這些基本原理觀察到的手性光學現象
  • 中考化學基本概念與原理複習:物質的組成與結構
    中考化學基本概念與原理複習:物質的組成與結構 主要考點: 1. 常識:核外電子排布,原子結構示意圖,原子團的概念 ① 核外電子的分層排布,能量低的靠近原子核;第一層(K層)最多排2個電子,第二層(L層)最多排8個電子,最外層最多排8個電子;先排滿內層,在排外層; 原子團在化學變化中,有可能改變 ② 硝酸根離子NO3-;氯酸根離子ClO3-;氫氧根離子OH-;碳酸氫根離子HCO3-;碳酸根離子CO32-;硫酸根離子SO42
  • 高考專業解讀23:物理學、應用物理學、核物理、聲學(T)
    文|劉鵬飛高考志願填報,最難的不是上哪所學校,而是學什麼專業,因為不了解專業,所以胡亂填報,導致最終出現一些不好的結局。為了解決這一問題,本欄目將以連載的方式,對大學專業大類逐一解讀,幫您做好升學規劃,歡迎關注!