社群計算機視覺課程文件
變分自編碼器
並獲得增強的文件體驗
開始使用
變分自編碼器
自編碼器簡介
自編碼器是一類主要用於無監督學習和降維的神經網路。自編碼器的基本思想是將輸入資料編碼為低維表示,然後將其解碼回原始資料,旨在最小化重建誤差。自編碼器的基本架構由兩個主要元件組成——編碼器和解碼器。
- 編碼器: 編碼器負責將輸入資料轉換為壓縮的或潛在的表示。它通常由一個或多個神經元層組成,這些層逐漸減小輸入的維度。
- 解碼器: 另一方面,解碼器接收編碼器產生的壓縮表示,並嘗試重建原始輸入資料。與編碼器一樣,它通常由一個或多個層組成,但順序相反,逐漸增加維度。

這個編碼器模型由一個編碼器網路(表示為 $g_\phi$)和一個解碼器網路(表示為 $f_\theta$)組成。低維表示在瓶頸層中學習為 $z$,重建輸出表示為 $x' = f_\theta(g_\phi(x))$,目標是 $x \approx x'$。
這種普通自編碼器中常用的損失函式是
它試圖最小化原始影像和重建影像之間的誤差。這也被稱為重建損失。
自編碼器對於資料去噪、特徵學習和壓縮等任務非常有用。然而,傳統自編碼器缺乏使VAE特別吸引人並適用於生成任務的機率性質。
變分自編碼器 (VAE) 概述
變分自編碼器 (VAE) 透過引入一種機率方法來編碼和解碼,解決了傳統自編碼器的一些限制。VAE的動機在於它們能夠透過從潛在空間中的學習分佈而不是像普通自編碼器那樣從潛在向量中取樣來生成新的資料樣本,這使得它們適用於生成任務。
- 機率性質: 與確定性自編碼器不同,VAE將潛在空間建模為機率分佈。這會生成輸入編碼的機率分佈函式,而不僅僅是一個固定的向量。這允許對資料中的不確定性進行更細緻的表示。解碼器隨後從此機率分佈中取樣。
- 潛在空間的作用: VAE中的潛在空間是輸入資料的連續、結構化表示。由於它是連續的,因此可以輕鬆進行插值。潛在空間中的每個點都對應一個潛在輸出,從而實現不同資料點之間的平滑過渡,並確保靠近潛在空間的點導致相似的生成。
這個概念可以透過下面給出的一個簡單示例來闡明。神經網路中的編碼器負責獲取輸入影像的向量形式表示。這個向量封裝了各種特徵,例如主體微笑、髮色、性別、年齡等,表示為類似於[0.4, 0.03, 0.032, ...]的向量。在本示例中,重點縮小到一個單一的潛在表示,特別是“微笑”屬性。
在普通自編碼器 (AE) 中,微笑特徵被封裝為一個固定的、確定性的值。相比之下,變分自編碼器 (VAE) 經過精心設計,將此特徵封裝為機率分佈。這種設計選擇透過允許從指定的機率分佈中取樣值來促進生成影像的可變性。
VAE背後的數學原理
理解 VAE 背後的數學概念需要掌握機率建模和變分推斷的原理。 
- 機率建模: 在 VAE 中,潛在空間被建模為機率分佈,通常假定為多元高斯分佈。此分佈由均值和標準差向量引數化,這些向量是機率編碼器的輸出。這包括我們學習到的表示 z,它進一步用於從解碼器中取樣,例如.
- 損失函式: VAE 的損失函式由兩部分組成:重建損失(衡量模型重建輸入的效果,類似於普通自編碼器)和 KL 散度(衡量學習分佈與所選先驗分佈(通常是高斯分佈)的接近程度)。這些元件的組合鼓勵模型學習一個潛在表示,該表示同時捕獲資料分佈和指定的先驗。
- 鼓勵有意義的潛在表示: 透過將 KL 散度項納入損失函式,VAE 被鼓勵學習一個潛在空間,在該空間中相似的資料點更接近,從而確保有意義且結構化的表示。自編碼器的損失函式旨在最小化重建損失和潛在損失。較小的潛在損失意味著對資訊的編碼有限,否則會增加重建損失。因此,變分自編碼器 (VAE) 在潛在損失和重建損失之間找到了微妙的平衡。這種平衡變得至關重要,因為
較小的潛在損失往往會導致生成的影像與訓練集中存在的影像非常相似,但視覺質量卻較差。相反,較小的重建損失會導致訓練期間重建的影像良好,但會阻礙生成與訓練集顯著偏離的新影像。在影像重建和生成中實現理想結果,在這兩個方面之間取得和諧的平衡至關重要。
總而言之,VAE 不僅僅是資料重建;它們生成新樣本並提供一個機率框架來理解潛在表示。模型架構中包含機率元素使 VAE 與傳統自編碼器區別開來。與傳統自編碼器相比,VAE 對資料分佈提供了更豐富的理解,使其在生成任務中特別強大。