摘要在短短三年內,變分自編碼器(VAE)已經成爲複雜分佈的無監督學習的最流行的方法之一。 VAE 頗有吸引力,由於它們創建在標準函數近似器(神經網絡)之上,而且能夠用隨機梯度降低進行訓練。 VAE 已經展現出產生多種複雜數據的但願,包括手寫數字 [1, 2],面部 [1, 3, 4] ,門牌號 [5, 6],CIFAR 圖像 [6],場景物理模型 [4],分割 [7] ,以及從靜態圖像預測將來 [8]。本教程介紹了 VAE 背後的直覺,解釋了它們背後的數學,並描述了一些經驗行爲。不須要變分貝葉斯方法的先驗知識。網絡
「生成建模」是機器學習的一個普遍領域,它處理分佈模型P(X)
,定義在數據點X
上,它在一些潛在的高維空間X
中。例如,圖像是一種流行的數據,咱們能夠爲其建立生成模型。每一個「數據點」(圖像)具備數千或數百萬個維度(像素),而且生成模型的工做是以某種方式捕獲像素之間的依賴性,例如,鄰近的像素具備類似的顏色,而且被組織成對象。 「捕獲」這些依賴關係的確切含義,取決於咱們想要對模型作什麼。一種直接的生成模型,簡單容許咱們以數字方式計算P(X)
。在圖像的狀況下,看起來像真實圖像的X
值應該具備高几率,而看起來像隨機噪聲的圖像應該具備低機率。然而,像這樣的模型並不必定有用:知道一個圖像不太可能沒法幫助咱們合成一個可能的圖像。數據結構
相反,人們常常關心的是產生更多的例子,像那些已經存在於數據庫中的例子,但並不徹底相同。咱們能夠從原始圖像數據庫開始,併合成新的沒有見過的圖像。咱們可能會採起一個像植物這樣的 3D 模型的數據庫,並生成更多的模型來填充視頻遊戲中的森林。咱們能夠採起手寫文本,並嘗試生成更多的手寫文本。像這樣的工具實際上可能對圖形設計師有用。咱們能夠形式化這個設置,經過假設咱們獲得示例X
,它的分佈是一些未知分佈P[gt](X)
,咱們的目標是學習咱們能夠從中採樣的模型P
,這樣P
就可能像P[gt]
。框架
訓練這種類型的模型一直是機器學習社區中長期存在的問題,並且大多數經典方法都有三個嚴重的缺點之一。首先,他們可能須要數據結構的強力假設。其次,他們可能會進行嚴格的近似,致使模型不理想。或者第三,他們可能依賴於計算成本昂貴的推理過程,如馬爾科夫鏈蒙特卡洛。最近,一些工做在經過反向傳播 [9],將神經網絡訓練爲強大的函數近似器方面,取得了巨大進步。這些進步產生了有但願的框架,可使用基於反向傳播的函數近似器來構建生成模型。機器學習
最受歡迎的此類框架之一是變分自編碼器 [1, 3],本教程的主題。這種模型的假設很弱,經過反向傳播訓練很快。 VAE 確實作了近似,可是這種近似引入的偏差在高容量模型下能夠說是很小的。這些特徵使其受歡迎程度迅速提高。函數
本教程旨在成爲 VAE 的非正式介紹,而不是關於它們的正式科學論文。它針對的是那些人,可能用於生成模型,但可能不具有 VAE 所基於的變分貝葉斯方法,和「最小描述長度」編碼模型的強大背景。本教程最初是 UCB 和 CMU 的計算機視覺閱讀小組的演示,所以偏向於視覺觀衆。感謝您的改進建議。工具
在訓練生成模型時,維度之間的依賴性越複雜,模型訓練就越困難。例如,生成手寫字符圖像的問題。簡單地說,咱們只關心數字 0-9 的建模。若是字符的左半部分包含 5 的左半部分,則右半部分不能包含 0 的右半部分,不然很是明顯字符看起來不像任何真實的數字。直觀地說,若是模型在爲任何特定像素指定值以前首先決定生成哪一個字符,它會有所幫助。這種決定被正式稱爲潛變量。也就是說,在咱們的模型繪製任何東西以前,它首先從集合中隨機採樣數字值,而後確保全部筆劃與該字符匹配。 被稱爲「潛在」,由於只給出模型產生的字符,咱們不必定知道潛在變量的哪些設置產生了該字符。咱們須要使用相似計算機視覺的東西來推斷它。學習
在咱們能夠說咱們的模型表示咱們的數據集以前,咱們須要確保對於數據集中的每一個數據點X
,潛變量有一個(或許多)取值,它會致使模型生成很是像X
的東西。形式上,咱們在高維空間Z
中有一個潛變量的向量z
,咱們能夠根據所定義的某些機率密度函數(PDF)P(z)
輕鬆進行抽樣。而後,假設咱們有一系列肯定性函數,在某些空間Θ
中由矢量θ
參數化,其中f: Z x Θ -> X
。f
是肯定性的,但若是是z
隨機的而且θ
是固定的,則f(z;θ)
產生空間X
中的隨機變量。咱們但願優化θ
,以便咱們能夠從P(z)
中採樣z
,而且f(z;θ)
頗有可能將像咱們數據集中X
的同樣。優化
爲了使這個概念在數學上精確,咱們的目標是在整個生成過程當中最大化訓練集中每一個X
的機率,根據:編碼
(1)
這裏,f(z;θ)
已被分佈P(X|z)
取代,這使咱們能夠經過全機率定律,使X
對z
的依賴性明確。這個框架背後的直覺稱爲「最大似然」,若是模型可能產生訓練集樣本,那麼它也可能產生相似的樣本,而且不太可能產生不一樣的樣本。在 VAE 中,這種輸出分佈的選擇一般是高斯分佈,即P(X|z;θ)=N(X|f(z;θ), σ^2 * I)
。也就是說,它的均值爲f(z;θ)
,協方差爲單位矩陣乘以某些標量σ
(這是一個超參數)。這種替換對於造成直覺是必要的,即某些z
須要產生僅僅像X
的樣本。通常而言,特別是在訓練初期,咱們的模型不會產生與任何特定X
相同的輸出。經過具備高斯分佈,咱們可使用梯度降低(或任何其餘優化技術)來增長P(X)
,經過使一些z
的f(z;θ)
接近X
,即逐漸使訓練數據在生成模型下更加可能。若是P(X|z)
是 Dirac delta 函數,這是不可能的,由於若是咱們肯定性地使用f(z;θ)
就會這樣!注意,輸出分佈不必定是高斯的:例如,若是是二項的,那麼P(X|z)
多是由f(z;θ)
參數化的伯努利。重要的特性就是P(X|z)
是可計算的,而且在θ
中是連續的。今後開始,咱們將省略f(z;θ)
中θ
的來避免混亂。
圖 1:表示爲圖形模型的標準 VAE 模型。 注意任何結構或甚至「編碼器」路徑的顯着缺失:能夠在沒有任何輸入的狀況下從模型中進行採樣。 這裏,矩形是「平板表示法」,這意味着咱們能夠從z
和X
採樣N
次,同時模型參數θ
保持固定。