當前位置:
首頁 > 科技 > 未標註的數據如何處理?一文讀懂變分自編碼器VAE

未標註的數據如何處理?一文讀懂變分自編碼器VAE

GIF/1.7M

原文來源:medium

作者:Vivek Vyas

「機器人圈」編譯:嗯~阿童木呀、多啦A亮

眾所周知,在實驗中我們會遇到各種各樣的數據,那麼想像一下,如果我們遇到沒有標籤的數據會發生什麼呢?大多數深度學習技術需要乾淨的標註數據,但這一點現實嗎?從技術本質上說,如果你有一組輸入及其各自的目標標籤,你可以試著去了解特定目標的特定標籤概率。當然,現實中圖像映射真的會如此美好嗎?在這篇文章中,我將探索變分自編碼器(VAE),以更深入了解未標記數據的世界。該模型在對沒有標籤的圖像集合進行訓練後將產生獨特的圖像。

自動編碼器將輸入數據順序地解構為隱藏表示,並使用這些表示來順序地重構與它們的原始內容相似的輸出。它本質上是數據特定的數據壓縮,而這意味著它只能對類似於已經它訓練的數據進行壓縮。當然,自動編碼器也被公認為是有損耗的,因此相較於原始輸入,解壓縮輸出結果會稍微降低一些。那麼大家可能會有所疑問,如果它們會造成質量損失,為什麼還那麼實用呢?這是一個很好的問題,事實證明,它們對於數據去噪是非常有用的,即我們在這裡訓練一個自動編碼器,從自身損壞版本中重構輸入,這樣它就可以消除類似的損壞數據。

首先,我們來談談貝葉斯推理(Bayesian inference)。所有閱讀這篇文章的人可能都知道深度學習,以及談到近似複雜函數時它的有效性,然而貝葉斯推理提供了一個獨特的框架來解釋不確定性,所有的不確定性都是用概率表示的。這是有道理的,如果你仔細想想,在任何給定的時間,都有證據支持或反對我們已知的事物,這些證據可以被用來創造一個新的概率。再進一步,當我們學習新的東西時,我們必須考慮我們已經知道的,並將新的證據加入到考慮範圍內,創造一個新的概率。貝葉斯理論基本上是用數學方法描述這個概念的。

VAE就是這些想法的產物。從貝葉斯的角度來看,我們可以將VAE的輸入、隱藏表示和重構輸出視為有向圖形模型中的概率隨機變數。假設它包含一些數據的特定概率模型,x和潛在/隱藏變數z,我們便可以寫出模型的聯合概率,如下所示:

模型的聯合概率

給定模型生成的一個字元,我們不知道隱形變數的設置是如何生成這個字元的,我們的模型本質上就是隨機的!

VAE由3個主要部分組成:

?編碼器

?解碼器

?損失函數

給定輸入x,假設我們有一個28×28的手寫數字圖像,它可以達到784維度,其中每個像素都是一維的。現在,這將會編碼到一個潛在/隱藏的表示空間,而這將要比784少很多。我們現在可以採樣高斯概率密度來獲得表示的雜訊值。

是不是很酷?下面我們就用代碼來將這個表示出來吧。(文章結尾將給出完整代碼資源鏈接)

首先,我們導入庫並找到我們的超參數。

接下來,初始化編碼器網路。該網路的工作是將輸入映射到隱藏的分布參數中。我們接受輸入,並通過ReLU(壓縮維度的經典非線性激活函數)的密集完全連接層發送它。下一步,我們將輸入數據轉換為隱藏空間中的兩個參數。我們使用密集,完全連接層 - z mean和z log sigma來預定義大小。

解碼器將「z」作為其輸入,並將參數輸出到數據的概率分布中。我們假設每個像素是1或0(黑色或白色),現在我們可以使用伯努利分布,因為它會將「成功」定義為二進位值來表示單個像素。因此,解碼器將獲得一個數字的潛在/隱藏表示以作為其輸入,並且它會輸出784個伯努利參數,每個像素一個,所以在0和1之間有784個值。

我們將使用z_mean和z_log_var,通過定義採樣函數,從隱藏/潛在正態分布中隨機抽取新的類似點。以下代碼塊中的epsilon是一個隨機正態張量。

一旦我們得到z,我們可以將其提供給我們的解碼器,解碼器會將這些潛在空間點映射回原始輸入數據。因此,為了構建一個解碼器,我們首先用兩個完全連接層及其它們各自的激活函數對其進行初始化。因為數據是從一個小的維度提取到一個較大維數,所以其中一些會在重構過程中丟失。

確實很酷?但是這個「一些」到底是多少呢?為了獲取準確值,我們將建立損失函數對其進行精確測量。下面的第一項是測量重構損失。如果解碼器 輸出在重建數據方面很糟糕,那麼損失方面的成本就會相當大。下一個項是正則化項,意味著它可以保持每個數字的表示儘可能多樣化。所以舉個例子來說就是,如果兩個不同的人同時寫出數字3,那麼這些表示結果可能會看起來很不一樣,因為不同的人寫的結果當然會不一樣。這可能是一個不盡如人意的結果,而正則化項的任務就是拯救「不如意」!我們對不良行為進行懲罰(如這裡的例子),並確保類似的表示是緊密相連的。我們可以將總損失函數定義為重構項和KL的散度正則化項的總和。

現在來到訓練部分,我們通常會使用梯度下降來訓練這個模型,以優化我們對編碼器和解碼器參數的損失。但是我們如何對隨機確定的變數的參數進行衍生?

原來,我們已經將隨機性建立在我們的模型本身上了。現在,梯度下降通常期望一個給定的輸入總是返回一個固定參數組的相同輸出。在我們這種情況下唯一的隨機來源將是輸入。那麼我們如何解決這個問題呢?我們重新確定參數!我們將對樣本進行重新確定參數,使得隨機性可以獨立於參數。

我們將定義一個取決於參數確定性的函數,因此我們可以通過引入隨機變數將隨機性注入到模型中。編碼器將生成平均值向量和標準偏差向量,而不是生成實數值的向量。我們採用涉及z的函數關於其分布參數的導數。我們將模型的優化器定義為rmsprop,並將損失函數定義為vae_loss。

我們通過導入MNIST數據集並將它們饋送到我們的模型中,為給定數量的訓練次數和批量大小開始下面的訓練。

下面我們畫出二維平面上的鄰域。每個顏色聚類用一個數字表示,而閉合聚類本質上是與結構相似的數字。

數字表示法

另一種表示方法是通過掃描潛在計劃(latent plan)生成數字,定期採樣潛點,並為這些點生成相應的數字,如下所示:

生成的數字

這在某些程度上讓你感到震撼!

所以這個練習在本質上有三個關鍵的要點:

?變分編碼器允許我們通過執行無監督學習以生成數據。

?VAE =貝葉斯推理+深度學習。

?重參數化使我們能夠通過網路進行反向傳播,隨機獨立的參數使我們能夠得出梯度。

機器學習是一個非常迷人的東西,希望能通過這篇文章為你帶來一些價值! 查看github上的代碼,可獲得完整代碼資源:https://github.com/vvkv/Variational-Auto-Encoders/blob/master/Variational%2BAuto%2BEncoders.ipynb。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器人圈 的精彩文章:

視頻識別怎樣理解?其實,我們可以將其可視化!
用AI預測北京霧霾?有Keras在手,LSTM可分分鐘解決
複製化石就位,英國古洞穴重新開業
一文初識 「金」在藥物研發及有機反應中的應用
花它1個億!NSF給19個「大腦」AI項目提供支持

TAG:機器人圈 |

您可能感興趣

AI基礎/弄懂變形效果
腕錶測評里常見專業名詞,看完讓你秒懂變大神!
手機參數一頭霧水?你一定要來看看這篇文章,小白秒懂變大神!
對手機參數一頭霧水,不知道有啥區別?看完小白秒懂變大神!
譯站丨意總理質疑加圖索不懂變通,加8回擊:你應多關注政治
極簡唐朝史,簡到要崩潰!——懵懂變真懂!
不懂變通,財運怎麼能好
別總說自己不夠美,其實是你不懂變美的技巧
DNF:烏龜雖改版白圖,搬磚成熱門首選,但至少要懂變現玩法
不懂變通,一條道走到黑的四大星座,太容易得罪人
性格固執不懂變通的三大生肖,卻命中藏金不愁沒錢花
十二星座之中,只認死理,遇事不懂變通的三大星座
真能做到與時間對抗的美嗎?懂變美第二曲線的女人太可怕!
頭腦一根筋,凡事不懂變通的三大星座
毛不易「西瓜頭」配校服褲再戳萌點 圓臉泛紅表情懵懂變羞澀boy
鬼谷子勸世良言:你人生最大的弱點就是,太守規矩,不懂變通!
不懂變通,行事愚蠢的生肖男
馬龍贏鄭榮植給樊振東上課:有勇更有謀 不懂變通技術再好也沒用
從服務員到一線女星,趙麗穎付出很多努力,卻於正說不懂變通!
丞相不懂變通,總跟皇帝對著干,皇帝:請你吃肉,大臣:沒筷子!