0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

是什么讓變分自編碼器成為如此成功的多媒體生成工具呢?

nlfO_thejiangme ? 來源:未知 ? 作者:李倩 ? 2018-04-19 16:48 ? 次閱讀

與經(jīng)常作為分類器的神經(jīng)網(wǎng)絡(luò)相比,變分自編碼器是一種十分著名的生成模型,目前被廣泛用于生成偽造的人臉照片,甚至可以用于生成美妙的音樂。然而是什么讓變分自編碼器成為如此成功的多媒體生成工具呢?讓我們來一探其背后的究竟。

當我們使用生成模型時也許只想生成隨機的和訓(xùn)練數(shù)據(jù)類似的輸出,但如果想生成特殊的數(shù)據(jù)或者在已有數(shù)據(jù)上進行一定的探索那么普通的自動編碼器就不一定能滿足了。而這正是變分自編碼器的獨特之處。

標準自編碼器

一個標準的自編碼器網(wǎng)絡(luò)實際上是一對兒相互連接的神經(jīng)網(wǎng)絡(luò),包括編碼器和解碼器。編碼器神經(jīng)網(wǎng)絡(luò)將輸入數(shù)據(jù)轉(zhuǎn)化為更小更緊湊的編碼表達,而解碼器則將這一編碼重新恢復(fù)為原始輸入數(shù)據(jù)。下面我們用卷積神經(jīng)網(wǎng)絡(luò)來對自編碼器進行具體的說明。

自編碼器中的CNNs

對于卷積神經(jīng)網(wǎng)絡(luò)CNNs來說,將輸入的圖像轉(zhuǎn)換為更為緊密的表達(ImageNet中通常為1000維的一階張量)。這一緊密的表達用于對輸入圖像進行分類。編碼器的工作原理也與此類似,它將輸入數(shù)據(jù)轉(zhuǎn)換為十分小而緊湊的表達(編碼),其中包含了可供解碼器生成期望輸出的足夠信息。編碼器一般與網(wǎng)絡(luò)的其他部分一同訓(xùn)練并通過反向傳播的誤差進行優(yōu)化從而生成有用的特殊編碼。對于CNNs來說,可以將其看做是特殊的編碼器。其輸出的1000維編碼便是用于分類的分類器。

自編碼器便是基于這樣的思想將編碼器輸出的編碼用作重建其輸入的特殊用途。

標準的自編碼器

整個自編碼器神經(jīng)網(wǎng)絡(luò)常常作為整體進行訓(xùn)練,其損失函數(shù)則定義為重建輸出與原始輸入之間的均方差/交叉熵,作為重建損失函數(shù)來懲罰網(wǎng)絡(luò)生成與原始輸入不同的輸出。

中間的編碼作為隱藏層間鏈接的輸出,其維度遠遠小于輸出數(shù)據(jù)。編碼器必須選擇性的拋棄數(shù)據(jù),將盡可能多的相關(guān)信息包含到有限的編碼中,同時智能的去除不相關(guān)的信息。解碼器則需要從編碼中盡可能的學(xué)習(xí)如何重建輸入圖像。他們一起構(gòu)成了自編碼器的左膀右臂。

標準自編碼器面臨的問題

標準自編碼器能學(xué)習(xí)生成緊湊的數(shù)據(jù)表達并重建輸入數(shù)據(jù),然而除了像去噪自編碼器等為數(shù)不多的應(yīng)用外,它的應(yīng)用卻極其有限。其根本原因在于自編碼器將輸入轉(zhuǎn)換為隱含空間中的表達并不是連續(xù)的,使得其中的插值和擾動難以完成。

MNIST數(shù)據(jù)不同分類間的間隔造成了編碼器無法連續(xù)采樣

例如利用MNIST數(shù)據(jù)集訓(xùn)練的自編碼器將數(shù)據(jù)映射到2D隱含空間中,圖中顯示不同的分類之間存在著明顯的距離。這使得解碼器對于存在于類別之間的區(qū)域無法便捷的進行解碼。如果你不想僅僅只是復(fù)現(xiàn)輸入圖像,而是想從隱含空間中隨機的采樣或是在輸入圖像上生成一定的變化,那此時一個連續(xù)的隱含空間就變得必不可少了。

如果隱含空間不連續(xù),那么在不同類別中間空白的地方采樣后解碼器就會生成非真實的輸出。因為解碼器不知道如何除了一片空白的隱含區(qū)域,它在訓(xùn)練過程中從未見到過處于這一區(qū)域的樣本。

變分自編碼器

變分自編碼器具有與標準自編碼器完全不同的特性,它的隱含空間被設(shè)計為連續(xù)的分布以便進行隨機采樣和插值,這使得它成為了有效的生成模型。它通過很獨特的方式來實現(xiàn)這一特性,編碼器不是輸出先前的n維度向量而是輸出兩個n維矢量:分別是均值向量μ和標準差向量σ。

隨后通過對μ和σ作為均值和方差采樣得到了隨機變量Xi,n次采樣后形成了n維的采樣后結(jié)果作為編碼輸出,并送入后續(xù)的解碼器。

隨機生成編碼矢量

這一隨機生成意味著即使對于均值和方差相同的輸入,實際的編碼也會由于每一次采樣的不同而產(chǎn)生不同的編碼結(jié)果。其中均值矢量控制著編碼輸入的中心,而標準差則控制著這一區(qū)域的大?。ň幋a可以從均值發(fā)生變化的范圍)。

通過采樣得到的編碼可以是這一區(qū)域里的任意位置,解碼器學(xué)習(xí)到的不僅是單個點在隱含空間中的表示,而是整個鄰域內(nèi)點的編碼表示。這使得解碼器不僅僅能解碼隱含空間中單一特定的編碼,而且可以解碼在一定程度上變化的編碼,而這是由于解碼器通過了一定程度上變化的編碼訓(xùn)練而成。

所得到的模型目前就暴露在了一定程度局域變化的編碼中,使得隱含空間中的相似樣本在局域尺度上變得平滑。理想情況下不相似的樣本在隱含空間中存在一定重疊,使得在不同類別間的插值成為可能。但這樣的方法還存在一個問題,我們無法對μ和σ的取值給出限制,這會造成編碼器在不同類別上學(xué)習(xí)出的均值相去甚遠,使它們間的聚類分開。最小化σ使得相同的樣本不會產(chǎn)生太大差異。這使得解碼器可以從訓(xùn)練數(shù)據(jù)進行高效重建。

我們希望得到盡量互相靠近但依然有一定距離的編碼,以便在隱含空間中進行插值并重建出新的樣本。為了實現(xiàn)滿足要求的編碼需要在損失函數(shù)中引入Kullback-Leibler散度(KL散度)。KL散度描述兩個概率分布之間的發(fā)散程度。最小化KL散度在這里意味著優(yōu)化概率分布的參數(shù)(μ,σ)盡可能的接近目標分布。

對于VAE來說KL損失函數(shù)是X中所有元素Xi~N(μi, σi2)與標準正態(tài)分布的散度和。

這一損失函數(shù)將鼓勵所有編碼在圍繞隱藏層中心分布,同時懲罰不同分類被聚類到分離區(qū)域的行為。利用純粹KL散度損失得到的編碼是以隱藏空間中心隨機分布的。但從這些無意義的表達中解碼器卻無從解碼出有意義的信息。

純粹的KL散度優(yōu)化的隱含空間(左),結(jié)合了重建損失優(yōu)化的隱含空間

這是就需要將KL損失和重建損失結(jié)合起來。這使得在局域范圍內(nèi)的隱藏空間點維持了相同的類別,同時在全局范圍內(nèi)所有的點也被緊湊的壓縮到了連續(xù)的隱含空間中。這一結(jié)果是通過重建損失的聚類行為和KL損失的緊密分布行為平衡得到的,從而形成了可供解碼器解碼的隱含空間分布。這意味著可以隨機的采樣并在隱含空間中平滑的插值,得到的結(jié)果可控解碼器生成有意義的有效結(jié)果。

最終的損失函數(shù)

矢量運算

那么現(xiàn)在我們?nèi)绾卧陔[含空間中得到平滑的插值呢?這主要通過隱含空間中的矢量運算來實現(xiàn)。

例如想得到兩個樣本之間的新樣本,那么只需要計算出他們均值矢量之差,并以其一半加上原來的矢量。最后將得到的結(jié)果送入到解碼器即可。那對于特殊的特征也,比如生成眼鏡該如何操作呢?那就找到分別戴眼鏡和不戴眼鏡的樣本,并得到他們在編碼器隱含空間中矢量之差,這就表示了眼鏡這一特征。將這新的“眼鏡”矢量加到任意的人臉矢量后進行解碼即可得到戴眼鏡的人臉。

展望

對于變分自編碼來說,目前已經(jīng)出現(xiàn)了各種各樣的改進算法。可以增加、替換標準的全連接編解碼器,并用卷積網(wǎng)絡(luò)來代替。有人利用它生成了各種各樣的人臉和著名的MNIST變化數(shù)據(jù)。

甚至可以用LSTM訓(xùn)練編解碼器訓(xùn)練時序離散數(shù)據(jù),從而生成文本和音樂等序列樣本。甚至可以模仿人類的簡筆畫。

VAE對于各種各樣的數(shù)據(jù)都有很好的適應(yīng)性,無論序列或非序列、連續(xù)或離散、標記或非標記數(shù)據(jù)都是強大的生成工具。期待能在未來看到更多獨特矚目的應(yīng)用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3552

    瀏覽量

    133790
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4724

    瀏覽量

    100311

原文標題:一篇文章告訴你「變分自編碼器 (VAE)」的優(yōu)秀

文章出處:【微信號:thejiangmen,微信公眾號:將門創(chuàng)投】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于自編碼器的異常小區(qū)檢測

    出來?! ”疚奶岢隽艘环N基于自編碼器的異常小區(qū)檢測方法,其基本原理是利用異常小區(qū)的KPI數(shù)據(jù)在通過
    發(fā)表于 12-03 15:06

    什么是編碼器 什么叫編碼器 編碼器什么意思

    什么是編碼器 什么叫編碼器 編碼器什么意思 第一種含義:編碼器是把角位移或直線位移轉(zhuǎn)換成電信號的一種裝置。前者成為碼盤,后者稱碼尺.按照讀
    發(fā)表于 12-18 00:13 ?1.5w次閱讀
    什么是<b class='flag-5'>編碼器</b> 什么叫<b class='flag-5'>編碼器</b> <b class='flag-5'>編碼器</b>什么意思

    自編碼器介紹

    自編碼器若僅要求X≈Y,且對隱藏神經(jīng)元進行稀疏約束,從而使大部分節(jié)點值為0或接近0的無效值,便得到稀疏自動編碼算法。一般情況下,隱含層的神經(jīng)元數(shù)應(yīng)少于輸入X的個數(shù),因為此時才能保證這個網(wǎng)絡(luò)結(jié)構(gòu)的價值。
    發(fā)表于 06-11 15:07 ?4882次閱讀

    稀疏自編碼器及TensorFlow實現(xiàn)詳解

     稀疏自編碼器(又稱稀疏自動編碼機)中,重構(gòu)誤差中添加了一個稀疏懲罰,用來限定任何時刻的隱藏層中并不是所有單元都被激活。如果 m 是輸入模式的總數(shù),那么可以定義一個參數(shù) ρ_hat,用來表示每個隱藏層單元的行為(平均激活多少次)。
    發(fā)表于 06-11 16:45 ?3806次閱讀
    稀疏<b class='flag-5'>自編碼器</b>及TensorFlow實現(xiàn)詳解

    基于稀疏自編碼器的屬性網(wǎng)絡(luò)嵌入算法SAANE

    在多數(shù)屬性網(wǎng)絡(luò)嵌入算法中,拓撲結(jié)構(gòu)的設(shè)計只考慮節(jié)點間直接鏈接,而未考慮節(jié)點間間接鏈接及不同節(jié)點的共同鏈接比,導(dǎo)致不能充分提取網(wǎng)絡(luò)真實拓撲特征。針對該問題,提出一種基于稀疏自編碼器的屬性網(wǎng)絡(luò)嵌入算法
    發(fā)表于 03-27 10:26 ?7次下載
    基于稀疏<b class='flag-5'>自編碼器</b>的屬性網(wǎng)絡(luò)嵌入算法SAANE

    基于自編碼器的海面艦船軌跡預(yù)測算法

    軌跡坐標數(shù)據(jù)集轉(zhuǎn)化為軌跡移動矢量集,使用自編碼器完成軌跡運動特征的提取與生成預(yù)測。同時為提高軌跡預(yù)測精度,將
    發(fā)表于 03-30 09:53 ?5次下載
    基于<b class='flag-5'>變</b><b class='flag-5'>分</b><b class='flag-5'>自編碼器</b>的海面艦船軌跡預(yù)測算法

    自編碼器基礎(chǔ)理論與實現(xiàn)方法、應(yīng)用綜述

    自編碼器是深度學(xué)習(xí)中的一種非常重要的無監(jiān)督學(xué)習(xí)方法,能夠從大量無標簽的數(shù)據(jù)中自動學(xué)習(xí),得到蘊含在數(shù)據(jù)中的有效特征。因此,自編碼方法近年來受到了廣泛的關(guān)注,已成功應(yīng)用于很多領(lǐng)域,例如數(shù)據(jù)分類、模式識別
    發(fā)表于 03-31 11:24 ?9次下載
    <b class='flag-5'>自編碼器</b>基礎(chǔ)理論與實現(xiàn)方法、應(yīng)用綜述

    一種基于自編碼器的人臉圖像修復(fù)方法

    方法。首先設(shè)計了一種自編碼器的變種網(wǎng)絡(luò),通過引人生成對抗網(wǎng)絡(luò)解決修復(fù)人臉圖像不清晰的問題,同時對
    發(fā)表于 04-21 10:51 ?10次下載
    一種基于<b class='flag-5'>變</b><b class='flag-5'>分</b><b class='flag-5'>自編碼器</b>的人臉圖像修復(fù)方法

    MCU工具之LED編碼器

    MCU工具之LED編碼器免費下載。
    發(fā)表于 05-06 10:06 ?1次下載

    基于自編碼器的網(wǎng)絡(luò)表示學(xué)習(xí)方法

    ,將這些信息融入到網(wǎng)絡(luò)表示學(xué)習(xí)過程中,有助于提升下游任務(wù)的性能。但是針對不同的應(yīng)用場景,結(jié)構(gòu)和屬性信息并不總是線性相關(guān),而且它們都是高度非線性的數(shù)據(jù)。提岀一種基于自編碼器的網(wǎng)絡(luò)表示學(xué)習(xí)方法 VANRL。
    發(fā)表于 05-12 14:50 ?27次下載

    自編碼器神經(jīng)網(wǎng)絡(luò)應(yīng)用及實驗綜述

    自編碼器是深度學(xué)習(xí)中的一種非常重要的無監(jiān)督學(xué)習(xí)方法,能夠從大量無標簽的數(shù)據(jù)中自動學(xué)習(xí),得到蘊含在數(shù)據(jù)中的有效特征。因此,自編碼方法近年來受到了廣泛的關(guān)注,已成功應(yīng)用于很多領(lǐng)域,例如數(shù)據(jù)分類、模式識別
    發(fā)表于 06-07 16:38 ?7次下載

    堆疊降噪自動編碼器(SDAE)

    網(wǎng)絡(luò)可以看作由兩部分組成:一個由函數(shù) h = f(x) 表示的編碼器和一個生成重構(gòu)的解碼 r = g(h)。我們不應(yīng)該將自編碼器設(shè)計成輸入到輸出完全相等。這通常需要向
    的頭像 發(fā)表于 01-11 17:04 ?6210次閱讀
    堆疊降噪自動<b class='flag-5'>編碼器</b>(SDAE)

    自編碼器 AE(AutoEncoder)程序

    原文鏈接 1.程序講解 (1)香草編碼器 在這種自編碼器的最簡單結(jié)構(gòu)中,只有三個網(wǎng)絡(luò)層,即只有一個隱藏層的神經(jīng)網(wǎng)絡(luò)。它的輸入和輸出是相同的,可通過使用Adam優(yōu)化和均方誤差損失函數(shù),來學(xué)習(xí)如何重構(gòu)
    的頭像 發(fā)表于 01-11 17:29 ?1241次閱讀
    <b class='flag-5'>自編碼器</b> AE(AutoEncoder)程序

    虹科干貨|絕對式編碼器和增量式編碼器的區(qū)別

    在不同的工作領(lǐng)域和工作中,需要使用對應(yīng)的工具和產(chǎn)品。在處理具有旋轉(zhuǎn)角度編碼器的工作任務(wù)時,了解所需工具的類型是必要的。除了絕對值編碼器外,還有增量式
    的頭像 發(fā)表于 05-26 10:51 ?2052次閱讀

    自編碼器的原理和類型

    自編碼器(Autoencoder, AE)是一種無監(jiān)督學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型,它通過編碼器和解碼的組合,實現(xiàn)了對輸入數(shù)據(jù)的壓縮和重構(gòu)。自編碼器由兩部分組成:
    的頭像 發(fā)表于 07-09 11:25 ?724次閱讀