生成式對抗網(wǎng)絡(luò)
友情提示:
<生成式對抗網(wǎng)絡(luò)>論文筆記 & 代碼解析可參考如下網(wǎng)址
http://blog.csdn.net/wspba/article/details/54582391
摘要
//整體的評說,已經(jīng)把思路全說了
//總的來說污呼,Goodfellow 等人提出來的 GAN 是通過對抗過程估計生成模型的新框架。在這種框架下琉雳,我們需要同時訓(xùn)練兩個模型,即一個能捕獲數(shù)據(jù)分布的生成模型 G 和一個能估計數(shù)據(jù)來源于真實樣本概率的判別模型 D。生成器 G 的訓(xùn)練過程是最大化判別器犯錯誤的概率卿樱,即判別器誤以為數(shù)據(jù)是真實樣本而不是生成器生成的假樣本竞阐。因此缴饭,這一框架就對應(yīng)于兩個參與者的極小極大博弈(minimax game)。在所有可能的函數(shù) G 和 D 中骆莹,我們可以求出唯一均衡解颗搂,即 G 可以生成與訓(xùn)練樣本相同的分布,而 D 判斷的概率處處為 1/2幕垦,這一過程的推導(dǎo)與證明將在后文詳細解釋丢氢。
我們提出了一個通過對抗過程估計生成模型的新框架,在新框架中我們同時訓(xùn)練兩個模型:一個用來捕獲數(shù)據(jù)分布的生成模型G智嚷,和一個用來估計樣本來自訓(xùn)練數(shù)據(jù)而不是G的概率的判別模型D卖丸,G的訓(xùn)練過程是最大化D產(chǎn)生錯誤的概率。這個框架相當于一個極小化極大的雙方博弈盏道。在任意函數(shù)G和D的空間中存在唯一的解稍浆,其中G恢復(fù)訓(xùn)練數(shù)據(jù)分布,并且D處處都等于1/2猜嘱。在G和D由多層感知器定義的情況下衅枫,整個系統(tǒng)可以用反向傳播進行訓(xùn)練。在訓(xùn)練或生成樣本期間不需要任何馬爾科夫鏈或展開的近似推理網(wǎng)絡(luò)朗伶。 實驗通過對生成的樣品進行定性和定量評估來展示這個框架的潛力弦撩。
1.引言
深度學(xué)習(xí)的任務(wù)是尋找豐富的層次模型,能夠在人工智能領(lǐng)域里用來表達各種數(shù)據(jù)的概率分布论皆,例如自然圖像益楼,包含語音的音頻波形和自然語言語料庫中的符號等。到目前為止点晴,在深度學(xué)習(xí)領(lǐng)域感凤,目前為止最成功的的模型之一就是判別式模型,通常它們將高維豐富的感知器輸入映射到類標簽上粒督。這些顯著的成功主要是基于反向傳播和丟棄算法來實現(xiàn)的陪竿,特別是具有特別良好梯度的分段線性單元。由于在最大似然估計和相關(guān)策略中出現(xiàn)的許多難以解決的概率計算的困難屠橄,以及很難利用在生成上下文中時使用分段線性單元的好處族跛,深度生成模型的影響很小闰挡。我們提出一個新的生成模型估計程序,來分步處理這些難題礁哄。
//介紹D與G
在提到的對抗網(wǎng)絡(luò)框架中长酗,生成模型對抗著一個對手:一個學(xué)習(xí)去判別一個樣本是來自模型分布還是數(shù)據(jù)分布的判別模型。生成模型可以被認為是一個偽造團隊姐仅,試圖產(chǎn)生假幣并在不被發(fā)現(xiàn)的情況下使用它花枫,而判別模型類似于警察,試圖檢測假幣掏膏。在這個游戲中的競爭驅(qū)使兩個團隊改進他們的方法劳翰,直到真假難分為止。
這個框架可以針對多種模型和優(yōu)化算法提供特定的訓(xùn)練算法馒疹。在這篇文章中佳簸,我們探討了生成模型通過將隨機噪聲傳輸?shù)蕉鄬痈兄獧C來生成樣本的特例,同時判別模型也是通過多層感知機實現(xiàn)的颖变。我們稱這個特例為對抗網(wǎng)絡(luò)生均。在這種情況下,我們可以僅使用非常成熟的反向傳播和丟棄算法訓(xùn)練兩個模型腥刹,生成模型在生成樣本時只使用前向傳播算法马胧。并且不需要近似推理和馬爾可夫鏈作為前題。
2.相關(guān)工作
//感覺重要性不是很強衔峰,第一遍讀先略過佩脊;原論文中有個公式,之后要研究一下
含隱變量的有向圖模型可以由含隱變量的無向圖模型替代垫卤,例如受限制波茲曼機(RBMs)威彰,深度波茲曼機(DBMs)和它們很多的變種。這些模型之間的相互影響可以被表達為非標準化的勢函數(shù)的乘積穴肘,再通過隨機變量的所有狀態(tài)的全局整合來標準化歇盼。這個數(shù)量(配分函數(shù))和它的梯度的估算是很棘手的,盡管他們能夠依靠馬爾可夫鏈和蒙特卡羅(MCMC)算法來估計评抚,同時依靠MCMC的學(xué)習(xí)算法的混合也會引發(fā)一個嚴重的問題豹缀。
深度信念網(wǎng)絡(luò)(DBNs)是一個包含一個無向?qū)雍腿舾捎邢驅(qū)拥幕旌夏P汀.斒褂靡粋€快速近似的逐層訓(xùn)練法則時慨代,DBNs 會引發(fā)無向模型和有向模型相關(guān)的計算難題耿眉。
不受對數(shù)似然函數(shù)估計或約束的替代準則已經(jīng)被提出來了,例如分數(shù)匹配和噪音壓縮評估(NCE)鱼响。這些都需要先驗概率密度來分析指定一個規(guī)范化的常量。應(yīng)該注意的是許多有趣的帶有一些隱層變量的生成模型(如DBNs和DBMs)组底,它們甚至不需要一些難以處理的非標準化的概率密度先驗知識丈积。一些模型如自動編碼降噪機和壓縮編碼的學(xué)習(xí)準則與分數(shù)匹配在RBMs上的應(yīng)用非常相似筐骇。在NCE中,as in this work江滨,使用一個判別訓(xùn)練準則來擬合一個生成模型铛纬。然而,生成模型常常被用來判別從一個固定噪音分布中抽樣生成的數(shù)據(jù)唬滑,而不是擬合一個獨立的判別模型告唆。由于NCE使用一個固定的噪音分布,僅僅是從觀測變量的一個小子集中學(xué)習(xí)到一個大致正確的分布后晶密,模型的學(xué)習(xí)便急劇減慢擒悬。
最后,一些技術(shù)并沒有用來明確定義概率分布稻艰,而是用來訓(xùn)練一個生成器來從期望的分布中擬合出樣本懂牧。這個方法優(yōu)勢在于這些生成器能夠被設(shè)計使用反向傳播算法訓(xùn)練。這個領(lǐng)域最近比較突出的工作包含生成隨機網(wǎng)絡(luò)(GSN)框架尊勿,它擴展了廣義的除噪自動編碼器:兩者都可以看作是定義了一個參數(shù)化的馬爾可夫鏈僧凤,即一個通過執(zhí)行生成馬爾科夫鏈的一個步驟來學(xué)習(xí)生成器參數(shù)的算法。同GSNs相比元扔,對抗網(wǎng)絡(luò)框架不需要使用馬爾可夫鏈來采樣躯保。由于對抗網(wǎng)絡(luò)在生成階段不需要循環(huán)反饋信息,它們能夠更好的利用分段線性單元澎语,這可以提高反向傳播的效率途事,但當使用循環(huán)反饋時卻存在不受控激活的問題。大部分利用反向傳播算法來訓(xùn)練生成器的例子包括變分貝葉斯自動編碼和隨機反向傳播咏连。
3.對抗網(wǎng)絡(luò)
當模型都為多層感知機時盯孙,對抗性建模框架可以最直接地應(yīng)用祟滴。為了學(xué)習(xí)到生成器在數(shù)據(jù) x 上的分布 P_g振惰,我們先定義一個先驗的輸入噪聲變量 P_z(z),然后根據(jù) G(z;θ_g) 將其映射到數(shù)據(jù)空間中垄懂,其中 G 為多層感知機所表征的可微函數(shù)骑晶。我們同樣需要定義第二個多層感知機 D(s;θ_d),它的輸出為單個標量草慧。D(x) 表示 x 來源于真實數(shù)據(jù)而不是 P_g 的概率桶蛔。我們訓(xùn)練 D 以最大化正確分配真實樣本和生成樣本的概率,因此我們就可以通過最小化 log(1-D(G(z))) 而同時訓(xùn)練 G漫谷。也就是說判別器 D 和生成器對價值函數(shù) V(G,D) 進行了極小極大化博弈:
當模型都是多層感知器時仔雷,對抗模型框架是最直接應(yīng)用的。為了學(xué)習(xí)生成器關(guān)于數(shù)據(jù)x上的分布Pg, 我們定義輸入噪聲的先驗變量Pz(z),然后使用G(z;θg)來代表數(shù)據(jù)空間的映射碟婆,這里G是一個由含有參數(shù)θg 的多層感知機表示的可微函數(shù)电抚。我們再定義了一個多層感知機D(x;θd)用來輸出一個單獨的標量。D(x) 代表x來自于真實數(shù)據(jù)分布而不是Pg的概率竖共。我們訓(xùn)練D來最大化分配正確標簽給來自于訓(xùn)練樣例和由G生成的樣例的概率蝙叛。我們同時訓(xùn)練G來最小化log(1?D(G(z))):
//公式需要好好分析
換句話說,D和G的訓(xùn)練是關(guān)于值函數(shù)V(G,D)的極小化極大的二人博弈問題:
公式1
在下一節(jié)中公给,我們提出了對抗網(wǎng)絡(luò)的理論分析借帘,基本上表明基于訓(xùn)練準則可以恢復(fù)數(shù)據(jù)生成分布,因為G和D被給予足夠的容量淌铐,即在非參數(shù)極限肺然。如圖1展示了該方法的一個非正式卻更加直觀的解釋。實際上匣沼,我們必須使用迭代數(shù)值方法來實現(xiàn)這個過程狰挡。在訓(xùn)練的內(nèi)部循環(huán)中優(yōu)化D到完成的計算是禁止的,并且有限的數(shù)據(jù)集將導(dǎo)致過擬合释涛。相反加叁,我們在優(yōu)化D的k個步驟和優(yōu)化G的一個步驟之間交替。只要G變化足夠慢唇撬,就可以保證D保持在其最佳解附近它匕。該過程如算法1所示。
實際上窖认,方程1可能無法為G提供足夠的梯度來學(xué)習(xí)豫柬。訓(xùn)練初期,當G的生成效果很差時扑浸,D會以高置信度來拒絕生成樣本烧给,因為它們與訓(xùn)練數(shù)據(jù)明顯不同。在這種情況下喝噪,log(1?D(G(z)))飽和础嫡。因此我們選擇最大化logD(G(z))而不是最小化log(1?D(G(z))) 來訓(xùn)練G,該目標函數(shù)使G和D的動力學(xué)穩(wěn)定點相同酝惧,并且在訓(xùn)練初期榴鼎,該目標函數(shù)可以提供更強大的梯度。(晚唇?梯度)
圖1:訓(xùn)練對抗式生成網(wǎng)絡(luò)時巫财,同時更新判別分布(D,藍色虛線)使D能區(qū)分數(shù)據(jù)生成分布Px(黑色虛線)中的樣本和生成分布Pg (G哩陕,綠色實線) 中的樣本平项。下面的水平線為均勻采樣z的區(qū)域赫舒,上面的水平線為x的部分區(qū)域。朝上的箭頭顯示映射x=G(z)如何將非均勻分布Pg作用在轉(zhuǎn)換后的樣本上闽瓢。G在Pg高密度區(qū)域收縮号阿,且在Pg的低密度區(qū)域擴散。(a)考慮一個接近收斂的對抗的模型對:Pg與Pdata相似鸳粉,且D是個部分準確的分類器。(b)算法的內(nèi)循環(huán)中园担,訓(xùn)練D來判別數(shù)據(jù)中的樣本届谈,收斂到:D?(x)=Pdata(x) /(Pdata(x)+Pg(x))。(c)在G的1次更新后弯汰,D的梯度引導(dǎo)G(z)流向更可能分類為數(shù)據(jù)的區(qū)域艰山。(d)訓(xùn)練若干步后,如果G和D性能足夠咏闪,它們接近某個穩(wěn)定點并都無法繼續(xù)提高性能曙搬,因為此時Pg=Pdata。判別器將無法區(qū)分訓(xùn)練數(shù)據(jù)分布和生成數(shù)據(jù)分布鸽嫂,即D(x)=1/2纵装。
如上圖所示,生成對抗網(wǎng)絡(luò)會訓(xùn)練并更新判別分布(即 D据某,藍色的虛線)橡娄,更新判別器后就能將數(shù)據(jù)真實分布(黑點組成的線)從生成分布 P_g(G)(綠色實線)中判別出來。下方的水平線代表采樣域 Z癣籽,其中等距線表示 Z 中的樣本為均勻分布挽唉,上方的水平線代表真實數(shù)據(jù) X 中的一部分。向上的箭頭表示映射 x=G(z) 如何對噪聲樣本(均勻采樣)施加一個不均勻的分布 P_g筷狼。(a)考慮在收斂點附近的對抗訓(xùn)練:P_g 和 P_data 已經(jīng)十分相似瓶籽,D 是一個局部準確的分類器。(b)在算法內(nèi)部循環(huán)中訓(xùn)練 D 以從數(shù)據(jù)中判別出真實樣本埂材,該循環(huán)最終會收斂到 D(x)=p_data(x)/(p_data(x)+p_g(x))塑顺。(c)隨后固定判別器并訓(xùn)練生成器,在更新 G 之后楞遏,D 的梯度會引導(dǎo) G(z)流向更可能被 D 分類為真實數(shù)據(jù)的方向茬暇。(d)經(jīng)過若干次訓(xùn)練后,如果 G 和 D 有足夠的復(fù)雜度寡喝,那么它們就會到達一個均衡點糙俗。這個時候 p_g=p_data,即生成器的概率密度函數(shù)等于真實數(shù)據(jù)的概率密度函數(shù)预鬓,也即生成的數(shù)據(jù)和真實數(shù)據(jù)是一樣的巧骚。在均衡點上 D 和 G 都不能得到進一步提升赊颠,并且判別器無法判斷數(shù)據(jù)到底是來自真實樣本還是偽造的數(shù)據(jù),即 D(x)= 1/2劈彪。
上圖表明的是GAN的生成網(wǎng)絡(luò)如何一步步從均勻分布學(xué)習(xí)到正太分布的竣蹦。
黑色的點狀線代表真實的數(shù)據(jù)分布,綠色的線代表生成模型G模擬的分布沧奴,藍色的線代表判別模型D痘括。
a圖表示初始狀態(tài)
b圖表示,保持G不動滔吠,優(yōu)化D纲菌,直到判別模型的準確率最高
c圖表示保持D不動,優(yōu)化G疮绷,直到混淆程度最高
d圖表示翰舌,多次迭代后,終于使得G生成的數(shù)據(jù)分布能夠完全與真實的數(shù)據(jù)分布一致冬骚,而D再也鑒別不出是原始數(shù)據(jù)還是由生成模型所產(chǎn)生的數(shù)據(jù)椅贱,從而認為G就是真實的。
(解釋:
------?the discriminative distribution (D, blue, dashed line) 藍色的虛線 表示判別式的分布 只冻;?
------ the data generating distribution (black, dotted line)?pxpx?黑色的點線 表示 數(shù)據(jù)產(chǎn)生的分布 庇麦;
------ the generative distribution?pg(G)pg(G)?綠色的實線 。
------ the lower horizontal line is the domain from which z is sampled . 底部的水平線 是采樣 z 的 domain??
------ the horizontal line above is part of the domain of x . ? 上部的水平線 是 x domain 的部分 属愤。
------ the upward arrows show the mapping x = G(z) imposes the non-uniform distribution?pgpg?on transformed samples. 向上的箭頭展示了 mapping x = G(z)女器,這個映射是非均勻分布 到 轉(zhuǎn)換的samples。
(a)考慮一個接近收斂的 對抗 pair住诸。pgpg?和?pdatapdata?相似驾胆;D 是一個有一定準確性的 classifier。?
(b)在算法 D 的內(nèi)部循環(huán)被訓(xùn)練用來 從數(shù)據(jù)中判斷出 samples贱呐,收斂到?D?(x)=pdata(x)pdata(x)+pg(x)D?(x)=pdata(x)pdata(x)+pg(x)?丧诺。
(c)在更新 G 之后,D 的梯度已經(jīng)引導(dǎo) G(z) to flow to regions that are more likely to be classified as data.?
(d)在幾次訓(xùn)練之后奄薇,如果 G 和 D 有足夠的能力驳阎,他們會達到一個平衡,使得兩者都已經(jīng)無法進一步的提升自我馁蒂,即:pg=pdatapg=pdata?呵晚。這個時候,discriminator 已經(jīng)無法判別兩個分布的區(qū)別沫屡,也就是說饵隙,此時的 D(x) = 1/2 。
)
4.理論結(jié)果
理論完美的生成器
該算法的目標是令生成器生成與真實數(shù)據(jù)幾乎沒有區(qū)別的樣本沮脖,即一個造假一流的 A金矛,就是我們想要的生成模型芯急。數(shù)學(xué)上,即將隨機變量生成為某一種概率分布驶俊,也可以說概率密度函數(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 指代取期望购披。這一項是根據(jù)「正類」(即辨別出 x 屬于真實數(shù)據(jù) data)的對數(shù)損失函數(shù)而構(gòu)建的。最大化這一項相當于令判別器 D 在 x 服從于 data 的概率密度時能準確地預(yù)測 D(x)=1肩榕,即:
另外一項是企圖欺騙判別器的生成器 G刚陡。該項根據(jù)「負類」的對數(shù)損失函數(shù)而構(gòu)建,即:
因為 x<1 的對數(shù)為負株汉,那么如果最大化該項的值筐乳,則需要令均值 D(G(z))≈0,因此 G 并沒有欺騙 D乔妈。為了結(jié)合這兩個概念蝙云,判別器的目標為最大化:
給定生成器 G,其代表了判別器 D 正確地識別了真實和偽造數(shù)據(jù)點路召。給定一個生成器 G勃刨,上式所得出來的最優(yōu)判別器可以表示為?
(下文用 D_G*表示)。定義價值函數(shù)為:
然后我們可以將最優(yōu)化問題表述為:
現(xiàn)在 G 的目標已經(jīng)相反了股淡,當 D=D_G*時身隐,最優(yōu)的 G 為最小化前面的等式。在論文中唯灵,作者更喜歡求解最優(yōu)化價值函的 G 和 D 以求解極小極大博弈:
對于 D 而言要盡量使公式最大化(識別能力強)贾铝,而對于 G 又想使之最小(生成的數(shù)據(jù)接近實際數(shù)據(jù))埠帕。整個訓(xùn)練是一個迭代過程垢揩。其實極小極大化博弈可以分開理解,即在給定 G 的情況下先最大化 V(D,G) 而取 D敛瓷,然后固定 D叁巨,并最小化 V(D,G) 而得到 G。其中琐驴,給定 G俘种,最大化 V(D,G) 評估了 P_G 和 P_data 之間的差異或距離秤标。
最后,我們可以將最優(yōu)化問題表達為:
上文給出了 GAN 概念和優(yōu)化過程的形式化表達宙刘。通過這些表達苍姜,我們可以理解整個生成對抗網(wǎng)絡(luò)的基本過程與優(yōu)化方法。當然悬包,有了這些概念我們完全可以直接在 GitHub 上找一段 GAN 代碼稍加修改并很好地運行它衙猪。但如果我們希望更加透徹地理解 GAN,更加全面地理解實現(xiàn)代碼布近,那么我們還需要知道很多推導(dǎo)過程垫释。比如什么時候 D 能令價值函數(shù) V(D,G) 取最大值、G 能令 V(D,G) 取最小值撑瞧,而 D 和 G 該用什么樣的神經(jīng)網(wǎng)絡(luò)(或函數(shù))棵譬,它們的損失函數(shù)又需要用什么等等≡に牛總之订咸,還有很多理論細節(jié)與推導(dǎo)過程需要我們進一步挖掘。
原翻譯:當z~Pz時酬诀,獲得樣本G(z)脏嚷,生成器G隱式的定義概率分布Pg為G(z)獲得的樣本的分布。因此瞒御,如果模型容量和訓(xùn)練時間足夠大時父叙,我們希望算法1收斂為Pdata的良好估計量。本節(jié)的結(jié)果是在非參數(shù)設(shè)置下完成的肴裙,例如趾唱,我們通過研究概率密度函數(shù)空間中的收斂來表示具有無限容量的模型猫牡。
我們將在4.1節(jié)中顯示父晶,這個極小極大問題的全局最優(yōu)解為Pg=Pdata。我們將在4.2節(jié)中展示使用算法1來優(yōu)化等式1镊绪,從而獲得期望的結(jié)果阻肩。
//minibatch見https://blog.csdn.net/tealex/article/details/78804360
算法1.生成對抗網(wǎng)絡(luò)的minibatch隨機梯度下降訓(xùn)練带欢。判別器的訓(xùn)練步數(shù),k是一個超參數(shù)烤惊。在我們的試驗中使用k=1乔煞,使消耗最小。
重述訓(xùn)練過程
下面是推導(dǎo)的最后一步柒室,我們會重述整個參數(shù)優(yōu)化過程渡贾,并簡要介紹實際訓(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) 實際上與分布 P_data(x) 和 P_G(x) 之間的 JS 散度只差了一個常數(shù)項。因此這樣一個循環(huán)對抗的過程就能表述為:
給定 G_0铣鹏,最大化 V(G_0,D) 以求得 D_0*敷扫,即 max[JSD(P_data(x)||P_G0(x)];
固定 D_0*诚卸,計算θ_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*脊髓,計算θ_G2 ← θ_G1 ?η(dV(G,D_0*) /dθ_G) 以求得更新后的 G_2辫愉;
。将硝。恭朗。
2.實際訓(xùn)練過程
根據(jù)前面價值函數(shù) V(G,D) 的定義,我們需要求兩個數(shù)學(xué)期望依疼,即 E[log(D(x))] 和 E[log(1-D(G(z)))]痰腮,其中 x 服從真實數(shù)據(jù)分布,z 服從初始化分布律罢。但在實踐中膀值,我們是沒有辦法利用積分求這兩個數(shù)學(xué)期望的,所以一般我們能從無窮的真實數(shù)據(jù)和無窮的生成器中做采樣以逼近真實的數(shù)學(xué)期望误辑。
若現(xiàn)在給定生成器 G沧踏,并希望計算 maxV(G,D) 以求得判別器 D,那么我們首先需要從 P_data(x) 采樣 m 個樣本 {x^1,x^2,…,x^m}巾钉,從生成器 P_G(x) 采樣 m 個樣本?
翘狱。因此最大化價值函數(shù) V(G,D) 就可以使用以下表達式近似替代:
若我們需要計算上述的極大化過程,可以采用等價形式的訓(xùn)練方法砰苍。若我們有一個二元分類器 D(參數(shù)為 θ_d)潦匈,當然該分類器可以是深度神經(jīng)網(wǎng)絡(luò)阱高,那么極大化過程的輸出就為該分類器 D(x)。現(xiàn)在我們從 P_data(x) 抽取樣本作為正樣本茬缩,從 P_G(x) 抽取樣本作為負樣本赤惊,同時將逼近負 V(G,D) 的函數(shù)作為損失函數(shù),因此我們就將其表述為一個標準的二元分類器的訓(xùn)練過程:
在實踐中寒屯,我們必須使用迭代和數(shù)值計算的方法實現(xiàn)極小極大化博弈過程荐捻。在訓(xùn)練的內(nèi)部循環(huán)中完整地優(yōu)化 D 在計算上是不允許的,并且有限的數(shù)據(jù)集也會導(dǎo)致過擬合寡夹。因此我們可以在 k 個優(yōu)化 D 的步驟和一個優(yōu)化 G 的步驟間交替進行处面。那么我們只需慢慢地更新 G,D 就會一直處于最優(yōu)解的附近菩掏,這種策略類似于 SML/PCD 訓(xùn)練的方式魂角。
綜上,我們可以描述整個訓(xùn)練過程智绸,對于每一次迭代:
從真實數(shù)據(jù)分布 P_data 抽取 m 個樣本
從先驗分布 P_prior(z) 抽取 m 個噪聲樣本
將噪聲樣本投入 G 而生成數(shù)據(jù)
野揪,通過最大化 V 的近似而更新判別器參數(shù)θ_d,即極大化?
瞧栗,且判別器參數(shù)的更新迭代式為?
以上是學(xué)習(xí)判別器 D 的過程斯稳。因為學(xué)習(xí) D 的過程是計算 JS 散度的過程,并且我們希望能最大化價值函數(shù)迹恐,所以該步驟會重復(fù) k 次挣惰。
從先驗分布 P_prior(z) 中抽取另外 m 個噪聲樣本 {z^1,...,z^m}
通過極小化 V^tilde 而更新生成器參數(shù)θ_g,即極大化?
殴边,且生成器參數(shù)的更新迭代式為?
以上是學(xué)習(xí)生成器參數(shù)的過程憎茂,這一過程在一次迭代中只會進行一次,因此可以避免更新太多而令 JS 散度上升锤岸。
4.1全局最優(yōu):Pg=Pdata
首先任意給定生成器G竖幔,考慮最優(yōu)判別器D。
命題1.固定G是偷,最優(yōu)判別器D為:
公式2
證明.給定任意生成器G拳氢,判別器D的訓(xùn)練標準為最大化目標函數(shù)V(G,D)數(shù)量
//這里的推導(dǎo)存在的問題
下面,我們必須證明該最優(yōu)化問題有唯一解 G*蛋铆,并且該唯一解滿足 P_G=P_data饿幅。不過在開始推導(dǎo)最優(yōu)判別器和最優(yōu)生成器之前,我們需要了解 Scott Rome 對原論文推導(dǎo)的觀點戒职,他認為原論文忽略了可逆條件栗恩,因此最優(yōu)解的推導(dǎo)不夠完美。
在 GAN 原論文中,有一個思想和其它很多方法都不同磕秤,即生成器 G 不需要滿足可逆條件乳乌。Scott Rome 認為這一點非常重要,因為實踐中 G 就是不可逆的市咆。而很多證明筆記都忽略了這一點汉操,他們在證明時錯誤地使用了積分換元公式,而積分換元卻又恰好基于 G 的可逆條件蒙兰。Scott 認為證明只能基于以下等式的成立性:
該等式來源于測度論中的 Radon-Nikodym 定理磷瘤,它展示在原論文的命題 1 中,并且表達為以下等式:
我們看到該講義使用了積分換元公式搜变,但進行積分換元就必須計算 G^(-1)采缚,而 G 的逆卻并沒有假定為存在。并且在神經(jīng)網(wǎng)絡(luò)的實踐中挠他,它也并不存在扳抽。可能這個方法在機器學(xué)習(xí)和統(tǒng)計學(xué)文獻中太常見了殖侵,因此我們忽略了它贸呢。
公式3
對于任意的(a,b)∈R^2?{0,0},函數(shù)y→alog(y)+blog(1?y)在[0,1]中的a/(a+b) 處達到最大值拢军。無需在Supp(Pdata)∪Supp(Pg)外定義判別器楞陷,證畢。
注意到茉唉,判別器D的訓(xùn)練目標可以看作為條件概率P(Y=y|x)的最大似然估計固蛾,當y=1時,x來自于Pdata赌渣;當y=0時,x來自Pg昌犹。公式1中的極小化極大問題可以變形為:
公式4
定理1.當且僅當Pg=Pdata時坚芜,C(G)達到全局最小。此時斜姥,C(G)的值為?log4鸿竖。
證明.Pg=Pdata時,D?G(x)=1/2(公式2)铸敏。再根據(jù)公式4可得缚忧,當D?G(x)=1/2時,C(G)=log1/2+log1/2=?log4杈笔。為了看僅當Pg=Pdata時C(G)是否是最優(yōu)的闪水,觀測:
然后從C(G)=V(D?G,G)減去上式,可得:
公式5
其中KL為Kullback–Leibler散度蒙具。我們在之前的表達式中識別出了模型分布和數(shù)據(jù)生成過程之間的Jensen–Shannon散度:
公式6
由于兩個分布之間的Jensen–Shannon散度總是非負的球榆,并且當兩個分布相等時朽肥,值為0。因此C?=?log(4)為C(G)的全局極小值持钉,并且唯一解為Pg=Pdata衡招,即生成模型能夠完美的復(fù)制數(shù)據(jù)的生成過程。
4.2算法1的收斂性
現(xiàn)在每强,該論文的主要部分已經(jīng)得到了證明:即 P_G=P_data 為 maxV(G,D) 的最優(yōu)點始腾。此外,原論文還有額外的證明表示:給定足夠的訓(xùn)練數(shù)據(jù)和正確的環(huán)境空执,訓(xùn)練過程將收斂到最優(yōu) G浪箭。
命題2.如果G和D有足夠的性能,對于算法1中的每一步脆烟,給定G時山林,判別器能夠達到其最優(yōu),并且通過更新Pg來提高這個判別準則邢羔,則Pg收斂于Pdata驼抹。(指最后能得到想要的結(jié)果)
實際上,對抗網(wǎng)絡(luò)通過函數(shù)G(z;θg)表示一個有限的Pg分布族拜鹤,我們優(yōu)化θg而不是Pg本身框冀。使用多層感知器來定義G引入?yún)?shù)空間中的多個關(guān)鍵點。然而敏簿,多層感知器在實踐中的優(yōu)異表現(xiàn)表明明也,盡管缺乏理論保證,它們?nèi)允且粋€合理的可用模型惯裕。
5.實驗
我們在一系列包括MNIST温数、多倫多面孔數(shù)據(jù)庫(TFD)和CIFAR-10的數(shù)據(jù)集上來訓(xùn)練對抗網(wǎng)絡(luò)。生成器網(wǎng)絡(luò)使用的激活函數(shù)包括修正線性激活(ReLU)和sigmoid 激活蜻势,而判別器網(wǎng)絡(luò)使用maxout激活撑刺。Dropout被用于訓(xùn)練判別器網(wǎng)絡(luò)。雖然我們的理論框架可以在生成器的中間層使用dropout和其他噪聲握玛,但是這里僅在生成器網(wǎng)絡(luò)的最底層使用噪聲輸入够傍。
我們通過對G生成的樣本應(yīng)用高斯Parzen窗口并計算此分布下的對數(shù)似然,來估計測試集數(shù)據(jù)的概率挠铲。高斯的σ參數(shù)通過對驗證集的交叉驗證獲得冕屯。Breuleux等人引入該過程且用于不同的精確似然難以處理的生成模型上。結(jié)果顯示在表1中拂苹。該方法估計似然的方差較大且在高維空間中表現(xiàn)不好安聘,但據(jù)我們所知卻是目前最有效的辦法。生成模型的優(yōu)點是可采樣而不直接估計似然,從而促進了對如何評估該模型的進一步研究搞挣。
表1:基于Parzen窗口的對數(shù)似然估計带迟。MNIST上報告的數(shù)字是測試集上的平均對數(shù)似然以及在樣本上平均計算的標準誤差。在TFD上囱桨,我們計算數(shù)據(jù)集的不同折之間的標準誤差仓犬,在每個折的驗證集上選擇不同的σ。在TFD上舍肠,在每一個折上對σ進行交叉驗證并計算平均對數(shù)似然函數(shù)搀继。對于MNIST,我們與真實值(而不是二進制)版本的數(shù)據(jù)集的其他模型進行比較翠语。
訓(xùn)練后的生成樣本如下圖2叽躯、圖3所示。雖然未聲明該方法生成的樣本優(yōu)于其它方法生成的樣本肌括,但我們相信這些樣本至少和文獻中更好的生成模型相比依然具有競爭力点骑,也突出了對抗框架的潛力。
圖2:來自模型的樣本可視化谍夭。最右邊的列示出了相鄰樣本的最近訓(xùn)練示例黑滴,以便證明該模型沒有記住訓(xùn)練集。樣本是完全隨機抽取紧索,而并非精心挑選的袁辈。與其他大多數(shù)深度生成模型的可視化不同,這些圖像顯示來自模型分布的實際樣本珠漂,not conditional means given samples of hidden units.此外晚缩,這些樣本是不相關(guān)的,因為媳危,采樣過程并不依賴馬爾科夫鏈混合荞彼。a) MNIST;b) TFD待笑;c) CIFAR-10(全連接模型)鸣皂;d) CIFAR-10(卷積判別器和“解卷積”生成器)
圖3:通過在完整模型的z空間的坐標之間進行線性內(nèi)插獲得的數(shù)字。
6.優(yōu)點和缺點
這個新框架相比以前的建淖叹酰框架有其優(yōu)缺點签夭。缺點主要是Pg(x)的隱式表示齐邦,而且在訓(xùn)練期間椎侠,D和G必須很好地同步(特別地,不更新D時G不必過度訓(xùn)練措拇,為避免“Helvetica情景”我纪。否則,x值相同時 G丟失過多z值 以至于模型Pdata多樣性不足,正如玻爾茲曼機的負向鏈在學(xué)習(xí)步驟間的必須持續(xù)不斷地更新浅悉。其優(yōu)點是無需馬爾科夫鏈趟据,僅用反向傳播來獲得梯度,學(xué)習(xí)間無需推理术健,且模型中可融入多種函數(shù)汹碱。表2總結(jié)了生成對抗網(wǎng)絡(luò)與其他生成建模方法的比較。
表2:生成建模中的挑戰(zhàn):對涉及模型的每個主要操作的深度生成建模的不同方法遇到的困難的總結(jié)荞估。
7.結(jié)論與未來工作
該框架允許許多直接的擴展:
1.條件生成模型p(x∣c)可以通過將c作為G和D的輸入來獲得咳促。
2.給定x,可以通過訓(xùn)練一個輔助網(wǎng)絡(luò)來學(xué)習(xí)近似推理以預(yù)測z勘伺。這和wake-sleep算法訓(xùn)練出的推理網(wǎng)絡(luò)類似跪腹,但是它具有一個優(yōu)勢,就是在生成器網(wǎng)絡(luò)訓(xùn)練完成后飞醉,這個推理網(wǎng)絡(luò)可以針對固定的生成器網(wǎng)絡(luò)進行訓(xùn)練冲茸。
3.能夠用來近似模擬所有的條件概率p(xS∣xS?),其中S是通過訓(xùn)練共享參數(shù)的條件模型簇的關(guān)于x索引的一個子集缅帘。本質(zhì)上轴术,可以使用生成對抗網(wǎng)絡(luò)來隨機拓展確定的MP-DBM。
4.半監(jiān)督學(xué)習(xí):當標簽數(shù)據(jù)有限時股毫,判別網(wǎng)絡(luò)或推理網(wǎng)絡(luò)的特征會提高分類器效果膳音。
5.效率改善:為協(xié)調(diào)G和D設(shè)計更好的方法或訓(xùn)練期間確定更好的分布來采樣z,能夠極大的加速訓(xùn)練铃诬。
本文已經(jīng)展示了對抗建募老荩框架的可行性,表明這些研究方向是有用的趣席。
//如今衍生的不同的GAN:https://www.cnblogs.com/shouhuxianjian/p/7795115.html