您好,登錄后才能下訂單哦!
本篇文章為大家展示了條件變分自動編碼器CVAE的基本原理和keras實現是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
變分自動編碼器(VAE)是一種有方向的圖形生成模型,已經取得了很好的效果,是目前生成模型的最先進方法之一。它假設數據是由一些隨機過程,涉及一個未被注意的連續隨機變量z假設生成的z是先驗分布Pθ(z)和條件生成數據分布Pθ(X | z),其中X表示這些數據。z有時被稱為數據X的隱藏表示。
像任何其他自動編碼器架構一樣,它有一個編碼器和一個解碼器。編碼器部分試圖學習qφ(z | x),相當于學習數據的隱藏表示x或者x編碼到隱藏的(概率編碼器)表示。解碼器部分試圖學習Pθ(X | z)解碼隱藏表示輸入空間。圖形化模型可以表示為下圖。
對模型進行訓練,使目標函數最小化
這種損失的第一項是重建錯誤或數據點的預期負對數可能性。期望是關于編碼器的分布在表示通過采取一些樣本。這個術語鼓勵解碼器在使用來自潛在分布的樣本時學會重構數據。較大的錯誤表示解碼器無法重構數據。
第二項是Kullback-Leibler編碼器之間的分布q_φ(z | x)和p (z)。這個散度度量了在使用q表示z上的先驗時損失了多少信息,并鼓勵其值為高斯分布。
在生成過程中,來自N(0,1)的樣本被簡單地輸入解碼器。訓練和生成過程可以表示為以下
一種訓練時變分自編碼器實現為前饋神經網絡,其中P(X|z)為高斯分布。紅色表示不可微的采樣操作。藍色表示損失計算
測試時變分的“自動編碼器”,它允許我們生成新的樣本。“編碼器”路徑被簡單地丟棄。
對VAE進行如此簡要的描述,其原因在于,VAE并不是本文的主要關注對象,而是與本文的主要主題緊密相關的。
用VAE生成數據的一個問題是,我們對生成的數據類型沒有任何控制。例如,如果我們用MNIST數據集訓練VAE,并嘗試通過向解碼器輸入Z ~ N(0,1)來生成圖像,它也會產生不同的隨機數字。如果我們訓練好,圖像會很好,但我們將無法控制它會產生什么數字。例如,你不能告訴VAE生成一個數字“2”的圖像。
為此,我們需要對VAE的體系結構進行一些修改。假設給定一個輸入Y(圖像的標簽),我們希望生成模型生成輸出X(圖像)。所以,VAE的過程將被修改為以下:鑒于觀察y, z是來自先驗分布Pθ(z | y)和輸出分布Pθ產生的x (x | y,z)。請注意,對于簡單的VAE,之前是Pθ(z)和輸出是由Pθ(x | z)。
VAE中的可視化表示任務
這里編碼器部分試圖學習qφ(z | x, y),相當于學習隱藏的代表數據或編碼x到y條件。解碼器部分試圖隱藏表示學習Pθ(x | z, y)解碼隱藏表示輸入空間條件的y。圖形化模型可以表示為如下圖所示。
條件VAE (Conditional VAE)的神經網絡結構可以表示為如下圖。
X是像。Y是圖像的標簽,它可以用一個離散向量表示。
CVAE的一個keras實現:https://github.com/nnormandin/ConditionalVAE/blob/master/ConditionalVAE.ipynb
上述內容就是條件變分自動編碼器CVAE的基本原理和keras實現是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。