矩阵的二范数_【专题】GAN(二)—— 目标函数的优化
生活随笔
收集整理的這篇文章主要介紹了
矩阵的二范数_【专题】GAN(二)—— 目标函数的优化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
編寫:果殼屋在第一篇我們了解到,原生的 GAN 采用零和博弈(zero-sum game)的策略,這會導(dǎo)致在訓(xùn)練初期生成器的臨梯度消失(gradient vanishing),訓(xùn)練停止。如果將零和博弈改為非飽和博弈,這雖然能夠解決梯度消失的問題,但會導(dǎo)致訓(xùn)練不穩(wěn)定(instable)。為了解決這兩個問題,許多研究者對目標(biāo)函數(shù)的優(yōu)化做了不同的嘗試。上一篇中,我們已經(jīng)了解到 GAN 的目標(biāo)函數(shù)等價于 JS 散度(JS divergence),那我們下面就先從散度的角度重新認(rèn)識一下 GAN,然后再介紹對目標(biāo)函數(shù)的優(yōu)化策略。f-GANf-GAN 又稱為 f-divergence GAN,其中 f-divergence(f 散度)是各類散度(divergences)的通稱,定義為:其中 p 和 q 都是連續(xù)密度函數(shù),f 是一個凸下半連續(xù)函數(shù)(凸下半連續(xù)函數(shù)例如 圖1所示)。f 滿足?,這保證了當(dāng) p 等于 q 時,它們的散度??為零。當(dāng)??時,f-divergence 為 KL 散度,而當(dāng)??時,f 散度為 JS 散度(如 表1所示)。從上一篇的 式(5)我們知道,原生的 GAN 的目標(biāo)函數(shù)是 JS 散度的近似,所以原生的 GAN 實際上屬于 f-GAN 的特例。(表1、2,來自:f-GAN training generative neural samplers using variational divergence minimization,Nowozin)(圖1,來自百度)f-GAN 的目標(biāo)函數(shù)可以統(tǒng)一表示為:其中 D 和 G 分別為判別器和生成器,?為函數(shù) f 的凸共軛函數(shù)(convex conjugate function)或者稱 Frenchel conjugate,定義為:其中??表示上確界或最小上界(supremum),也就是集合 {·} 中的所有值的上邊界,這個上邊界可能包含在集合 {·} 中,也可能不在 {·} 中。就是上確界不包含于集合中的例子。?為函數(shù) f 的定義域,或者說 u 的取值范圍。不同散度對應(yīng)的 ?如 表2中所示。函數(shù) f 之所以有 Frenchel 共軛,是因為它是凸下半連續(xù)函數(shù)(在這里不做證明,有興趣可以自己找答案)。另外,?也是凸下半連續(xù)函數(shù),且與 f 互為共軛,。因此:將 式(3)帶入 (1),得到 f 散度的下界(lower bound):(4)是 f 散度的下界(小于等于?),原因是:1)根據(jù) Jensen’s 不等式(Jensen’s inequality),在交換積分和求上確界的順序時,得到的值小于等于原值;2)函數(shù)集 T 可能只是所有可能函數(shù)的子集(subset),取不到最優(yōu)函數(shù)。另外,當(dāng) p 被替換為?,q 替換為?,并且令變分函數(shù)(variational function)t 為 D,我們就將 (4)轉(zhuǎn)換為 f-GAN 的目標(biāo)函數(shù)?(2)。也就是說,f-GAN 的目標(biāo)函數(shù)是f散度的估計。根據(jù) 論文 [1],最優(yōu)的 D 為:時,下界 (4)越接近 f 散度,或者說 f-GAN 的目標(biāo)函數(shù)越接近 f 散度(注意,?表示最優(yōu)的 t,而 ?表示 f 的共軛函數(shù),?表示 f 的導(dǎo)數(shù))。對于原生的 GAN 來說,?就是第一篇中推導(dǎo)出的 (4):因為 f 散度是 f-GAN 目標(biāo)函數(shù)的上確界,最大化 f-GAN 的目標(biāo)函數(shù)(優(yōu)化判別器)是使目標(biāo)函數(shù)接近 f 散度,最小化 f-GAN 的目標(biāo)函數(shù)(優(yōu)化生成器)實際上是減小 f 散度。當(dāng) f 散度趨近于 0 時,生成數(shù)據(jù)的分布趨近于真實數(shù)據(jù)。WGANWGAN,又稱為 Wasserstein GAN,是 GAN 的 IPM(Integral Probability Metric)類的模型。IPM 類的模型會用一個函數(shù)來衡量兩個分布的差異,在 WGAN 中,這個函數(shù)是 EM 距離(Earth-Mover distance/Wasserstein-1,推土機(jī)距離)。EM ?距離的定義如下:其中??是下確界或最大下界(infimum),與 ?相反。例如,對于不包含下確界的集合,。x 和??的分布分別為 ?和 ?它們的聯(lián)合分布(joint distribution)為?,?是這些聯(lián)合分布的集合,也就是所有可能的聯(lián)合分布組成的集。當(dāng)生成數(shù)據(jù) ?越接近真實數(shù)據(jù) x 時,EM 距離越小,而優(yōu)化判別器則是使 EM 距離最大化。但是 EM 距離中的? 的不能直接計算,因為我們不知道 ?和 ,不能求出聯(lián)合分布 。為了得到 EM 距離,我們需要對式子 (5)做一些轉(zhuǎn)換。利用 Kantorovish-Rubistein 對偶(duality),上面的式子可以轉(zhuǎn)換為:其中??表示函數(shù) f 必須滿足 1-Lipschitz 約束。Lipschitz 約束(constraint)的定義是:當(dāng)??時,k-Lipschitz 約束為 1-Lipschitz。這一約束保證對于相鄰的兩點??和?,函數(shù)值 f 不會劇烈波動,或者說函數(shù) f 對數(shù)據(jù)不會過度敏感。對 EM 距離 (6)做一些變化,我們就得到了 WGAN 的目標(biāo)函數(shù):式(7)中的 f 是 critic。不同于執(zhí)行二分類任務(wù)的判別器 D,f 可以是滿足 1-Lipschitz 約束的任意函數(shù),它的輸出值沒有限制,所以可以認(rèn)為它是一個回歸模型。當(dāng)生成的數(shù)據(jù)??時,。EM 距離相對于 JS 散度和 KL 散度的優(yōu)勢是,它對沒有重疊的兩個分布的差異也能夠進(jìn)行衡量,或者說 EM 距離衡量的就是任意兩個分布的差異。這樣一個優(yōu)勢,使得WGAN 不會出現(xiàn)生成器梯度消失的問題?;?JS 散度的 GAN 之所以會遇到梯度消失的情況,可以認(rèn)為是因為 JS 散度無法處理不重疊的兩個分布。根據(jù)在第一篇中推導(dǎo)得到的式子 (5),在判別器取到最優(yōu)時,生成器的目標(biāo)函數(shù)等價于 JS 散度:其中??和??的取值有四種情況,分別是:,,,,當(dāng)??時,生成器的目標(biāo)函數(shù) (8)變成:當(dāng)??時, (8)變成,而常數(shù)的導(dǎo)數(shù)為 0:當(dāng) ?和 ?都為零時:(9)、(10)和 (11)都是常數(shù),而常數(shù)的導(dǎo)數(shù)為 0,此時生成器 G 停止優(yōu)化。當(dāng)??和 ?都不為 0 時,也就是說數(shù)據(jù) x 同時存在于 ?和 ,?和 ?出現(xiàn)重疊。但是在訓(xùn)練初期,這種情況的概率很低,就像二維平面中的兩條線,它們重疊的部分很小,甚至沒有重疊。所以基于 JS 散度的 GAN 在訓(xùn)練初期,很容易出現(xiàn)梯度消失。除了避免梯度消失外,WGAN 的訓(xùn)練也很穩(wěn)定,不會發(fā)生模式坍塌(mode collapse),因為 EM 距離就是在衡量兩個分布的差異,訓(xùn)練生成器就是使 EM 距離變小,不存在同時變大又變小的情況。參數(shù)約束WGAN 的目標(biāo)函數(shù)中的函數(shù) f 可以通過神經(jīng)網(wǎng)絡(luò)模型來估計。假設(shè)模型的每一層的激活函數(shù)(activation function)的輸出為?,其中??為激活函數(shù),W 和 b 為模型參數(shù),使這一層滿足 Lipschtz 約束(Lipschitz constraint):根據(jù)泰勒展式:近似?:其中 ?為 f 的一階導(dǎo),,?為求絕對值,將 f 替換為 a,得到:根據(jù) (12),要使 k 盡可能小,需要??和 W 的絕對值盡可能小。因為在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù) a 的導(dǎo)數(shù)的絕對值基本上都小于或等于 1(例如 ReLU 在??時導(dǎo)數(shù)都為 1)。假設(shè)激活函數(shù)的導(dǎo)數(shù)為 1,那么要使這一層滿足 1-Lipschitz 約束,只需要約束參數(shù) W:參數(shù)裁剪為了使 f 對數(shù)據(jù)點 x 滿足 1-Lipschitz 約束,WGAN [2]?的作者采用參數(shù)裁剪(weight clipping)的方法來約束參數(shù)的范圍。參數(shù)裁剪方法是設(shè)置閾值 c,使 f 的參數(shù)落在區(qū)間 [-c,c] 的方法。雖然這種方法能夠約束 f,但用這種方法訓(xùn)練出來的模型過于簡單,能力較差。另外,論文[3]中的實驗顯示,采用參數(shù)裁剪的方法,模型的訓(xùn)練比較耗時。除裁剪之外,其他對參數(shù)進(jìn)行約束的方法有:參數(shù)歸一化(weight normalization)、譜歸一化(spectral normalization)等。參數(shù)歸一化參數(shù)歸一化的方法是受到批歸一化(Batch Normalization,BN)的啟發(fā)而設(shè)計的。批歸一化方法對神經(jīng)網(wǎng)絡(luò)每一層的輸入做歸一化,使?——這里是某一批(minibatch)數(shù)據(jù) x 的均值,而??是它們的標(biāo)準(zhǔn)差。參數(shù)歸一化是采用重參數(shù)技巧(reparameterization trick),將 W 用新的參數(shù) V 和 g 替換:其中 V 和 W 一樣都是參數(shù)矩陣。在這里我們所做的參數(shù)歸一化是將 W 替換為?:從 (14)可以發(fā)現(xiàn),參數(shù)歸一化等價于 Frobenius 歸一化,其中??為 Frobenius 范數(shù)(Frobenius norm)。如果不是用歸一化的方式,而是用正則化(regularization)的方式來約束參數(shù)的話,那么目標(biāo)函數(shù)則是:從形式上來說,上面的式子與 L2 正則化相似。L2 正則化是對向量做處理,而 Frobenius 正則是處理矩陣,但 L2 實際上也是使模型的參數(shù)對數(shù)據(jù)的敏感度降低,使模型泛化能力更強(qiáng)。另外,正則化相比歸一化,它不需要對每個參數(shù)進(jìn)行重新計算。譜歸一化譜范數(shù)(spectral norm)的定義是:?等于矩陣 W 的最大特征值(maximum singular value),它可以通過冪迭代(power iteration)的方式計算出來。對 (15)做一些調(diào)整:如果將 x 替換為?:結(jié)合 (13)和 (16),發(fā)現(xiàn)譜范數(shù)能更準(zhǔn)確地反映 Lipschitz 約束中的 k。如果將參數(shù)矩陣 W 除以譜范數(shù)?,就可以使 k 等于 1。這就是譜歸一化,參數(shù)歸一化得到的是它的上界(upper bound):對于多層網(wǎng)絡(luò)結(jié)構(gòu):只要通過譜歸一化,用??替換每一層的?,就可以使整個模型?。如果用正則化代替歸一化,那就是譜正則化(spectral norm regularization)。它就是將參數(shù)的譜范數(shù)作為正則化項加入目標(biāo)函數(shù),約束參數(shù)的范圍。梯度約束除了對參數(shù)進(jìn)行約束,還可以直接對梯度進(jìn)行約束,因為 1-Lipschitz 約束為:對梯度進(jìn)行約束的方法有 WGAN-GP 模型,其中 GP 代表梯度懲罰(Gradient Penalty)。在梯度懲罰中,為了使梯度趨向于 1,將梯度設(shè)置成正則項,將其添加到WGAN的目標(biāo)函數(shù)后面:其中右邊前兩項為 WGAN 的目標(biāo)函數(shù),第三項為正則項,超參數(shù)??控制懲罰對目標(biāo)函數(shù)的影響。?是函數(shù) f 的梯度/一階導(dǎo)。?通過采樣得到:其中??為生成的數(shù)據(jù),x 為真實數(shù)據(jù),?是 [0, 1] 區(qū)間內(nèi)的隨機(jī)數(shù)。根據(jù) 論文[4] 的作者分析,梯度懲罰有兩個缺點:1)?依賴于生成模型生成的數(shù)據(jù)的分布,而這一分布在訓(xùn)練時不斷地變化,這會導(dǎo)致訓(xùn)練不穩(wěn)定,這一現(xiàn)象在學(xué)習(xí)率較大時比較明顯;2)求導(dǎo)? 要參與前向傳播(forward propagation)和后向傳播(backword propagation),因而計算量較大。(WGAN 系模型,來自https://www.bbsmax.com/A/kPzOZ8V3dx/)LS-GANLS-GAN 又稱 loss sensitive GAN,和 WGAN 一樣,也是基于 Lipschitz 約束的 GAN 模型。事實上,WGAN 可以被認(rèn)為是 LS-GAN 的一種特例。LS-GAN 中的 loss 是一個函數(shù),或者 loss 模型,和判別器或者 WGAN 中的 critic 類似。Loss 函數(shù)的工作是給真實數(shù)據(jù)一個較低的評分(loss),給生成的數(shù)據(jù)較高的loss 值。另外,loss 函數(shù)要滿足下面的約束:其中??是以??為參數(shù)的 loss 函數(shù),G 是生成器,z ?是噪音變量,與原生的 GAN 中的 z 相同。這個約束其實就是 1-Lipschitz 約束。因為上面的約束過于嚴(yán)苛,所以 LS-GAN 中引入了非負(fù)的松弛變量?。這樣,帶約束的目標(biāo)函數(shù)變成:最小化 (18)等號右邊第一項等于使真實數(shù)據(jù)得到較小的 loss 值,因為??可以衡量生成的數(shù)據(jù)使得違反約束 (17)的程度,所以最小化等號右邊第二項等于使生成的數(shù)據(jù)盡可能滿足 1-Lipschitz 約束。把 (18)中所有的約束帶 (18)中的目標(biāo)函數(shù),得到:?是一個鉸鏈損失函數(shù)(hinge loss)。對于最優(yōu) loss 模型?,生成器 G 的目標(biāo)是使生成的數(shù)據(jù)的 loss 值也和真實數(shù)據(jù)一樣小,它的目標(biāo)函數(shù)是:因為不知道具體的??和?,所以上面的目標(biāo)函數(shù)要通過采樣估計:對此 LS-GAN [5]的作者分析了需要多少數(shù)據(jù)才能使估計值接近目標(biāo)函數(shù)真實值。分析結(jié)果顯示,所需的數(shù)據(jù)量與模型的復(fù)雜度以及 Lipschitz 常數(shù) k 有關(guān)。因此,論文作者建議通過梯度懲罰,使 loss 模型 L 和生成器 G 的 k-Lipschitz 的 k 盡可能小。另外,論文[5]作者還論證了 LS-GAN 和 WGAN 都屬于 GLS-GAN 的特例,而GLS-GAN 是 LS-GAN 的泛化版本。如果將 LS-GAN 的目標(biāo)函數(shù)(19)中的將?替換為一個函數(shù)?,也就是使目標(biāo)函數(shù)變?yōu)?#xff1a;當(dāng)??時,,而當(dāng)??時,GLS-GAN 等價于 WGAN:其中等號右邊第三項是常數(shù),省略掉后就得到了 WGAN 的目標(biāo)函數(shù):其中 是一個遠(yuǎn)大于 1 的值?,而且因為它在等號右邊的兩項中都出現(xiàn),所以可以將其放入 L 中。未完待續(xù)~[1] X. Nguyen, M. Wainwright, M. Jordan, (2008). “Estimating Divergence Functionals and the Likelihood Ratio by Convex Risk Minimization”.[2] M. Arjovsky, S. Chintala, and L. Bottou, (2017). “Wasserstein generative adversarial networks”.[3] A. Radford, L. Metz, and S. Chintala, (2015). “Unsupervised representation learning with deep convolutional generative adversarial networks”.[4] T. Miyato, T. Kataoka, M. Koyama, and Y. Yoshida, (2018). “Spectral normalization for generative adversarial networks”.[5] G.-J. Qi, (2019). “Loss-sensitive generative adversarial networks on lipschitz densities”.
?
總結(jié)
以上是生活随笔為你收集整理的矩阵的二范数_【专题】GAN(二)—— 目标函数的优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows获取硬件设备的guid_W
- 下一篇: hbuilder打包ios_ios开发证