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