emd实现信息隐藏_【读书笔记】深入理解TensorFlow架构设计与实现原理(五)
首先一如既往地是我們的約定環(huán)節(jié):
- MCMC:Markov Chain Monte Carlo,馬爾可夫蒙特卡洛算法;
- VAE:Variational AutoEncoder,變分自編碼器;
第10章 GAN模型
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域不僅有判別模型,而且有生成模型,獲得每個(gè)標(biāo)簽所對(duì)應(yīng)的數(shù)據(jù)分布,GAN(Generative Adversarial Network)即是這樣一種判別模型,利用深度學(xué)習(xí)強(qiáng)大的非線性擬合能力模擬真實(shí)的數(shù)據(jù)分布。
10.1 原理、特點(diǎn)及應(yīng)用
對(duì)條件概率
直接建模得到的模型就是判別模型,對(duì)訓(xùn)練數(shù)據(jù)特征和標(biāo)簽的聯(lián)合概率 建模而得到的模型就是生成模型。思考:這里的生成模型,和NLP中,利用深度學(xué)習(xí)模型生成的聲學(xué)模型、語言模型對(duì)應(yīng)的分布有什么關(guān)系?NLP中使用的是生成模型嗎?
常用的生成模型有兩大類:基于顯式概率密度函數(shù)的生成模型和基于隱式概率密度函數(shù)的生成模型。
- 基于顯式概率密度函數(shù)的生成模型首先建立所需擬合的數(shù)據(jù)分布的概率密度函數(shù),然后用有限的樣本不斷訓(xùn)練該模型。假設(shè)該模型 的目標(biāo)優(yōu)化函數(shù)為 ,最優(yōu)參數(shù)為 。當(dāng)該目標(biāo)優(yōu)化函數(shù)可解時(shí),直接用優(yōu)化算法求解該模型的最優(yōu)參數(shù);
- 當(dāng)它不可解時(shí),需要用近似的方法得到上述模型的最優(yōu)參數(shù)。變分近似(Variational Approximations)和馬爾可夫蒙特卡洛(Markov Chain Monte Carlo,簡稱MCMC)變分近似中,我們首先得到原始目標(biāo)優(yōu)化函數(shù)的一個(gè)可解的下限函數(shù),然后通過求解該下限函數(shù)的最大值間接得到原始目標(biāo)優(yōu)化函數(shù)的最大值;
不同于基于顯式概率密度函數(shù)的生成模型,基于隱式概率密度函數(shù)的生成模型可以通過直接采樣的方式訓(xùn)練模型參數(shù),而不需要提前對(duì)真實(shí)分布建立模型。而GAN是一種全新的基于隱式概率密度函數(shù)的生成模型。
10.1.1 原理
由兩個(gè)子墨性——生成器和判別器組成。G的輸入為隨機(jī)噪聲向量,輸出為與真實(shí)數(shù)據(jù)維度相同的數(shù)據(jù)。D的輸入為真實(shí)數(shù)據(jù)或者G生成的數(shù)據(jù),輸出為其對(duì)輸入數(shù)據(jù)的分類。對(duì)抗過程可以表示為:
實(shí)際中在每一次迭代中先訓(xùn)練k次判別器
,再訓(xùn)練一次生成器 ,具體步驟如下:判別器的優(yōu)化目標(biāo):
為求
的最小值,將 看作一個(gè)未知量,令 ,即 ,可得出 為最優(yōu)解。當(dāng) 時(shí),目標(biāo)函數(shù)可以進(jìn)一步表示為這里的
表示Jensen-Shanon散度,為了解決KL散度的非對(duì)稱問題,但是和KL共同的問題在于兩個(gè)分布距離較遠(yuǎn)時(shí)表達(dá)不佳,JS散度在距離較遠(yuǎn)時(shí)為常數(shù),而KL散度無意義。當(dāng)散度下降時(shí),
逼近真實(shí)數(shù)據(jù)概率分布。10.1.2 特點(diǎn)
GAN模型可以逼近任何分布,適合生成非結(jié)構(gòu)化高維數(shù)據(jù)。
- 和VAE相比,GAN模型沒有引入近似條件和額外假設(shè),因此能夠保證生成的效果更好,通常比VAE生成的圖像更加清晰(VAE生成圖像模糊好像是業(yè)界的共識(shí));
- 與MCMC相比,GAN的模型馴良不依賴MCMC,計(jì)算復(fù)雜度不高,訓(xùn)練速度較快,生成數(shù)據(jù)維度更高;
- 以FVBN(Fully visible belief networks,比如WaveNet也是基于此模型)為代表的生成模型必須串行地生成數(shù)據(jù)在各個(gè)維度上的值,計(jì)算速度受限,而GAN模型的訓(xùn)練和推理計(jì)算都很容易并行化,從而能夠充分利用GPU等高性能計(jì)算設(shè)備加速。
GAN的缺點(diǎn):
- 在目標(biāo)函數(shù)中,當(dāng)生成器生成的數(shù)據(jù)和真實(shí)的數(shù)據(jù)的分布之間沒有交集時(shí),JS散度為常數(shù),此時(shí)如果判別器也為最優(yōu),就會(huì)出現(xiàn)梯度消失現(xiàn)象,繼而難以根據(jù)目標(biāo)函數(shù)更新生成器模型的參數(shù);
- 由于靈活性太高,GAN經(jīng)常會(huì)出現(xiàn)模式崩潰(mode collapse)問題,即生成器和判別器的參數(shù)優(yōu)化過程停滯不前、無法收斂的問題。
通過WGAN、minibatch GAN等改進(jìn)解決這些問題。
10.1.3 應(yīng)用
近年來利用GAN強(qiáng)大的數(shù)據(jù)生成能力獲得更好的訓(xùn)練結(jié)果,也開始應(yīng)用于自然語言處理等領(lǐng)域。
- 圖像翻譯:包含兩個(gè)方面,1)抽取文字描述的語義特征,2)根據(jù)語義特征生成一副相應(yīng)的圖像。在這樣的GAN模型中,生成器的輸入包括噪聲向量和文字的編碼向量,這兩個(gè)向量同時(shí)輸入到生成器中用于圖像生成,使得圖像語義與對(duì)應(yīng)文字的語義產(chǎn)生關(guān)聯(lián)。判別器不僅需要判斷圖像看起來是否真實(shí),而且需要判斷圖像是否與文字編碼向量互相對(duì)應(yīng);
- 圖像編輯:對(duì)圖像中指定的某些內(nèi)容進(jìn)行語義上的修改。在GAN模型中,通過改變生成器輸入向量中的某些維度的值來控制生成器輸出圖像的局部語義信息。為了使用戶可以編輯模型的隱藏向量,進(jìn)而控制圖像的語義信息,我們通常需要將編碼器與GAN模型結(jié)合使用。在訓(xùn)練完GAN模型后,再訓(xùn)練兩個(gè)編碼器,分別將待編輯的圖像轉(zhuǎn)換為一個(gè)噪聲向量和一個(gè)隱藏向量。隱藏向量上的每一個(gè)維度的值都表示一些高級(jí)語義特性。將這兩個(gè)向量同時(shí)作為GAN生成器的輸入,就可以通過修改隱藏向量來控制GAN模型生成器所生成圖像的某些局部語義信息;
- 圖像超分辨率:高維空間中數(shù)據(jù)分布非常稀疏,僅靠MSE訓(xùn)練出的模型生成的圖像在某些細(xì)節(jié)處看起來不太真實(shí)。GAN對(duì)真實(shí)數(shù)據(jù)有更好地?cái)M合;
- 半監(jiān)督學(xué)習(xí):同時(shí)利用帶標(biāo)簽的數(shù)據(jù)和不帶標(biāo)簽的數(shù)據(jù)進(jìn)行模型訓(xùn)練的方法。利用GAN產(chǎn)生逼近真實(shí)的數(shù)據(jù),將不帶標(biāo)簽的數(shù)據(jù)看作第 類,并將其作為訓(xùn)練數(shù)據(jù)的一部分。訓(xùn)練數(shù)據(jù)得到了擴(kuò)充;
- 基于GAN的強(qiáng)化學(xué)習(xí):傳統(tǒng)的強(qiáng)化學(xué)習(xí)大多是單任務(wù)系統(tǒng),智能體只能通過獎(jiǎng)勵(lì)函數(shù)一直執(zhí)行一個(gè)單一的、不變的任務(wù),通過GAN為智能體持續(xù)地生成難度適宜的多個(gè)目標(biāo)任務(wù)。
10.2 GAN模型的改進(jìn)
GAN的主要問題:生成圖像的分辨率不高、學(xué)習(xí)特征不可控、訓(xùn)練過程不穩(wěn)定等。
10.2.1 CGAN模型
原始的GAN框架不需要對(duì)數(shù)據(jù)分布做假設(shè),而直接采用多層神經(jīng)網(wǎng)絡(luò)模擬數(shù)據(jù)分布。這種訓(xùn)練方式太過自由,在實(shí)際中數(shù)據(jù)表前或其他輔助數(shù)據(jù)可被用作訓(xùn)練GAN的約束條件。CGAN在判別器和生成器的輸入中分別引入一個(gè)條件向量
,用于約束生成圖像的某些屬性。最優(yōu)化問題可以從之前的輸出的分布改寫為新的條件分布。以手寫字體為例,條件向量可以是數(shù)字的值、筆跡的寬度等。
10.2.2 LAPGAN模型
LAPGAN(Laplacian Pyramid GAN,拉普拉斯金字塔生成式對(duì)抗網(wǎng)絡(luò),和高斯金字塔配合使用,高斯金字塔通過高斯濾波和降采樣獲得不同尺度的圖像金字塔,拉普拉斯金字塔表示上采樣/高斯濾波后與上一級(jí)圖像的差,表示降采樣過程中丟失的高頻信息,由拉普拉斯金字塔可以重構(gòu)出原始圖像)模型。
LAPGAN的原理是在每個(gè)尺度下都有一個(gè)生成器,用于生成該尺度下的拉普拉斯金字塔圖像。例如,在
尺度下,噪聲向量 輸入到生成器 中得到生成圖像 。在 尺度下,生成器 的輸入為噪聲向量 ,以及 升采樣后的圖像 (與CGAN類似,該圖像作為條件變量引導(dǎo) 的輸出),根據(jù)拉普拉斯金字塔圖像和高斯金字塔圖像之間的關(guān)系, 的輸出與 相加后即可得到 尺度下的生成圖像 。以此類推直到生成最終圖像 (既另一種形式的CGAN)。10.2.3 DCGAN模型
(注意!這里的C不是CGAN里的Conditional,而是深度卷積的意思)DCGAN模型的整體架構(gòu)與原始的GAN模型一致,區(qū)別在于Generator和Discriminator的具體實(shí)現(xiàn)方面的細(xì)節(jié):
10.2.4 InfoGAN模型
在InfoGAN模型中,在損失函數(shù)中加入了輸入語義特征向量
和輸出圖像之間的互信息的相反數(shù),互信息越打,相關(guān)性越高,損失越低。然而直接優(yōu)化新的損失函數(shù)意味著需要對(duì)隱變量 的后驗(yàn)概率分布 進(jìn)行采樣,InfoGAN中引入變分法,采用一個(gè)輔助分布 來近似后驗(yàn)概率分布,簡化了計(jì)算。實(shí)際中可以采用深度學(xué)習(xí)模型來表示 。10.2.5 LSGAN模型
上述幾種GAN模型目標(biāo)函數(shù)大部分都是基于sigmoid交叉熵,會(huì)導(dǎo)致梯度消失的問題,當(dāng)生成器G生成的數(shù)據(jù)處于判別器D的分類面正確的一側(cè),但又離真實(shí)數(shù)據(jù)分布比較遠(yuǎn)時(shí),很難通過該目標(biāo)函數(shù)計(jì)算相應(yīng)的梯度更新G的模型參數(shù),難以繼續(xù)優(yōu)化G。LSGAN(Least Squares GAN)是基于最小二乘法的目標(biāo)函數(shù),分別優(yōu)化生成器和判別器的GAN模型。
基于sigmoid交叉熵的目標(biāo)函數(shù)容易出現(xiàn)飽和,從而導(dǎo)致無法繼續(xù)訓(xùn)練。實(shí)驗(yàn)效果表明LSGAN模型生成的圖像分辨率更高,訓(xùn)練過程更加穩(wěn)定。
10.2.6 WGAN模型
將JS散度替換為EMD(Earth Mover's Distance,也就是Wasserstein距離)來定義生成數(shù)據(jù)和真實(shí)數(shù)據(jù)分布之間的差異,相比于JS散度,它可以做到處處連續(xù)且可微。
10.3 最佳實(shí)踐
參見這里。
10.4 小結(jié)
GAN模型接住了深度學(xué)習(xí)模型對(duì)數(shù)據(jù)分布強(qiáng)大的建模能力,使得生成逼真的圖像等高維數(shù)據(jù)成為可能。
總結(jié)
以上是生活随笔為你收集整理的emd实现信息隐藏_【读书笔记】深入理解TensorFlow架构设计与实现原理(五)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有没有那种适合和好姐妹一起喝的奶茶啊?
- 下一篇: jq点击所有子元素_jQuery删除/清