導航:首頁 > 網路問題 > 生成對抗網路用什麼生成

生成對抗網路用什麼生成

發布時間:2022-11-20 14:12:36

1. 生成式對抗網路GAN(一)

上面這張圖很好的很好的闡述了生成式對抗網路的結構~~ 博弈論

此圖給出了生成性對抗網路的概述。目前最重要的是要理解GAN是使兩個網路協同工作的一種方式 - 而Generator和Discriminator都有自己的架構。為了更好地理解這個想法的來源,我們需要回憶一些基本的代數並問自己 - 我們怎麼能欺騙一個比大多數人更好地分類圖像的神經網路?

在我們詳細描述GAN之前,讓我們看一下類似的主題。給定一個訓練有素的分類器,我們可以生成一個欺騙網路的樣本嗎?如果我們這樣做,它會是什麼樣子?

事實證明,我們可以。

甚至更多 - 對於幾乎任何給定的圖像分類器,可以將圖像變換為另一個圖像,這將被高度置信地錯誤分類,同時在視覺上與原始圖像無法區分!這種過程稱為對抗性攻擊,生成方法的簡單性解釋了很多關於GAN的內容。
精心計算的示例中的對抗性示例,其目的是錯誤分類。以下是此過程的說明。左邊的熊貓與右邊的熊貓無法區分 - 但它被歸類為長臂猿。

圖像分類器本質上是高維空間中的復雜決策邊界。當然,在對圖像進行分類時,我們無法繪制這個邊界。但我們可以安全地假設,當訓練結束時,網路並不是針對所有圖像進行推廣的 - 僅針對我們在訓練集中的那些圖像。這種概括可能不是現實生活的良好近似。換句話說,它適用於我們的數據 - 我們將利用它。

讓我們開始為圖像添加隨機雜訊並使其非常接近零。我們可以通過控制雜訊的L2范數來實現這一點。數學符號不應該讓您擔心 - 出於所有實際目的,您可以將L2范數視為向量的長度。這里的訣竅是你在圖像中擁有的像素越多 - 它的平均L2范數就越大。因此,如果雜訊的范數足夠低,您可以預期它在視覺上難以察覺,而損壞的圖像將遠離矢量空間中的原始圖像。

為什麼?

好吧,如果HxW圖像是矢量,那麼我們添加到它的HxW雜訊也是矢量。原始圖像具有相當密集的各種顏色 - 這增加了L2規范。另一方面,雜訊是一組視覺上混亂的相當蒼白的像素 - 一個小范數的矢量。最後,我們將它們添加到一起,為損壞的圖像獲取新的矢量,這與原始圖像相對接近 - 但卻錯誤分類!

現在,如果原始類 Dog 的決策邊界不是那麼遠(就L2范數而言),這種加性雜訊將新圖像置於決策邊界之外。

您不需要成為世界級拓撲學家來理解某些類別的流形或決策邊界。由於每個圖像只是高維空間中的矢量,因此在其上訓練的分類器將「所有猴子」定義為「由隱藏參數描述的該高維斑點中的所有圖像矢量」。我們將該blob稱為該類的決策邊界。

好的,所以,你說我們可以通過添加隨機雜訊輕松欺騙網路。它與生成新圖像有什麼關系?

現在我們假設有兩個結構模型,相當於兩個神經網路:

這是關於判別網路D和生成網路G的價值函數(Value Function),訓練網路D使得最大概率地分對訓練樣本的標簽(最大化log D(x)),訓練網路G最小化log(1 – D(G(z))),即最大化D的損失。訓練過程中固定一方,更新另一個網路的參數,交替迭代,使得對方的錯誤最大化,最終,G 能估測出樣本數據的分布。生成模型G隱式地定義了一個概率分布Pg,我們希望Pg 收斂到數據真實分布Pdata。論文證明了這個極小化極大博弈當且僅當Pg = Pdata時存在最優解,即達到納什均衡,此時生成模型G恢復了訓練數據的分布,判別模型D的准確率等於50%。

接著上面最後一個問題:怎麼才能生成我指定的圖像呢?

指定標簽去訓練

顧名思義就是把標簽也帶進公式,得到有條件的公式:

具體怎麼讓CGAN更好的優化,這里不解釋,就是平常的優化網路了。

參考文章:

本文大部分翻譯此外文

通俗易懂

小博客的總結

唐宇迪大神

2. LSGAN:最小二乘生成對抗網路

解決問題: 解決傳統 GAN 生成圖片質量不高,訓練不穩定的問題。

做法: 將傳統 GAN 的 交叉熵損失函數 換成 最小二乘損失函數

本篇主要通過GAN對比來學習LSGAN

通過例子介紹:

使用 位於決策邊界正確側 但仍然 遠離真實數據的假樣本 更新生成器時,交叉熵損失函數將導致梯度消失的問題。
如圖 (b)所示,當我們使用 假樣本 (品紅色)通過使鑒別器相信它們來自真實數據來更新生成器時,它 幾乎不會引起錯誤 ,因為它們在正確的一側,既決策邊界的真實數據面。
然而,這些樣本 仍然離真實數據很遠 ,我們想把它們拉得接近真實數據。

問題總結:在交叉熵損失函數情況下,判別器判定真實面的假數據距離真實數據較遠,效果不足。

基於這一觀察,我們提出了最小二乘生成對抗網路,它採用 最小二乘損失函數作為鑒別器
最小二乘損失函數能夠 將偽樣本移向決策邊界
因為最小二乘損失函數會 懲罰位於決策邊界正確一側很遠的樣本
如圖 (c)所示,最小二乘損失函數將懲罰假樣本(品紅色),並 將它們拉向決策邊界 ,使它們被正確分類。

基於這一特性,最小二乘能夠生成更接近真實數據的樣本

總結概括
最小二乘: 最小二乘損失與交叉熵損失相比,優勢在於生成樣本在欺騙判別器的前提下同時讓生成器把 距離決策邊界比較遠 的生成圖片拉向 決策邊界 ,這樣保證了生成高質量的樣本。

交叉熵: 以交叉熵作為損失,會使得生成器 不會再優化那些被判別器識別為真實圖片的生成圖片 ,即使這些生成圖片距離判別器的決策邊界仍然很遠,也就是距離真實數據比較遠,因為此時的交叉熵損失已經很小,生成器完成了為它設計的目標。

LSGAN的缺陷: 在於它並 沒有解決當判別器足夠優秀時生成器發生梯度彌散的問題

梯度彌散: 使用反向傳播演算法傳播梯度的時候,隨著傳播深度的增加, 梯度的幅度會急劇減小,會導致淺層神經元的權重更新非常緩慢 ,不能有效學習。
這樣一來,深層模型也就變成了前幾層相對固定,只能改變最後幾層的淺層模型。

GANs 的損失函數:

LSGANs的損失函數:
最小二乘

公式注釋:
鑒別器 D
生成器 G
G 的目標是學習數據 x 上的分布 pg。
G 服從均勻或高斯分布 pz(z)對輸入變數 z 進行采樣開始,然後將輸入變數 z 映射到數據空間 G(z; θg)。
D 是分類器 D(x; θd),其目的是識別圖像是來自訓練數據還是來自g。
z 為噪音,它可以服從歸一化或者高斯分布,為真實數據 x 服從的概率分布,為 z 服從的概率分布。為期望值,同為期望值。

假設我們對鑒別器使用 a-b 編碼方案 ,其中a 和b 分別是假數據和真實數據的標簽。

c 表示 G 預測的D 相信的假數據的值。

最小二乘法的具體優點:
1.決策邊界固定(鑒別器參數固定),生成樣本靠近決策邊界,更接近真實數據。
2.懲罰遠離決策邊界的樣本時,可以在更新生成器時生成更多的梯度,這反過來緩解了梯度消失的問題(梯度消失:前面隱藏層的學習速率低於後面隱藏層的學習速率,即隨著隱藏層數目的增加,分類准確率反而下降)

GAN中:最小化等式 1 產生最小化詹森-香農散度:

LSGAN:探討LSGAN與f散度的關系

公式解釋:(下文關於a-b編碼證明a,b,c條件)

加入到

並不會改變最佳值,因為並沒有引入含有G的參數

從而我們可以推出G固定情況下的最佳鑒別器:

使用 pd 來表示 pdata,來重新表示4式

此處不詳細證明
化簡為:

如果: b-c = 1, b-a = 2,則

是皮爾遜散度,總之可證,當 a,b,c滿足b-c = 1 和 b-a = 2的條件,則最小化等式 4 會使 pd + pg 和 2pg 之間的皮爾遜 χ2 散度最小化。

採用 a-b編碼方案:

由上述證明可設a = 1, b = 1, c = 0

採用 0-1二進制編碼方案

兩式接近,但此處,論文作者採用a-b編碼方式,來實現實驗:

帶上其中一個實驗:

參考論文:Mao X D, Li Q, Xie H R, et al. Least squares generative
adversarial networks[C]//Proceedings of the 2017 IEEE
International Conference on Computer Vision, Venice, Oct
22- 29, 2017. Washington: IEEE Computer Society, 2017:
2813-2821.

3. CycleGAN原理及實驗(TensorFlow)

生成對抗網路(GAN)是一個十分有效的深度學習模型,由此衍生了CycleGAN。

先簡單介紹一下GAN。

網路中有生成器G(generator)和鑒別器(Discriminator)。
有兩個數據域分別為X,Y。G 負責把X域中的數據拿過來拚命地模仿成真實數據並把它們藏在真實數據中,而 D 就拚命地要把偽造數據和真實數據分開。經過二者的博弈以後,G 的偽造技術越來越厲害,D 的鑒別技術也越來越厲害。直到 D 再也分不出數據是真實的還是 G 生成的數據的時候,這個對抗的過程達到一個動態的平衡。

傳統的GAN是單向的:

訓練這個單向GAN需要兩個loss:生成器的重建Loss和判別器的判別Loss。
1. 重建Loss :希望生成的圖片Gba(Gab(a))與原圖a盡可能的相似。

CycleGAN本質上是兩個鏡像對稱的GAN,構成了一個環形網路。
兩個GAN共享兩個生成器,並各自帶一個判別器,即共有兩個判別器和兩個生成器。一個單向GAN兩個loss,兩個即共四個loss。

論文里最終使用均方誤差損失表示:

CycleGAN的網路架構如圖所示:

可以實現無配對的兩個圖片集的訓練是CycleGAN與Pixel2Pixel相比的一個典型優點。但是我們仍然需要通過訓練創建這個映射來確保輸入圖像和生成圖像間存在有意義的關聯,即輸入輸出共享一些特徵。

簡而言之,該模型通過從域DA獲取輸入圖像,該輸入圖像被傳遞到第一個生成器GeneratorA→B,其任務是將來自域DA的給定圖像轉換到目標域DB中的圖像。然後這個新生成的圖像被傳遞到另一個生成器GeneratorB→A,其任務是在原始域DA轉換回圖像CyclicA,這里可與自動編碼器作對比。這個輸出圖像必須與原始輸入圖像相似,用來定義非配對數據集中原來不存在的有意義映射。

鑒別器將一張圖像作為輸入,並嘗試預測其為原始圖像或是生成器的輸出圖像。

鑒別器本身屬於卷積網路,需要從圖像中提取特徵,再通過添加產生一維輸出的卷積層來確定提取的特徵是否屬於特定類別。

分別有大約2萬張男人與女人的臉作為輸入的訓練集。

項目中提供了build_data.py腳本,修改訓練集的路徑,運行即可。

將data/test.jpg替換為對應的輸入圖片地址

訓練時踩了比較多坑。由於急於看結果用了比較高的學習率。大概迭代五萬次的時候可以有一點能看的結果,10萬次時多數還可以接受。但是仍然有許多問題,比如戴眼鏡,臉上亮度不均勻,角度奇異等都可能引起生成的圖像中雜訊較大的問題。
轉換的特徵通常為面部五官特徵以及膚色亮度等,不包括發型,因此男女轉化之後顯得比較詭異。。
比如

未完待續。。

4. GAN生成對抗網路(一)

GAN(Generative Adversarial Networks)是兩個網路的的組合, 一個網路生成模擬數據, 另一個網路判斷生成的數據是真實的還是模擬的。生成模擬數據的網路要不斷優化自己讓判別的網路判斷不出來, 判別的網路也要優化自己讓自己判斷得更准確。 二者關系形成對抗博弈,因此叫 對抗神經網路 (生成對抗網路)。實驗證明, 利用這種網路間的對抗關系所形成的網路, 在無監督及半監督領域取得了很好的效果, 可以算是用網路來監督網路的一個自學習過程。在GAN發明之前,變分自編碼器被認為是理論完美、實現簡單,使用神經網路訓練起來很穩定, 生成的圖片逼近度也較高, 但是人類還是可以很輕易地分辨出真實圖片與機器生成的圖片。

生成對抗網路包含了 2 個子網路: 生成網路(Generator, G)和判別網路(Discriminator,D), 其中生成網路負責學習樣本的真實分布,判別網路負責將生成網路采樣的樣本與真實樣本區分開來。

生成網路 G(𝐳) 生成網路 G 和自編碼器的 Decoder 功能類似, 從先驗分布 中采樣隱藏變數 ,通過生成網路 G 參數化的 分布, 獲得生成樣本 ,如下圖所示。 其中隱藏變數𝒛的先驗分布 可以假設屬於某中已知的分布,比如多元均勻分布 。

可以用深度神經網路來參數化, 如下圖所示, 從均勻分布 中采樣出隱藏變數𝒛, 經過多層轉置卷積層網路參數化的 分布中采樣出樣本 。

判別網路 D(𝒙) 判別網路和普通的二分類網路功能類似,它接受輸入樣本𝒙,包含了采樣自真實數據分布 的樣本 ,也包含了采樣自生成網路的假樣本 , 和 共同組成了判別網路的訓練數據集。判別網路輸出為𝒙屬於真實樣本的概率 ,我們把所有真實樣本 的標簽標注為1,所有生成網路產生的樣本 標注為0, 通過最小化判別網路預測值與標簽之間的誤差來優化判別網路參數。

我們的目標很明確, 既要不斷提升判斷器辨別真假圖像樣本的能力, 又要不斷提升生成器生成更加逼真的圖像,使判別器越來越難判別。
對於判別網路 D ,它的目標是能夠很好地分辨出真樣本 與假樣本 。即最小化圖片的預測值和真實值之間的交叉熵損失函數:

其中 代表真實樣本 在判別網路 的輸出, 為判別網路的參數集, 為生成樣本 在判別網路的輸出, 為 的標簽,由於真實樣本標注為真,故 , 為生成樣本的 的標簽,由於生成樣本標注為假,故 。 根據二分類問題的交叉熵損失函數定義:

因此判別網路的優化目標是:

去掉 中的負號,把 問題轉換為 問題,並寫為期望形式:

對於生成網路G(𝒛) ,我們希望 能夠很好地騙過判別網路 , 假樣本 在判別網路的輸出越接近真實的標簽越好。也就是說,在訓練生成網路時, 希望判別網路的輸出 越逼近 1 越好,此時的交叉熵損失函數:

把 問題轉換為 問題,並寫為期望形式:

再等價轉化為:

GAN的優化過程不像通常的求損失函數的最小值, 而是保持生成與判別兩股力量的動態平衡。 因此, 其訓練過程要比一般神經網路難很多。

把判別網路的目標和生成網路的目標合並,寫成min-max形式:

原GAN論文中:

這里為了好理解,把各個符號梳理的更清晰了,注意符號和網路參數的對應。
理想情況下 , 會有更精確的鑒別真偽數據的能力,經過大量次數的迭代訓練會使 盡可能模擬出以假亂真的樣本, 最終整個GAN會達到所謂的納什均衡, 即 對於生成樣本和真實樣本鑒別結果為正確率和錯誤率各佔50%。下面具體從理論層面來推導。

現在從理論層面進行分析, 通過博弈學習的訓練方式,生成器 G 和判別器 D 分別會達到什麼狀態。 具體地,來看以下 2 個問題:

首先我們通過 一維正態分布的例子給出一個直觀的解釋,如下圖所示,黑色虛線曲線代表了真實數據的分布 , 為某正態分布 , 綠色實線代表了生成網路學習到的分布 , 藍色虛線代表了判別器的決策邊界曲線, 圖中(a)(b)(c)(d)分別代表了生成網路的學習軌跡。在初始狀態,如圖 (a)所示, 分布與 差異較大,判別器可以很輕松地學習到決策邊界,即圖(a)中的藍色虛線,將來自 的采樣點判定為 0, 中的采樣點判定為 1。 隨著生成網路的分布 越來越逼近真實分布 ,判別器越來越困難將真假樣本區分開,如圖 (b)(c)所示。 最後,生成網路性能達到最佳,學習到的分布 ,此時從生成網路中采樣的樣本非常逼真, 判別器無法區分,即判定為真假樣本的概率均等,如圖(d)所示。

固定生成器G的參數 ,判別器D最佳能達到的狀態:

證明: 對於給定的生成器G,要讓判別器D達到最優,我們的目標是最大化損失函數,其積分形式為:

對於給定的 ,真實分布始終是固定的,所以 和 都是定值,於是對於判別器D,要找出

的最大值,其中 是判別器網路參數,對於函數 ,不難得到 在 處取得極大值且是最大值。因此可得 的極值點也為

故判別器 能達到的最佳狀態為定理中給出的式子。

現在考慮第二個問題。
JS 散度(Jensen–Shannon divergence)

對於KL散度, ,是不對稱的。但JS散度是對稱的。

當 達到 時,考慮此時 和 的 散度:

考慮到判別網路到達 時,此時的損失函數為:

於是我們可以得到:

對於生成網路 而言,目標是最小化損失函數,由於 ,因此 取得最小值僅在 時(此時 ), 取得最小值:

此時生成網路達到 狀態是:

即 的學到的分布 與真實分布 一致,網路達到納什均衡點,此時:

即對於生成器生成的圖像有0.5的概率被判定為真,也有0.5的概率被判定為假。

5. BEGAN邊界平衡生成對抗網路

解決問題: GAN訓練模型較為困難

做法: BEGAN並沒有直接去估計生成分布 pg 和真實分布 px 的距離,而是估計兩者分布誤差的距離。

分布之間的誤差分布相近的話,也可以認為 pg 和 px 是相近的。

BEGAN 將判別器 G 設計成自編碼器用來重構分布誤差,並優化分
布誤差之間的距離,如下式:

BEGAN 提出一種均衡概念,用以平衡 G 和 D 的訓練,使 GAN 即使使用很簡單的網路,不加如 BN、minibath 等訓練技巧也能得到很好的訓練效果。
同時還提出了一種能夠在樣本多樣性和樣本質量上均衡的超參數以及衡量模型收斂性的方法。
實驗中發現 BEGAN 收斂很快,並且 G 和 D 訓練平衡,但超參數的選取比較考驗經驗。

1.使得GAN具有快速而穩定的收斂的標准訓練過程。
2.引入均衡概念,均衡鑒別器和發生器的功率。
3.提供控制圖像多樣性和視覺質量之間權衡的新方法
4.收斂的近似度量

使用自動編碼器作為鑒別器,使用從瓦瑟斯坦距離(類似於我先前提到的KL散度,具有正定性,對稱性,三角不等式特性)導出的損失來匹配自動編碼器損失分布。

L:R^Nx->R+訓練像素式自動編碼器的 1.損失函數:
BEGAN中提出了一種思路,它使用了自動編碼器做為判別器 D,它所做的是盡可能地匹配誤差的分布而不是直接匹配樣本的分布,如果誤差的分布之間足夠的接近,那麼真實的樣本之間的分布也會足夠的接近。

D:自動編碼器功能
n:是目標標准
v:是Nx維度的樣例

u1,2是自動編碼器損失函數的兩個分布
Γ(u1,u2)是1和2的所有組合的集合
m1,2∈R是他們各自的平均值
瓦瑟斯坦距離為:

其中x1和x2是從

利用詹森不等式,可以導出W1(u1,u2)的下界:

目標是優化自動編碼器損失分布之間的瓦瑟斯坦距離的下限,而不是樣本分布之間的下限。

設計鑒頻器,使自動編碼器損耗之間的等式1最大化。
設u1為損失L(x)的分布,其中x為實樣本。
設u2為損失L(G(z))的分布
其中G : RNz →RNx為生成函數
z∈[-1,1]Nz為維數Nz的均勻隨機樣本

由於m1,m2 ∈R+到達最大化| m1-m2 |只有兩種可能的解決方案:

選擇解決方案(b)作為我們的目標,因為最小化m1自然會導致對真實圖像的自動編碼。
給定鑒別器和發生器參數θD和θG
每個參數都通過最小化損耗LD和LG來更新
將問題表示為GAN目標,其中zD和zG是z的樣本:

在BEGAN中G和D對應的損失函數:

2.引入平衡:

當產生器和鑒別器損失之間保持平衡,滿足情況:

生成的樣本不能被鑒別器從真實樣本中區分出來,那麼它們的 誤差分布包括預期誤差應該是相同的 ,使得其均衡。

γ引入來平衡D既可以對真實圖像自動編碼,又可以正確的判別輸入的樣本。γ很小時,說明分母部分值很大,那麼此時模型專注於識別的正確率,則出現G只生成可以騙過D的圖像

鑒別器有兩個相互競爭的目標:
1.自動編碼真實圖像和從生成的圖像中鑒別真實圖像。
2.γ項讓我們平衡這兩個目標。
較低的γ值導致較低的圖像多樣性 ,因為鑒別器更側重於自動編碼真實圖像。
將γ稱為分集比。有一個自然的邊界,圖像清晰,有細節。

對於θD和θG和每一訓練步t,來說的目標
γ∈[0,1]是一個超參數,值越小代表生成的樣本多樣性越低
λk是 kt + 1 的更新步長,kt表示對D判別能力的重視度

採用比例控制理論來維持平衡

這是使用一個變數kt ∈[0,1]來實現的,以控制在梯度下降過程中對L(G(zD))的重視程度。
我們初始化k0 = 0.λk是k的比例增益;
在機器學習術語中,它是k的學習率。
我們在實驗中使用了0.001。
本質上,這可以被認為是閉環反饋控制的一種形式,其中kt在每一步被調整以保持等式4。
在早期訓練階段,G傾向於為自動編碼器生成易於重建的數據,因為生成的數據接近於0,並且還沒有準確地了解真實的數據分布。
這時L(X)>L(G(z))
與需要交替訓練 D 和 G 或預訓練 D 的傳統訓練相比,BEGAN提出的方法開始不需要穩定訓練。
Adam在訓練中使用默認的超參數
θD 和 θG 基於各自的損失通過獨立的Adam優化器獨立更新。
我們通常使用 n = 16 的批量。
3.全局收斂度量:

確定 GANs 的收斂性通常是一項困難的任務,因為最初的公式被定義為零和博弈。
結果,一個虧損上升,另一個虧損下降。

我們通過使用 平衡概念 導出了 收斂的全局度量 :我們可以將收斂過程框架為找到比例控制演算法(控制裝置輸出信號與輸人信號間呈線性關系的控製作用數學表示法)|γL(x)-L(G(Zg))|的 瞬時過程誤差絕對值最小的最近重構L(x) 。這一衡量標准由兩項和:

該度量可用於確定網路何時達到其 最終狀態 模型是否已崩潰 也即是模型是否收斂。

4.模型架構
鑒別器: R Nx->R Nx是一個卷積深度神經網路,其架構為自動編碼器。
Nx = H × W × C 是x 尺寸的簡寫
其中 H、 W、 C 是高度、寬度和顏色。

我們使用自動編碼器和深度編碼器和解碼器。目的是盡可能簡單,以避免典型的GAN詭計。
結構如圖 1 所示。我們使用了 3 × 3 的卷積,在它們的輸出端應用了指數線性單位。
每層重復多次(通常為 2 次)。我們觀察到,重復次數越多,視覺效果越好。
卷積濾波器隨著每次下采樣線性增加。
下采樣作為步長為 2 的子采樣實現,上采樣由最近鄰完成。
在編碼器和解碼器之間的邊界處,經過處理的數據的張量通過完全連接的層被映射到嵌入狀態 h ∈RNh 和從嵌入狀態 h∈ RNh 來,其中 Nh 是自動編碼器的隱藏狀態的維度,而沒有任何非線性。

生成器 G : RNz → RNx 使用與鑒別器解碼器相同的架構(雖然權重不同)。
但為了簡化。輸入狀態為均勻采樣的 z∈ [-1, 1]Nz。
這個簡單的架構實現了高質量的結果,並展示了技術的健壯性。
此外,可選的細化有助於梯度傳播,並產生更清晰的圖像。受深度殘差網路[8]的啟發,使用消失殘差初始化網路:對於連續的相同大小的層,層的輸入與其輸出相結合:inx+1 =carry×inx+(1 carry)×outx。
在實驗中,我們從進位= 1 開始,經過 16000 步
逐漸減少到 0。
我們還引入了跳躍連接[8, 17, 9]來幫助梯度傳播。第一解碼器張量 h0 是通過將 h 投影到 8 × 8 × n 張量而獲得的。在每個上采樣步驟之後,輸出與上采樣到相同維數的 h0 連接。
這在隱藏狀態和解碼器的每個連續上采樣層之間創建了跳躍連接。
我們沒有探索 GANs 中通常使用的其他技術,如批量歸一化、缺失、轉置卷積或卷積濾波器的指數增長,盡管它們可能會進一步改進這些結果

5.通過實驗來理解

變 γ 的值時,模型生成結果的多樣性和質量對比效果如下所示,從中可以看出
γ值越小,生成的圖像越清晰,也更接近;
γ值越大,多樣性提高了,但是圖像的質量同樣也下降了

BEGAN的空間連續性與其他GAN相比表現更優異:

伴隨著模型收斂,圖像質量也在不斷提升

總之:BEGAN針對 GAN 訓練難易度難、控制生成樣本多樣性難、平衡鑒別器和生成器收斂難等問題,做出了很大的改善。

參考論文:Berthelot D, Schumm T, Metz L. BEGAN: boundary equilibrium generative adversarial networks[J]. arXiv:1703.10717,
2017

6. 如何完善生成對抗網路

1.GAN最開始是設計用於生成連續數據,但是自然語言處理中我們要用來生成離散tokens的序列。因為生成器(Generator,簡稱G)需要利用從判別器(Discriminator,簡稱D)得到的梯度進行訓練,而G和D都需要完全可微,碰到有離散變數的時候就會有問題,只用BP不能為G提供訓練的梯度。在GAN中我們通過對G的參數進行微小的改變,令其生成的數據更加「逼真」。若生成的數據是基於離散的tokens,D給出的信息很多時候都沒有意義,因為和圖像不同。圖像是連續的,微小的改變可以在像素點上面反應出來,但是你對tokens做微小的改變,在對應的dictionaryspace裡面可能根本就沒有相應的tokens.2.GAN只可以對已經生成的完整序列進行打分,而對一部分生成的序列,如何判斷它現在生成的一部分的質量和之後生成整個序列的質量也是一個問題。

7. GAN的基本介紹和變種

GAN,全稱為Generative Adversarial Nets,直譯為「生成式對抗網路」。GAN作為生成模型的代表,自2014年被Ian Goodfellow提出後引起了業界的廣泛關注並不斷涌現出新的改進模型,深度學習泰斗之一的Yann LeCun高度評價GAN是機器學習界近十年來最有意思的想法。

GAN始終存在訓練難、穩定性差以及模型崩塌(Model Collapse)等問題。產生這種不匹配的根本原因其實還是對GAN背後產生作用的理論機制沒有探索清楚。

在推動GAN應用方面,2017年有兩項技術是非常值得關注的。其中一個是CycleGAN,其本質是利用對偶學習並結合GAN機制來優化生成圖片的效果的,採取類似思想的包括DualGAN以及DiscoGAN等,包括後續的很多改進模型例如StarGAN等。CycleGAN的重要性主要在於使得GAN系列的模型不再局限於監督學習,它引入了無監督學習的方式,只要准備兩個不同領域的圖片集合即可,不需要訓練模型所需的兩個領域的圖片一一對應,這樣極大擴展了它的使用范圍並降低了應用的普及難度。

另外一項值得關注的技術是英偉達採取「漸進式生成」技術路線的GAN方案,這項方案的引人之處在於使得計算機可以生成1024*1024大小的高清圖片,它是目前無論圖像清晰度還是圖片生成質量都達到最好效果的技術,其生成的明星圖片幾乎可以達到以假亂真的效果(參考圖3)。英偉達這項由粗到細,首先生成圖像的模糊輪廓,再逐步添加細節的思想其實並非特別新穎的思路,在之前的StackGAN等很多方案都採用了類似思想,它的獨特之處在於這種由粗到細的網路結構是動態生成的而非事先固定的靜態網路,更關鍵的是產生的圖片效果特別好

首先,有一個一代的 generator,它能生成一些很差的圖片,然後有一個一代的 discriminator,它能准確的把生成的圖片,和真實的圖片分類,簡而言之,這個 discriminator 就是一個二分類器,對生成的圖片輸出 0,對真實的圖片輸出 1。

接著,開始訓練出二代的 generator,它能生成稍好一點的圖片,能夠讓一代的 discriminator 認為這些生成的圖片是真實的圖片。然後會訓練出一個二代的 discriminator,它能准確的識別出真實的圖片,和二代 generator 生成的圖片。以此類推,會有三代,四代。。。n 代的 generator 和 discriminator,最後 discriminator 無法分辨生成的圖片和真實圖片,這個網路就擬合了。

對抗樣本(adversarial examples)是機器學習模型的輸入,攻擊者故意設計它們以引起模型出錯;它們就像是機器的視覺錯覺。

對抗樣本指的是一個經過微小調整就可以讓機器學習演算法輸出錯誤結果的輸入樣本。在圖像識別中,可以理解為原來被一個卷積神經網路(CNN)分類為一個類(比如「熊貓」)的圖片,經過非常細微甚至人眼無法察覺的改動後,突然被誤分成另一個類(比如「長臂猿」)。

對抗訓練

對抗訓練是防禦對抗樣本攻擊的一種方法。將對抗樣本和正常樣本一起訓練是一種有效的正則化,可以提高模型的准確度,同時也能有效降低對抗樣本的攻擊成功率。不過這種防禦也只是針對同樣用來產生訓練集中的對抗樣本的方法。

確實在下圖中可以看到,訓練集是正常樣本和對抗樣本,測試集是正常樣本的紅線比訓練集和測試集都是正常樣本的錯誤率要降低,說明對抗訓練是有正則化的功能。

Figure 9

在訓練的時候直接生成對抗樣本是比較低效的,之前提到的FGSM是一個高效的對抗訓練方法。只需要改變目標函數就能在訓練每個正常樣本的同時也考慮了對抗樣本。模型訓練去給對抗樣本賦予和正常樣本原分類同樣的類別。

用經過FGSM訓練的網路,可以有效的防禦用FGSM產生的對抗樣本攻擊,但是如果換其他對抗攻擊方法,也會被攻破。

對抗樣本的工作思路,可以有以下兩個方面的意義:

結論

要為集成模型創建對抗樣本,因為梯度方法的問題,難度會加大。但是生成的演算法更為可行有效。

單個模型出現盲點可以由其他模型彌補,採用的會是輸出結果最好的模型數據。

我們發現當我們用動態創建的對抗模型來訓練演算法時,能夠解決這些對抗樣本的問題。這是因為當模型面對這些可能出現問題的對抗低概率區域時,可以產生更高的「免疫力」。這同時也支持了低概率區域的論點,在這些區域的對抗樣本更難處理。

DCGAN是繼GAN之後比較好的改進,其主要的改進主要是在網路結構上,到目前為止,DCGAN的網路結構還是被廣泛的使用,DCGAN極大的提升了GAN訓練的穩定性以及生成結果質量。

論文的主要貢獻是:

◆ 為GAN的訓練提供了一個很好的網路拓撲結構。

◆ 表明生成的特徵具有向量的計算特性。

D(x)表示D網路判斷真實圖片是否真實的概率(因為x是真實的,所以對於D來說,這個值越接近1越好)。而D(G(z))D(G(z))是為了D判斷G生成的圖片是否真實的概率。

G的目的:G應該希望自己生成的圖片「越接近真實越好」。也就是說,G希望D(G(z))D(G(z))盡可能得大,這是V(D,G)V(D,G)會變小。

D的目的:D的能力越強,D(x)D(x)應該越大,D(G(x))D(G(x))應該越小。因此D的目的和G不同,D希望V(D,G)V(D,G)越大越好。

DCGAN對卷積神經網路的結構做了一些改變,以提高樣本的質量和收斂的速度,這些改變有:

取消所有pooling層。G網路中使用轉置卷積(transposed convolutional layer)進行上采樣,D網路中用加入stride的卷積代替pooling。

在D和G中均使用batch normalization

去掉FC層,使網路變為全卷積網路

G網路中使用ReLU作為激活函數,最後一層使用tanh

D網路中使用LeakyReLU作為激活函數

DCGAN中的G網路示意:

DCGAN的生成器網路結構如上圖所示,相較原始的GAN,DCGAN幾乎完全使用了卷積層代替全鏈接層,判別器幾乎是和生成器對稱的,從上圖中我們可以看到,整個網路沒有pooling層和上采樣層的存在,實際上是使用了帶步長(fractional-strided)的卷積代替了上采樣,以增加訓練的穩定性。

DCGAN能改進GAN訓練穩定的原因主要有:

◆ 使用步長卷積代替上采樣層,卷積在提取圖像特徵上具有很好的作用,並且使用卷積代替全連接層。

◆ 生成器G和判別器D中幾乎每一層都使用batchnorm層,將特徵層的輸出歸一化到一起,加速了訓練,提升了訓練的穩定性。(生成器的最後一層和判別器的第一層不加batchnorm)

◆ 在判別器中使用leakrelu激活函數,而不是RELU,防止梯度稀疏,生成器中仍然採用relu,但是輸出層採用tanh

◆ 使用adam優化器訓練,並且學習率最好是0.0002,(我也試過其他學習率,不得不說0.0002是表現最好的了)

BigGAN在訓練中 Batch 採用了很大的 Batch,已經達到了 2048(我們平常訓練 Batch 正常都是 64 居多),在卷積的通道上也是變大了,還有就是網路的參數變多了,在 2048 的 Batch 下整個網路的參數達到了接近 16 億

8. 【模型解讀】歷數GAN的5大基本結構

首發於微信公眾號《有三AI》

【模型解讀】歷數GAN的5大基本結構

生成對抗網路是近幾年來無監督學習領域里最大的進展,被譽為下一代深度學習,不管是研究熱度還是論文數量,已經逼近甚至超越傳統判別式的CNN架構。

這一次我們簡單介紹一下生成對抗網路的主流模型結構,從一個生成器一個判別器到多個生成器多個判別器。

作者 | 言有三

編輯 | 言有三

我們這一期文章不打算從頭開始講述GAN,所以如果大家沒有相關基礎的,就先看一下我們上一期GAN的介紹。

【技術綜述】有三說GANs(上)​

一個基本的用於生成圖像的GAN的結構就是這樣的。

Generator就是生成器,它輸入雜訊,輸出產生的圖像。通常雜訊就是一個一維的向量,經過reshape為二維圖像,然後利用若干個反卷積層來學習上采樣。

如全卷積的DCGAN模型[1],輸入就是1*100的向量,然後經過一個全連接層學習,reshape到4*4*1024的張量,再經過4個上采樣的反卷積網路,生成64*64的圖。

Discrimator就是普通的CNN分類器,輸入真實樣本或者生成的假樣本進行分類,在DCGAN中也是4個卷積層。

採用多個判別器[2]的好處帶來了類似於boosting的優勢,訓練一個過於好的判別器,會損壞生成器的性能,這是GAN面臨的一個大難題。如果能夠訓練多個沒有那麼強的判別器,然後進行boosting,可以取得不錯的效果,甚至連dropout技術都可以應用進來。

多個判別器還可以相互進行分工,比如在圖像分類中,一個進行粗粒度的分類,一個進行細粒度的分類。在語音任務中,各自用於不同聲道的處理。

一般來說,生成器相比判別器要完成的任務更難,因為它要完成數據概率密度的擬合,而判別器只需要進行判別,導致影響GAN性能的一個問題就是模式坍塌,即生成高度相似的樣本。

採用多個生成器單個判別器的方法,可以有效地緩解這個問題。

從上圖結構可以看出,多個生成器採用同樣的結構,在網路的淺層還共享權重。

在利用GAN進行半監督的圖像分類任務時,判別器需要同時擔任兩個角色,即判別生成的假樣本,以及預測類別,這對判別器提出了較高的要求。通過增加一個分類器可以分擔判別器的工作量,即將捕捉樣本和標簽的條件分布這一任務交給生成器和分類器,而判別器只專注於區分真實樣本和生成的樣本。

這一類結構以Triple Generative Adversarial Nets為代表,下圖是它的網路結構。

多個生成器和多個判別器就又有幾種。

5.1 級聯結構[5]

早期以DCGAN為代表的網路生成的圖片解析度太低,質量不夠好,都不超過100×100,在32×32或者64×64左右。這是因為難以一次性學習到生成高解析度的樣本,收斂過程容易不穩定。

類似的問題在圖像分割,目標檢測中都存在。在目標檢測中,級聯網路被廣泛使用,即採用從粗到精的方法依次改進檢測器的性能。在圖像分割中進行上采樣時也採用學習小倍率的放大而不是大倍率的方法,如利用兩個2倍上采樣替換一個4倍的上采樣,不僅可以增強網路的表達能力,還降低了學習難度。

基於此,金字塔GAN結構被提出並廣泛使用,它參考圖像領域裡面的金字塔結構由粗到精一步一步生成圖像,並添加殘差進行學習。

上圖就是它的結構,從低解析度z3開始,逐級提升,最終生成I0,這是一個金字塔形狀的結構,以下符號較多用圖片代替。

5.2 並行與循環結構[6]

GAN有一大應用就是風格化,實現兩個域之間的風格互換,以CycleGAN[6]為典型代表。它包含了多個生成器和多個判別器。Cycle的典型結構如下:

X和Y分別表示兩個域的圖像,可知這里存在兩個生成器G和F,分別用於從X到Y的生成和Y到X到生成,包含兩個判別器,分別是Dx和Dy。而損失本身也增加了一個循環損失,感興趣讀者可以去細讀文章。

另外在cross domain學習中也常用到多判別器多生成器多結構,分別學習不同的域。而且各個域的判別器和生成器通常會共享一些權重,如下圖是CoGAN[7]的網路結構。

另外還有一些零零散散的結構,比如3D GAN,RNN GAN,由於都是上面這幾類的變種,不再統一介紹。

[1] Radford A, Metz L, Chintala S, et al. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. international conference on learning representations, 2016.

[2] Durugkar I P, Gemp I, Mahadevan S, et al. Generative Multi-Adversarial Networks[J]. international conference on learning representations, 2017.

[3] Ghosh A, Kulharia V, Namboodiri V P, et al. Multi-Agent Diverse Generative Adversarial Networks[J]. computer vision and pattern recognition, 2018: 8513-8521.

[4] Chongxuan L I, Xu T, Zhu J, et al. Triple Generative Adversarial Nets[J]. neural information processing systems, 2017: 4088-4098.

[5] Denton E L, Chintala S, Szlam A, et al. Deep generative image models using a Laplacian pyramid of adversarial networks[J]. neural information processing systems, 2015: 1486-1494.

[6] Zhu J, Park T, Isola P, et al. Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks[J]. international conference on computer vision, 2017: 2242-2251.

[7] Liu M, Tuzel O. Coupled Generative Adversarial Networks[J]. neural information processing systems, 2016: 469-477.

本系列的完整目錄:

【模型解讀】從LeNet到VGG,看卷積+池化串聯的網路結構

【模型解讀】network in network中的1*1卷積,你懂了嗎

【模型解讀】GoogLeNet中的inception結構,你看懂了嗎

【模型解讀】說說移動端基準模型MobileNets

【模型解讀】pooling去哪兒了?

【模型解讀】resnet中的殘差連接,你確定真的看懂了?

【模型解讀】「不正經」的卷積神經網路

【模型解讀】「全連接」的卷積網路,有什麼好?

【模型解讀】從「局部連接」回到「全連接」的神經網路

【模型解讀】深度學習網路只能有一個輸入嗎

【模型解讀】從2D卷積到3D卷積,都有什麼不一樣

【模型解讀】淺析RNN到LSTM

9. 什麼是生成對抗網路

生成式對抗網路(GAN, Generative Adversarial Networks )是一種深度學習模型,是近年來復雜分布上無監督學習最具前景的方法之一。模型通過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生相當好的輸出。原始 GAN 理論中,並不要求 G 和 D 都是神經網路,只需要是能擬合相應生成和判別的函數即可。但實用中一般均使用深度神經網路作為 G 和 D 。一個優秀的GAN應用需要有良好的訓練方法,否則可能由於神經網路模型的自由性而導致輸出不理想。

閱讀全文

與生成對抗網路用什麼生成相關的資料

熱點內容
網路共享中心沒有網卡 瀏覽:521
電腦無法檢測到網路代理 瀏覽:1374
筆記本電腦一天會用多少流量 瀏覽:574
蘋果電腦整機轉移新機 瀏覽:1376
突然無法連接工作網路 瀏覽:1057
聯通網路怎麼設置才好 瀏覽:1224
小區網路電腦怎麼連接路由器 瀏覽:1032
p1108列印機網路共享 瀏覽:1212
怎麼調節台式電腦護眼 瀏覽:694
深圳天虹蘋果電腦 瀏覽:931
網路總是異常斷開 瀏覽:612
中級配置台式電腦 瀏覽:989
中國網路安全的戰士 瀏覽:630
同志網站在哪裡 瀏覽:1413
版觀看完整完結免費手機在線 瀏覽:1459
怎樣切換默認數據網路設置 瀏覽:1110
肯德基無線網無法訪問網路 瀏覽:1286
光纖貓怎麼連接不上網路 瀏覽:1472
神武3手游網路連接 瀏覽:965
局網列印機網路共享 瀏覽:1000