瞭解GAN背後的設計,訓練,損失函式和演算法
假設我們有一個臥室影像資料集和一個在這個資料集上訓練的影像分類器CNN,它告訴我們給定的輸入影像是否是臥室。假設影像大小為16 * 16。每個畫素可以有256個可能的值。所以存在無限大量的可能輸入(即25616*16或~10616可能的組合)。這使得我們的分類器模型成為一個高維機率分佈函式,它給出了來自這個大輸入空間的給定輸入作為臥室的機率。
那麼,如果我們可以從臥室影像的資料分佈中學習這種高維知識來進行分類,我們肯定能夠利用相同的知識甚至生成全新的臥室影像。
雖然有多種生成建模方法,但我們將在本文中探討生成對抗網路。GAN的原始論文(arxiv.org/pdf/1406.2661.pdf)發表於2014年,在這篇論文(arxiv.org/pdf/1511.06434.pdf)引入了深度卷積生成對抗網路(deep tional generate adversarial networks, DCGAN),並作為一種流行的參考。這篇文章是基於這兩篇論文的研究,對GAN做了很好的介紹。
GAN是同時訓練生成模型G和判別模型D的網路。生成模型將透過捕獲與訓練資料集相關的資料分佈來生成新的臥室影像。訓練判別模型將給定的輸入影像正確分類為真實(即來自訓練資料集影像)或虛假(即生成模型生成的合成影像)。簡單的說,判別模型是典型的CNN影像分類器模型,或者更具體地說是二元影像分類器。
生成模型與判別模型略有不同。它的目標不是分類而是生成。當判別模型給出一個代表不同的類的啟用向量時給出一個輸入影像,生成模型就會反向執行。
它可以被認為是反向CNN,在某種意義上它將隨機數的向量作為輸入並生成影像作為輸出,而正常的CNN則相反地將影像作為輸入並生成數字向量或啟用(對應於不同的類)作為輸出。
但是這些不同的模型如何協同工作?下圖給出了網路的圖示。首先,我們將隨機噪聲向量作為生成模型的輸入,生成模型生成影像輸出。我們將這些生成的影像稱為偽影像或合成影像。然後判別模型將訓練資料集中的假影像和真影像都作為輸入,並生成一個輸出來分類影像是假影像還是真影像。
使用這兩個模型對該網路的引數進行訓練和最佳化。判別模型的目標是最大限度地正確分類影像的真偽。相反,生成模型的目標是最小化判別器正確地將假影像分類為假的。
反向傳播和普通卷積神經網路(CNN)一樣,是用來訓練網路引數的,但是由於涉及到兩個目標不同的模型,使得反向傳播的應用有所不同。更具體地說,涉及的損失函式和在每個模型上執行的迭代次數是GAN不同的兩個關鍵領域。
判別模型的損失函式將是一個與二元分類器相關的正則交叉熵損失函式。根據輸入影像,損失函式中的一項或另一項將為0,結果將是模型預測影像被正確分類的機率的負對數。換句話說,在我們的上下文中,對於真實影像,“y”將為“1”,對於假影像,“1-y”將為“1”。“p”是影像是真實影像的預測機率,“1-p”是影像是假影像的預測機率。
上面的機率p可以表示為D(x),即判別器D估計的影像“x”是真實影像的機率。重寫,如下圖所示:
根據我們如何分配上下文,方程的第一部分將被啟用,第二部分對於真實影像將為零。反之亦然。第二部分中影像“x”的表示可以用“G(z)”代替。也就是說,在給定輸入z的情況下,將假影像表示為模型G的輸出。“z”只不過是建模“G”產生“G(z)”的隨機噪聲輸入向量。這些符號在初看時令人困惑,但論文中的演算法透過“ascending”其隨機梯度來更新判別器,這與上文所述的最小化損失函式相同。下面是論文中函式的快照:
回到生成函式G,G的損失函式將反過來,即最大化D的損失函式。但是等式的第一部分對生成器沒有任何意義,所以我們真正說的是第二部分應該最大化。所以G的損失函式與D的損失函式相同,只是符號顛倒了,第一項被忽略了。
以下是論文中生成器損失函式的快照:
正如DCGAN內容所示,這是透過重塑和轉置卷積的組合來實現的。以下是生成器的表示:
轉置卷積與卷積的逆不同,它不能恢復給定卷積輸出的輸入,只是改變了卷積的形狀。下面的例子說明了上述生成器模型背後的數學原理,特別是卷積層。
在CNN中使用的常規卷積圖示,以及透過轉置卷積實現的上取樣的兩個示例。第一示例的結果用作第二和第三示例中具有相同核心的輸入,以證明轉換與反摺積不相同,並不是為了恢復原始輸入。
論文演算法的內部for迴圈。這意味著,對於k> 1,我們在G的每次迭代中對判別器D執行多次訓練迭代。這是為了確保D'被充分訓練並且比G更早地學習。我們需要一個好的D來欺騙G。
另一個相關的重點是生成器可能記憶輸入示例的問題,DCGAN透過使用3072-128-3072、降噪、dropout、正則化、RELU和自動編碼器來解決,基本上是減少和重構機制,以最小化記憶。
DCGAN中還重點介紹了生成器在操作時如何忘記它正在生成的臥室影像中的某些物件。他們透過從第二層卷積層特徵集中刪除對應視窗的特徵對映來實現這一點,並展示了網路是如何用其他物件替換視窗空間的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2565050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SSD的損失函式設計函式
- 換個角度看GAN:另一種損失函式函式
- 例項解釋NLLLoss損失函式與CrossEntropyLoss損失函式的關係函式ROS
- 詳解常見的損失函式函式
- 損失函式函式
- 機器學習實踐:TensorFlow最後一個epoch訓練損失函式顯著增大機器學習函式
- 3D高斯損失函式(1)單純損失函式3D函式
- DDMP中的損失函式函式
- Pytorch中的損失函式PyTorch函式
- 「GAN優化」GAN訓練的小技巧優化
- Pytorch 常用損失函式PyTorch函式
- 損失函式綜述函式
- Triplet Loss 損失函式函式
- 瞭解 JavaScript 函數語言程式設計 - 宣告式函式JavaScript函數程式設計函式
- PyTorch:損失函式loss functionPyTorch函式Function
- TensorFlow損失函式專題函式
- 訓練的評估函式函式
- pytorch訓練GAN時的detach()PyTorch
- 無需手工設計,從零開始搜尋損失函式函式
- 自我訓練 – PHP函式PHP函式
- GAN訓練技巧彙總
- 神經網路基礎部件-損失函式詳解神經網路函式
- 3D高斯損失函式(2)新增BA最佳化和結構損失3D函式
- 談談交叉熵損失函式熵函式
- 邏輯迴歸 損失函式邏輯迴歸函式
- 聊聊損失函式1. 噪聲魯棒損失函式簡析 & 程式碼實現函式
- 理論+實踐,帶你瞭解分散式訓練分散式
- 2.3邏輯迴歸損失函式邏輯迴歸函式
- 理解神經網路的不同損失函式神經網路函式
- TensorFlow筆記-06-神經網路優化-損失函式,自定義損失函式,交叉熵筆記神經網路優化函式熵
- 令人拍案叫絕的 Wasserstein GAN,徹底解決GAN訓練不穩定問題
- 瞭解 JavaScript 函數語言程式設計 -- 什麼是純函式JavaScript函數程式設計函式
- 焦點損失函式 Focal Loss 與 GHM函式
- 邏輯迴歸損失函式(cost function)邏輯迴歸函式Function
- 圖示Softmax及交叉熵損失函式熵函式
- 對函式的初步瞭解函式
- Python培訓:Python有哪些函式?你瞭解幾種?Python函式
- 二維陣列和函式綜合程式設計練習陣列函式程式設計