2.2 判別器:有問題?GAN來了!
GAN由生成器G和判別器D組成。
其實上面我們已經(jīng)基本介紹了生成器G的由來了,并且我們遇到了一個問題:
極其復(fù)雜的計算方式導(dǎo)致使用極大似然估計根本無從下手啊?。?!
為了解決這個問題,我們引入了判別器D!
現(xiàn)在GAN的結(jié)構(gòu)就完備了??!
對于生成器G:
-
G 是一個函數(shù),輸入
,輸出(上面已經(jīng)介紹了)
-
先驗分布
,
和G共同決定的分布
對于判別器D:
- D是一個函數(shù),輸入
,輸出一個scalar - D用于評估
和
之間的差異(解決上一小節(jié)提出的問題)
那么,GAN的最終目標(biāo)-->用符號化語言表示就是:

我們的目標(biāo)是得到使得式子
最小的生成器
.
關(guān)于V:

給定G,
衡量的就是分布
和
的差異。
因此,
也就是我們需要的使得差異最小的 G .
詳細(xì)解釋 V(G,D) :
對于
:
固定G ,最優(yōu)
最大化:

假設(shè)D(x) 可以表達(dá)任何函數(shù)
此時再固定 x ,則對于
,我們可將其看成是關(guān)于D的函數(shù): 

解得

即:

則此時對于原式 V(G,D) (將
代入):

JSD表示JS散度,它是KL散度的一種變形,也表示兩個分布之間的差異:
與KL散度不同,JS散度是對稱的。
以上的公式推導(dǎo),證明了
確實是衡量了
和
之間的差異。

此時,最優(yōu)的G:

也就是使得
最小的G

當(dāng)
時,表示兩個分布完全相同。
對于
,令 
我們該如何優(yōu)化從而獲得
呢???
我們希望通過最小化損失函數(shù)L(G) ,找到最優(yōu)的G。
這一步可以通過梯度下降實現(xiàn):

具體算法參考:
第一代:
- 給定
(隨機(jī)初始化)
-
確定
使得 V(
,D) 最大。此時 V(
,
) 表示
和
的JS散度 -
梯度下降:
.得到
第二代:
- 給定

-
確定
使得V(
,D) 最大。此時V(
,
)表示
和
的JS散度 -
梯度下降:
.得到
。。。
后面的依此類推
以上算法有一個問題: 如何確定
使得 V (D ,G**)**** 最大???**
也就是:給定 G,如何計算 
回答:
從
采樣
從
采樣
因此我們可以將
從期望值計算改寫為對樣本計算(近似估計):

這很自然地讓我們想到二分類問題中常使用的交叉熵loss
因此,我們不妨聯(lián)想:
D是一個二分類器,參數(shù)是
來自
的采樣
作為正樣本
來自
的采樣
作為負(fù)樣本
那么此時,我們就將問題轉(zhuǎn)化成了一個二分類問題:
交叉熵loss大 -->
和
JS散度小
交叉熵loss小 -->
和
JS散度大
此時,D就是可以使用一個神經(jīng)網(wǎng)絡(luò)作為二分類器,那么確定D,也就是可以使用梯度下降來優(yōu)化獲得D的最終參數(shù)。
GAN的最終算法流程:
初始化參數(shù)
(for D)和
(for G)
對于訓(xùn)練的每一輪:
第一部分 學(xué)習(xí)優(yōu)化判別器D:
-
從
采樣
-
從
采樣
-
通過生成器
獲得生成樣本
-
梯度下降更新
來最大化 :
:
注:以上第一部分可以重復(fù)多次:此過程本質(zhì)上是在測量兩分布之間的JS散度
第二部分 學(xué)習(xí)優(yōu)化生成器G:
- 再從
采樣另一組
- 梯度下降更新
來最小化 :
:
.實際上
第一項與G無關(guān),梯度下降只需最小化
即可。
注:以上過程僅一次
最后的話:
其實在GAN之前,就已經(jīng)有Auto-Encoder,VAE這樣的方法來使用神經(jīng)網(wǎng)絡(luò)做生成式任務(wù)了。
GAN的最大的創(chuàng)新就是在于非常精妙地引入了判別器,從樣本的維度解決了衡量兩個分布差異的問題。
這種生成器和判別器對抗學(xué)習(xí)的模式,也必將在各種生成式任務(wù)中發(fā)揮其巨大的威力。
-
GaN
+關(guān)注
關(guān)注
21文章
2367瀏覽量
82564 -
生成器
+關(guān)注
關(guān)注
7文章
322瀏覽量
22723 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5599瀏覽量
124417
發(fā)布評論請先 登錄
你知道XGBoost背后的數(shù)學(xué)原理是什么嗎?
基于GaN的開關(guān)器件
GraphSAGEGNN算法的數(shù)學(xué)原理是什么?
變壓變頻調(diào)速的數(shù)學(xué)原理是什么
深入卷積神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)原理
計算機(jī)代數(shù)系統(tǒng)數(shù)學(xué)原理
圖解:卷積神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)原理解析
詳解圖神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理1
詳解圖神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理2
詳解圖神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理3
探討GAN背后的數(shù)學(xué)原理(上)
背后的數(shù)學(xué)原理在應(yīng)用中得到驗證
探討GAN背后的數(shù)學(xué)原理(下)
也就是我們需要的使得差異最小的 G .
評論