日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GAN 的推导、证明与实现。

發(fā)布時(shí)間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GAN 的推导、证明与实现。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自機(jī)器之心整理的,來自Goodfellow 在 NIPS 2016 的演講和臺大李弘毅的解釋,完成原 GAN 的推導(dǎo)、證明與實(shí)現(xiàn)。

本文主要分四部分,第一部分描述 GAN 的直觀概念,第二部分描述概念與優(yōu)化的形式化表達(dá),第三部分將對 GAN 進(jìn)行詳細(xì)的理論推導(dǎo)與分析,最后我們將實(shí)現(xiàn)前面的理論分析。

原文地址:https://baijiahao.baidu.com/s?id=1580024390078548003&wfr=spider&for=pc

GitHub項(xiàng)目地址:https://github.com/jiqizhixin/ML-Tutorial-Experiment

生成對抗網(wǎng)絡(luò)基本概念

要理解生成對抗模型(GAN),首先要了解生成對抗模型可以拆分為兩個模塊:一個是判別模型,另一個是生成模型。簡單來說就是:兩個人比賽,看是 A 的矛厲害,還是 B 的盾厲害。比如,我們有一些真實(shí)數(shù)據(jù),同時(shí)也有一把隨機(jī)生成的假數(shù)據(jù)。A 拼命地把隨手拿過來的假數(shù)據(jù)模仿成真實(shí)數(shù)據(jù),并揉進(jìn)真實(shí)數(shù)據(jù)里。B 則拼命地想把真實(shí)數(shù)據(jù)和假數(shù)據(jù)區(qū)分開。

這里,A 就是一個生成模型,類似于造假幣的,一個勁地學(xué)習(xí)如何騙過 B。而 B 則是一個判別模型,類似于稽查警察,一個勁地學(xué)習(xí)如何分辨出 A 的造假技巧。

如此這般,隨著 B 的鑒別技巧越來越厲害,A 的造假技巧也是越來越純熟,而一個一流的假幣制造者就是我們所需要的。雖然 GAN 背后的思想十分直觀與樸素,但我們需要更進(jìn)一步了解該理論背后的證明與推導(dǎo)。

總的來說,Goodfellow 等人提出來的 GAN 是通過對抗過程估計(jì)生成模型的新框架。在這種框架下,我們需要同時(shí)訓(xùn)練兩個模型,即一個能捕獲數(shù)據(jù)分布的生成模型 G 和一個能估計(jì)數(shù)據(jù)來源于真實(shí)樣本概率的判別模型 D。生成器 G 的訓(xùn)練過程是最大化判別器犯錯誤的概率,即判別器誤以為數(shù)據(jù)是真實(shí)樣本而不是生成器生成的假樣本。因此,這一框架就對應(yīng)于兩個參與者的極小極大博弈(minimax game)。在所有可能的函數(shù) G 和 D 中,我們可以求出唯一均衡解,即 G 可以生成與訓(xùn)練樣本相同的分布,而 D 判斷的概率處處為 1/2,這一過程的推導(dǎo)與證明將在后文詳細(xì)解釋。

當(dāng)模型都為多層感知機(jī)時(shí),對抗性建模框架可以最直接地應(yīng)用。為了學(xué)習(xí)到生成器在數(shù)據(jù) x 上的分布 P_g,我們先定義一個先驗(yàn)的輸入噪聲變量 P_z(z),然后根據(jù) G(z;θ_g) 將其映射到數(shù)據(jù)空間中,其中 G 為多層感知機(jī)所表征的可微函數(shù)。我們同樣需要定義第二個多層感知機(jī) D(s;θ_d),它的輸出為單個標(biāo)量。D(x) 表示 x 來源于真實(shí)數(shù)據(jù)而不是 P_g 的概率。我們訓(xùn)練 D 以最大化正確分配真實(shí)樣本和生成樣本的概率,因此我們就可以通過最小化 log(1-D(G(z))) 而同時(shí)訓(xùn)練 G。也就是說判別器 D 和生成器對價(jià)值函數(shù) V(G,D) 進(jìn)行了極小極大化博弈:

我們后一部分會對對抗網(wǎng)絡(luò)進(jìn)行理論上的分析,該理論分析本質(zhì)上可以表明如果 G 和 D 的模型復(fù)雜度足夠(即在非參數(shù)限制下),那么對抗網(wǎng)絡(luò)就能生成數(shù)據(jù)分布。此外,Goodfellow 等人在論文中使用如下案例為我們簡要介紹了基本概念。

上面比較精簡地介紹了生成對抗網(wǎng)絡(luò)的基本概念,下一節(jié)將會把這些概念形式化,并描述優(yōu)化的大致過程。

概念與過程的形式化

理論完美的生成器

該算法的目標(biāo)是令生成器生成與真實(shí)數(shù)據(jù)幾乎沒有區(qū)別的樣本,即一個造假一流的 A,就是我們想要的生成模型。數(shù)學(xué)上,即將隨機(jī)變量生成為某一種概率分布,也可以說概率密度函數(shù)為相等的:P_G(x)=P_data(x)。這正是數(shù)學(xué)上證明生成器高效性的策略:即定義一個最優(yōu)化問題,其中最優(yōu)生成器 G 滿足 P_G(x)=P_data(x)。如果我們知道求解的 G 最后會滿足該關(guān)系,那么我們就可以合理地期望神經(jīng)網(wǎng)絡(luò)通過典型的 SGD 訓(xùn)練就能得到最優(yōu)的 G。

最優(yōu)化問題

正如最開始我們了解的警察與造假者案例,定義最優(yōu)化問題的方法就可以由以下兩部分組成。首先我們需要定義一個判別器 D 以判別樣本是不是從 P_data(x) 分布中取出來的,因此有:

其中 E 指代取期望。這一項(xiàng)是根據(jù)「正類」(即辨別出 x 屬于真實(shí)數(shù)據(jù) data)的對數(shù)損失函數(shù)而構(gòu)建的。最大化這一項(xiàng)相當(dāng)于令判別器 D 在 x 服從于 data 的概率密度時(shí)能準(zhǔn)確地預(yù)測 D(x)=1,即:

另外一項(xiàng)是企圖欺騙判別器的生成器 G。該項(xiàng)根據(jù)「負(fù)類」的對數(shù)損失函數(shù)而構(gòu)建,即:

因?yàn)?x<1的對數(shù)為負(fù),那么如果最大化該項(xiàng)的值,則需要令均值d(g(z))≈0,因此g并沒有欺騙d。為了結(jié)合這兩個概念,判別器的目標(biāo)為最大化:< span="">

給定生成器 G,其代表了判別器 D 正確地識別了真實(shí)和偽造數(shù)據(jù)點(diǎn)。給定一個生成器 G,上式所得出來的最優(yōu)判別器可以表示為

(下文用 D_G*表示)。定義價(jià)值函數(shù)為:

然后我們可以將最優(yōu)化問題表述為:

現(xiàn)在 G 的目標(biāo)已經(jīng)相反了,當(dāng) D=D_G*時(shí),最優(yōu)的 G 為最小化前面的等式。在論文中,作者更喜歡求解最優(yōu)化價(jià)值函的 G 和 D 以求解極小極大博弈:

對于 D 而言要盡量使公式最大化(識別能力強(qiáng)),而對于 G 又想使之最小(生成的數(shù)據(jù)接近實(shí)際數(shù)據(jù))。整個訓(xùn)練是一個迭代過程。其實(shí)極小極大化博弈可以分開理解,即在給定 G 的情況下先最大化 V(D,G) 而取 D,然后固定 D,并最小化 V(D,G) 而得到 G。其中,給定 G,最大化 V(D,G) 評估了 P_G 和 P_data 之間的差異或距離。

最后,我們可以將最優(yōu)化問題表達(dá)為:

上文給出了 GAN 概念和優(yōu)化過程的形式化表達(dá)。通過這些表達(dá),我們可以理解整個生成對抗網(wǎng)絡(luò)的基本過程與優(yōu)化方法。當(dāng)然,有了這些概念我們完全可以直接在 GitHub 上找一段 GAN 代碼稍加修改并很好地運(yùn)行它。但如果我們希望更加透徹地理解 GAN,更加全面地理解實(shí)現(xiàn)代碼,那么我們還需要知道很多推導(dǎo)過程。比如什么時(shí)候 D 能令價(jià)值函數(shù) V(D,G) 取最大值、G 能令 V(D,G) 取最小值,而 D 和 G 該用什么樣的神經(jīng)網(wǎng)絡(luò)(或函數(shù)),它們的損失函數(shù)又需要用什么等等。總之,還有很多理論細(xì)節(jié)與推導(dǎo)過程需要我們進(jìn)一步挖掘。

理論推導(dǎo)

在原 GAN 論文中,度量生成分布與真實(shí)分布之間差異或距離的方法是 JS 散度,而 JS 散度是我們在推導(dǎo)訓(xùn)練過程中使用 KL 散度所構(gòu)建出來的。所以這一部分將從理論基礎(chǔ)出發(fā)再進(jìn)一步推導(dǎo)最優(yōu)判別器和生成器所需要滿足的條件,最后我們將利用推導(dǎo)結(jié)果在數(shù)學(xué)上重述訓(xùn)練過程。這一部分為我們下一部分理解具體實(shí)現(xiàn)提供了強(qiáng)大的理論支持。

KL 散度

在信息論中,我們可以使用香農(nóng)熵(Shannon entropy)來對整個概率分布中的不確定性總量進(jìn)行量化:

如果我們對于同一個隨機(jī)變量 x 有兩個單獨(dú)的概率分布 P(x) 和 Q(x),我們可以使用 KL 散度(Kullback-Leibler divergence)來衡量這兩個分布的差異:

在離散型變量的情況下,KL 散度衡量的是,當(dāng)我們使用一種被設(shè)計(jì)成能夠使得概率分布 Q 產(chǎn)生的消息的長度最小的編碼,發(fā)送包含由概率分布 P 產(chǎn)生的符號的消息時(shí),所需要的額外信息量。

KL 散度有很多有用的性質(zhì),最重要的是它是非負(fù)的。KL 散度為 0 當(dāng)且僅當(dāng) P 和 Q 在離散型變量的情況下是相同的分布,或者在連續(xù)型變量的情況下是 『幾乎處處』 相同的。因?yàn)?KL 散度是非負(fù)的并且衡量的是兩個分布之間的差異,它經(jīng)常 被用作分布之間的某種距離。然而,它并不是真的距離因?yàn)樗皇菍ΨQ的:對于某些 P 和 Q,D_KL(P||Q) 不等于 D_KL(Q||P)。這種非對稱性意味著選擇 D_KL(P||Q) 還是 D_KL(Q||P) 影響很大。

在李弘毅的講解中,KL 散度可以從極大似然估計(jì)中推導(dǎo)而出。若給定一個樣本數(shù)據(jù)的分布 P_data(x) 和生成的數(shù)據(jù)分布 P_G(x;θ),那么 GAN 希望能找到一組參數(shù)θ使分布 P_g(x;θ) 和 P_data(x) 之間的距離最短,也就是找到一組生成器參數(shù)而使得生成器能生成十分逼真的圖片。

現(xiàn)在我們可以從訓(xùn)練集抽取一組真實(shí)圖片來訓(xùn)練 P_G(x;θ) 分布中的參數(shù) θ 使其能逼近于真實(shí)分布。因此,現(xiàn)在從 P_data(x) 中抽取 m 個真實(shí)樣本 {x^1,x^2,…,x^},其中符號「^」代表上標(biāo),即 x 中的第 i 個樣本。對于每一個真實(shí)樣本,我們可以計(jì)算 P_G(x^i;θ),即在由 θ 確定的生成分布中,x^i 樣本所出現(xiàn)的概率。因此,我們就可以構(gòu)建似然函數(shù):

其中「∏」代表累乘、P_G(x^i;θ) 代表第 i 個樣本在生成分布出現(xiàn)的概率。從該似然函數(shù)可知,我們抽取的 m 個真實(shí)樣本在 P_G(x;θ) 分布中全部出現(xiàn)的概率值可以表達(dá)為 L。又因?yàn)槿?P_G(x;θ) 分布和 P_data(x) 分布相似,那么真實(shí)數(shù)據(jù)很可能就會出現(xiàn)在 P_G(x;θ) 分布中,因此 m 個樣本都出現(xiàn)在 P_G(x;θ) 分布中的概率就會十分大。

下面我們就可以最大化似然函數(shù) L 而求得離真實(shí)分布最近的生成分布(即最優(yōu)的參數(shù)θ):

在上面的推導(dǎo)中,我們希望最大化似然函數(shù) L。若對似然函數(shù)取對數(shù),那么累乘 ∏ 就能轉(zhuǎn)化為累加 ∑,并且這一過程并不會改變最優(yōu)化的結(jié)果。因此我們可以將極大似然估計(jì)化為求令 log[P_G(x;θ)] 期望最大化的 θ,而期望 E[logP_G(x;θ)] 可以展開為在 x 上的積分形式:∫P_data(x)logP_G(x;θ)dx。又因?yàn)樵撟顑?yōu)化過程是針對 θ 的,所以我們添加一項(xiàng)不含 θ 的積分并不影響最優(yōu)化效果,即可添加 -∫P_data(x)logP_data(x)dx。添加該積分后,我們可以合并這兩個積分并構(gòu)建類似 KL 散度的形式。該過程如下:

這一個積分就是 KL 散度的積分形式,因此,如果我們需要求令生成分布 P_G(x;θ) 盡可能靠近真實(shí)分布 P_data(x) 的參數(shù) θ,那么我們只需要求令 KL 散度最小的參數(shù) θ。若取得最優(yōu)參數(shù) θ,那么生成器生成的圖像將顯得非常真實(shí)。

推導(dǎo)存在的問題

下面,我們必須證明該最優(yōu)化問題有唯一解 G*,并且該唯一解滿足 P_G=P_data。不過在開始推導(dǎo)最優(yōu)判別器和最優(yōu)生成器之前,我們需要了解 Scott Rome 對原論文推導(dǎo)的觀點(diǎn),他認(rèn)為原論文忽略了可逆條件,因此最優(yōu)解的推導(dǎo)不夠完美。

在 GAN 原論文中,有一個思想和其它很多方法都不同,即生成器 G 不需要滿足可逆條件。Scott Rome 認(rèn)為這一點(diǎn)非常重要,因?yàn)閷?shí)踐中 G 就是不可逆的。而很多證明筆記都忽略了這一點(diǎn),他們在證明時(shí)錯誤地使用了積分換元公式,而積分換元卻又恰好基于 G 的可逆條件。Scott 認(rèn)為證明只能基于以下等式的成立性:

該等式來源于測度論中的 Radon-Nikodym 定理,它展示在原論文的命題 1 中,并且表達(dá)為以下等式:

我們看到該講義使用了積分換元公式,但進(jìn)行積分換元就必須計(jì)算 G^(-1),而 G 的逆卻并沒有假定為存在。并且在神經(jīng)網(wǎng)絡(luò)的實(shí)踐中,它也并不存在。可能這個方法在機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)文獻(xiàn)中太常見了,因此我們忽略了它。

最優(yōu)判別器D

在極小極大博弈的第一步中,給定生成器 G,最大化 V(D,G) 而得出最優(yōu)判別器 D。其中,最大化 V(D,G) 評估了 P_G 和 P_data 之間的差異或距離。因?yàn)樵谠撐闹袃r(jià)值函數(shù)可寫為在 x 上的積分,即將數(shù)學(xué)期望展開為積分形式:

其實(shí)求積分的最大值可以轉(zhuǎn)化為求被積函數(shù)的最大值。而求被積函數(shù)的最大值是為了求得最優(yōu)判別器 D,因此不涉及判別器的項(xiàng)都可以看作為常數(shù)項(xiàng)。如下所示,P_data(x) 和 P_G(x) 都為標(biāo)量,因此被積函數(shù)可表示為 a*D(x)+b*log(1-D(x))。

若令判別器 D(x) 等于 y,那么被積函數(shù)可以寫為:

為了找到最優(yōu)的極值點(diǎn),如果 a+b≠0,我們可以用以下一階導(dǎo)求解:

如果我們繼續(xù)求表達(dá)式 f(y) 在駐點(diǎn)的二階導(dǎo):

其中 a,b∈(0,1)。因?yàn)橐浑A導(dǎo)等于零、二階導(dǎo)小于零,所以我們知道 a/(a+b) 為極大值。若將 a=P_data(x)、b=P_G(x) 代入該極值,那么最優(yōu)判別器 D(x)=P_data(x)/(P_data(x)+P_G(x))。

最后我們可以將價(jià)值函數(shù)表達(dá)式寫為:

如果我們令 D(x)=P_data/(P_data+P_G),那么我們就可以令價(jià)值函數(shù) V(G,D) 取極大值。因?yàn)?f(y) 在定義域內(nèi)有唯一的極大值,最優(yōu) D 也是唯一的,并且沒有其它的 D 能實(shí)現(xiàn)極大值。

其實(shí)該最優(yōu)的 D 在實(shí)踐中并不是可計(jì)算的,但在數(shù)學(xué)上十分重要。我們并不知道先驗(yàn)的 P_data(x),所以我們在訓(xùn)練中永遠(yuǎn)不會用到它。另一方面,它的存在令我們可以證明最優(yōu)的 G 是存在的,并且在訓(xùn)練中我們只需要逼近 D。

最優(yōu)生成器G

當(dāng)然 GAN 過程的目標(biāo)是令 P_G=P_data。這對最優(yōu)的 D 意味著什么呢?我們可以將這一等式代入 D_G*的表達(dá)式中:

這意味著判別器已經(jīng)完全困惑了,它完全分辨不出 P_data 和 P_G 的區(qū)別,即判斷樣本來自 P_data 和 P_G 的概率都為 1/2。基于這一觀點(diǎn),GAN 作者證明了 G 就是極小極大博弈的解。該定理如下:

「當(dāng)且僅當(dāng) P_G=P_data,訓(xùn)練標(biāo)準(zhǔn) C(G)=maxV(G,D) 的全局最小點(diǎn)可以達(dá)到。」

以上定理即極大極小博弈的第二步,求令 V(G,D*) 最小的生成器 G(其中 G*代表最優(yōu)的判別器)。之所以當(dāng) P_G(x)=P_data(x) 可以令價(jià)值函數(shù)最小化,是因?yàn)檫@時(shí)候兩個分布的 JS 散度 [JSD(P_data(x) || P_G(x))] 等于零,這一過程的詳細(xì)解釋如下。

原論文中的這一定理是「當(dāng)且僅當(dāng)」聲明,所以我們需要從兩個方向證明。首先我們先從反向逼近并證明 C(G) 的取值,然后再利用由反向獲得的新知識從正向證明。設(shè) P_G=P_data(反向指預(yù)先知道最優(yōu)條件并做推導(dǎo)),我們可以反向推出:

該值是全局最小值的候選,因?yàn)樗挥性?P_G=P_data 的時(shí)候才出現(xiàn)。我們現(xiàn)在需要從正向證明這一個值常常為最小值,也就是同時(shí)滿足「當(dāng)」和「僅當(dāng)」的條件。現(xiàn)在放棄 P_G=P_data 的假設(shè),對任意一個 G,我們可以將上一步求出的最優(yōu)判別器 D* 代入到 C(G)=maxV(G,D) 中:

因?yàn)橐阎?-log4 為全局最小候選值,所以我們希望構(gòu)造某個值以使方程式中出現(xiàn) log2。因此我們可以在每個積分中加上或減去 log2,并乘上概率密度。這是一個十分常見并且不會改變等式的數(shù)學(xué)證明技巧,因?yàn)楸举|(zhì)上我們只是在方程加上了 0。

采用該技巧主要是希望能夠構(gòu)建成含 log2 和 JS 散度的形式,上式化簡后可以得到以下表達(dá)式:

因?yàn)楦怕拭芏鹊亩x,P_G 和 P_data 在它們積分域上的積分等于 1,即:

此外,根據(jù)對數(shù)的定義,我們有:

因此代入該等式,我們可以寫為:

現(xiàn)在,如果讀者閱讀了前文的 KL 散度(Kullback-Leibler divergence),那么我們就會發(fā)現(xiàn)每一個積分正好就是它。具體來說:

KL 散度是非負(fù)的,所以我們馬上就能看出來 -log4 為 C(G) 的全局最小值。

如果我們進(jìn)一步證明只有一個 G 能達(dá)到這一個值,因?yàn)?P_G=P_data 將會成為令 C(G)=log4 的唯一點(diǎn),所以整個證明就能完成了。

從前文可知 KL 散度是非對稱的,所以 C(G) 中的 KL(P_data || (P_data+P_G)/2) 左右兩項(xiàng)是不能交換的,但如果同時(shí)加上另一項(xiàng) KL(P_G || (P_data+P_G)/2),它們的和就能變成對稱項(xiàng)。這兩項(xiàng) KL 散度的和即可以表示為 JS 散度(Jenson-Shannon divergence):

假設(shè)存在兩個分布 P 和 Q,且這兩個分布的平均分布 M=(P+Q)/2,那么這兩個分布之間的 JS 散度為 P 與 M 之間的 KL 散度加上 Q 與 M 之間的 KL 散度再除以 2。

JS 散度的取值為 0 到 log2。若兩個分布完全沒有交集,那么 JS 散度取最大值 log2;若兩個分布完全一樣,那么 JS 散度取最小值 0。

因此 C(G) 可以根據(jù) JS 散度的定義改寫為:

這一散度其實(shí)就是 Jenson-Shannon 距離度量的平方。根據(jù)它的屬性:當(dāng) P_G=P_data 時(shí),JSD(P_data||P_G) 為 0。綜上所述,生成分布當(dāng)且僅當(dāng)?shù)扔谡鎸?shí)數(shù)據(jù)分布式時(shí),我們可以取得最優(yōu)生成器。

收斂

現(xiàn)在,該論文的主要部分已經(jīng)得到了證明:即 P_G=P_data 為 maxV(G,D) 的最優(yōu)點(diǎn)。此外,原論文還有額外的證明白表示:給定足夠的訓(xùn)練數(shù)據(jù)和正確的環(huán)境,訓(xùn)練過程將收斂到最優(yōu) G,我們并不詳細(xì)討論這一塊。

?

重述訓(xùn)練過程

下面是推導(dǎo)的最后一步,我們會重述整個參數(shù)優(yōu)化過程,并簡要介紹實(shí)際訓(xùn)練中涉及的各個過程。

1.參數(shù)優(yōu)化過程

若我們需要尋找最優(yōu)的生成器,那么給定一個判別器 D,我們可以將 maxV(G,D) 看作訓(xùn)練生成器的損失函數(shù) L(G)。既然設(shè)定了損失函數(shù),那么我們就能使用 SGD、Adam 等優(yōu)化算法更新生成器 G 的參數(shù),梯度下降的參數(shù)優(yōu)化過程如下:

其中求 L(G) 對θ_G 的偏導(dǎo)數(shù)涉及到求 max{V(G,D)} 的偏導(dǎo)數(shù),這種對 max 函數(shù)求微分的方式是存在且可用的。

現(xiàn)在給定一個初始 G_0,我們需要找到令 V(G_0,D) 最大的 D_0*,因此判別器更新的過程也就可以看作損失函數(shù)為-V(G,D) 的訓(xùn)練過程。并且由前面的推導(dǎo)可知,V(G,D) 實(shí)際上與分布 P_data(x) 和 P_G(x) 之間的 JS 散度只差了一個常數(shù)項(xiàng)。因此這樣一個循環(huán)對抗的過程就能表述為:

給定 G_0,最大化 V(G_0,D) 以求得 D_0*,即 max[JSD(P_data(x)||P_G0(x)];

固定 D_0*,計(jì)算θ_G1 ← θ_G0 η(dV(G,D_0*) /dθ_G) 以求得更新后的 G_1;

固定 G_1,最大化 V(G_1,D_0*) 以求得 D_1*,即 max[JSD(P_data(x)||P_G1(x)];

固定 D_1*,計(jì)算θ_G2 ← θ_G1 η(dV(G,D_0*) /dθ_G) 以求得更新后的 G_2;

。。。

2.實(shí)際訓(xùn)練過程

根據(jù)前面價(jià)值函數(shù) V(G,D) 的定義,我們需要求兩個數(shù)學(xué)期望,即 E[log(D(x))] 和 E[log(1-D(G(z)))],其中 x 服從真實(shí)數(shù)據(jù)分布,z 服從初始化分布。但在實(shí)踐中,我們是沒有辦法利用積分求這兩個數(shù)學(xué)期望的,所以一般我們能從無窮的真實(shí)數(shù)據(jù)和無窮的生成器中做采樣以逼近真實(shí)的數(shù)學(xué)期望。

若現(xiàn)在給定生成器 G,并希望計(jì)算 maxV(G,D) 以求得判別器 D,那么我們首先需要從 P_data(x) 采樣 m 個樣本 {x^1,x^2,…,x^m},從生成器 P_G(x) 采樣 m 個樣本

。因此最大化價(jià)值函數(shù) V(G,D) 就可以使用以下表達(dá)式近似替代:

若我們需要計(jì)算上述的極大化過程,可以采用等價(jià)形式的訓(xùn)練方法。若我們有一個二元分類器 D(參數(shù)為 θ_d),當(dāng)然該分類器可以是深度神經(jīng)網(wǎng)絡(luò),那么極大化過程的輸出就為該分類器 D(x)。現(xiàn)在我們從 P_data(x) 抽取樣本作為正樣本,從 P_G(x) 抽取樣本作為負(fù)樣本,同時(shí)將逼近負(fù) V(G,D) 的函數(shù)作為損失函數(shù),因此我們就將其表述為一個標(biāo)準(zhǔn)的二元分類器的訓(xùn)練過程:

在實(shí)踐中,我們必須使用迭代和數(shù)值計(jì)算的方法實(shí)現(xiàn)極小極大化博弈過程。在訓(xùn)練的內(nèi)部循環(huán)中完整地優(yōu)化 D 在計(jì)算上是不允許的,并且有限的數(shù)據(jù)集也會導(dǎo)致過擬合。因此我們可以在 k 個優(yōu)化 D 的步驟和一個優(yōu)化 G 的步驟間交替進(jìn)行。那么我們只需慢慢地更新 G,D 就會一直處于最優(yōu)解的附近,這種策略類似于 SML/PCD 訓(xùn)練的方式。

綜上,我們可以描述整個訓(xùn)練過程,對于每一次迭代:

從真實(shí)數(shù)據(jù)分布 P_data 抽取 m 個樣本

從先驗(yàn)分布 P_prior(z) 抽取 m 個噪聲樣本

將噪聲樣本投入 G 而生成數(shù)據(jù)

,通過最大化 V 的近似而更新判別器參數(shù)θ_d,即極大化

,且判別器參數(shù)的更新迭代式為

以上是學(xué)習(xí)判別器 D 的過程。因?yàn)閷W(xué)習(xí) D 的過程是計(jì)算 JS 散度的過程,并且我們希望能最大化價(jià)值函數(shù),所以該步驟會重復(fù) k 次。

從先驗(yàn)分布 P_prior(z) 中抽取另外 m 個噪聲樣本 {z^1,...,z^m}

通過極小化 V^tilde 而更新生成器參數(shù)θ_g,即極大化

,且生成器參數(shù)的更新迭代式為

以上是學(xué)習(xí)生成器參數(shù)的過程,這一過程在一次迭代中只會進(jìn)行一次,因此可以避免更新太多而令 JS 散度上升。

轉(zhuǎn)載于:https://www.cnblogs.com/noahzhixiao/p/10172210.html

總結(jié)

以上是生活随笔為你收集整理的GAN 的推导、证明与实现。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。