对抗生成网络(GAN)详解
目錄
前言
目標函數
?原理
訓練
給定生成器,訓練判別器
給定判別器,訓練生成器
總結
前言
之前的生成模型側重于將分布函數構造出來,然后使用最大似然函數去更新這個分布函數的參數,從而優化分布函數,但是這種方法計算比較困難,尤其是維度比較高時,所以作者考慮能不能不用構造一個分布出來,而是構造一個模型自己去學習這個分布。這兩種方法有本質的區別,第一種是要完完全全的將分布構造出來,將分布的均值、方差等弄明白,而第二種方法是不需要構造分布,只需要構造模型得到近似的結果就可以。
GAN模型中有兩個分布,一個是生成器,一個是判別器,根據他們的名字就可以看出,生成器是生成和真數據相似的分布來欺騙判別器,二判別器是判斷出假數據從而不讓生成器得逞,原文中作者舉了一個很形象的例子,生成器就如假幣的販子,判別器就如警察,假幣販子制造假幣,警察識別假幣找出假幣販子,是一個對抗的過程。
其實,原始的生成器和判別器很簡單,就是一些全連接網絡組成,可以通過反向傳播進行端到端的訓練,訓練過程相當于一個不斷學習和對抗的過程。
整個過程大概如下圖所示,將隨機噪音輸入到生成器,這里的隨機噪音例如可以服從的是高斯分布,生成器根據輸入的噪聲生成一張假圖像,判別器將真實圖像和生成的假圖像作為輸入進行訓練,這里的判別器其實就是一個二分類模型,輸出為真或假。
目標函數
GAN的目標函數如下所示,很多人都沒有對這個函數進行詳細的說明,在這里呢我詳細的說明一下。
式中,z是隨機噪聲,是隨機噪聲z的分布,是生成器,輸入為z,其中有一個權重參數,是判別器,輸入為圖像x,他的權重參數為,所以對于GAN來說他訓練的是兩個模型,是一個對抗的過程,所以在他的目標函數中有一個求最大max和一個求最小min的過程。
GAN的目標函數包括兩部分,如圖中的紅框和綠框:
?判別器D要最大化,的含義是將真實圖像輸入到判別器D中,判別器認為是真圖的概率,判別器希望真實圖像的概率越大越好,這就對應了式中的maxD,繪制出圖像如下。
?
生成器要最小化函數,的含義是將噪聲z輸入到生成器G中得到一個假圖,然后將輸入到判別器D中,輸出判別器認為假圖是真圖的概率,即。繪制出圖像如下,生成器的目標是讓判別器認為假圖是真圖的概率越大越好,即接近于1,而是一個遞減的過程,即越大越小,所以生成器的目標變成了讓越小越好,這就對應了式中的minG。
?
?原理
?如圖,詳細和展示了GAN整個訓練過程
圖中, Z為噪聲空間,噪聲空間中為均勻分布的隨機數,生成器將噪聲空間的隨機數z映射到圖像空間x,隨機點映射到圖像空間的分布就是綠色曲線所示的高斯分布,而圖像中的黑色曲線為真實圖像的數據分布,藍色曲線為判別器預測x為真實數據的概率,藍色曲線在真實數據的分布出偏高,在生成器生成的數據分布處偏低。
- 第一步就是訓練判別器(圖(b)),將曲折的藍線訓練成平滑的曲線,可以很好的分別真實數據和虛假數據。
- 然后就是訓練生成器圖(c),將生成器的圖像分布綠線逐漸接近真實數據的分布黑線。
- 最后交替訓練判別器和生成器圖(d),直到生成器的圖像分布綠線和真實數據的分布黑線重合,判別器無法區分兩個分布,此時藍色變成一條水平線。
訓練
這部分就是詳細說明了GAN的訓練過程,包括給定生成器訓練判別器,和給定判別器訓練生成器,將會涉及到大量的計算公式以及推導。
訓練過程對應的偽代碼如圖,訓練過程包括兩個,第一個是首先訓練k次判別器,然后再訓練一次生成器。
訓練判別器
- 首先采樣m個隨機噪聲,生成m個假圖像,
- 然后再采樣m個真圖像,
- 最后由損失函數和梯度,更新判別器的權重參數,
其中目標函數和我們之前說的是一樣的,只不過是將期望換成了均值。
訓練生成器
- 首先采樣m個隨機噪聲,生成m個假圖像,
- 然后由損失函數和梯度,更新生成器的權重參數,
注意再生成器的目標函數中,不會收到判別器的影響,所以只有生成器的部分。
給定生成器,訓練判別器
首先給出結論,再進行證明:
對于給定的生成器G,最優的判別器為
其中為真實圖像的概率,為假圖像的概率
證明
給定生成器最大化判別器的目標函數
?其中,期望的定義為:
?所以式(1)中的期望可以變為積分的形式
?
?上式中既有對x的積分又有對z的積分,其中對于隨機噪聲z的采樣就相當于對假圖像的采樣,所以可以對積分元素進行統一
?所以,(2)式可以統一對x積分
變換后的式子我們就比較熟悉了,其實就是二分類交叉熵,即?
?對于二分類交叉熵為凸函數,所以可以求得最大值,證明如下
?證明完畢
給定判別器,訓練生成器
生成器目標函數:
?其中的判別器就是我們上面訓練好的判別器,代入上式得
那么,上式中當且僅當時,生成器的目標函數取得最小值 -log4
證明
證明完畢。
總結
至此,有關GAN的說明基本差不多了,主要說明了一些重點的原理性的東西,一些細節沒有進行說明,感興趣的朋友可以去看原文,最后希望大家能點贊支持!
總結
以上是生活随笔為你收集整理的对抗生成网络(GAN)详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小黄鸭调试法,每个程序员都要知道的
- 下一篇: DCMM数据管理能力成熟度评估详细介绍