在 VAE 中,解碼之前進行重參數化主要有以下幾個重要原因:
可微分性
在深度學習里,模型是通過反向傳播算法來學習的,而這需要計算梯度。若直接從潛在變量的分布 (q_{\theta}(z|x))(由編碼器輸出的均值 (\mu) 和方差 (\sigma^2) 確定的正態分布)中采樣得到 (z),這個采樣操作是不可微分的。因為采樣是一個隨機過程,無法通過梯度來優化。
重參數化技巧把采樣操作轉化為可微分的計算。通過引入一個標準正態分布的隨機噪聲 (\epsilon \sim N(0, I)),使用公式 (z = \mu + \sigma \cdot \epsilon) 來計算 (z)。這樣,在反向傳播時就可以計算 (z) 相對于 (\mu) 和 (\sigma) 的梯度,進而更新編碼器的參數。
讓潛在空間具有連續性和可解釋性
- 連續性:重參數化技巧使得潛在空間是連續的。因為 (z) 是由 (\mu) 和 (\sigma) 以及連續的隨機噪聲 (\epsilon) 計算得到的,微小的 (\mu) 和 (\sigma) 的變化會導致 (z) 的微小變化。這意味著在潛在空間中相鄰的點對應的樣本在特征上也是相似的,使得潛在空間具有平滑的結構。
- 可解釋性:在這樣連續的潛在空間中,可以進行有意義的操作,如插值和外推。例如,在兩個不同樣本對應的潛在向量之間進行線性插值,然后將插值得到的潛在向量通過解碼器生成新的樣本,這些新樣本會呈現出從一個樣本逐漸過渡到另一個樣本的特征,從而使得潛在空間具有可解釋性。
提高模型的泛化能力
重參數化有助于 VAE 學習到數據的潛在分布,而不只是記憶訓練數據。通過在采樣過程中引入隨機性(即隨機噪聲 (\epsilon)),模型在訓練時能夠接觸到更多潛在空間中的樣本,從而增強了模型的泛化能力,使其能夠更好地生成新的、未見過的數據樣本。
便于計算 KL 散度
在 VAE 的訓練目標中,需要最小化潛在變量分布 (q_{\theta}(z|x)) 與先驗分布 (p(z))(通常是標準正態分布 (N(0, I)))之間的 KL 散度。重參數化使得潛在變量 (z) 的分布可以用參數 (\mu) 和 (\sigma) 來明確表示,方便計算 KL 散度,從而實現對潛在空間分布的約束,使潛在空間的分布更接近先驗分布。
重參數化在 VAE 里既是一種“技巧(trick)”,同時也是 VAE 實現過程中的關鍵基本操作,以下從不同角度為你詳細解釋:
作為“技巧(trick)”的層面
- 解決不可微問題:在深度學習里,模型借助反向傳播算法來更新參數,這就要求所有操作都具備可微性。直接從潛在變量的分布 (q_{\theta}(z|x)) 中采樣獲取 (z) 屬于隨機操作,是不可微的。重參數化技巧通過引入標準正態分布的隨機噪聲 (\epsilon \sim N(0, I)),并運用公式 (z = \mu + \sigma \cdot \epsilon) 來計算 (z),將原本不可微的采樣操作轉化為可微的計算,從而使模型能夠正常進行反向傳播和參數更新。這一處理方式并非深度學習中的常規做法,而是為了解決特定問題所采用的巧妙手段,所以可看作是一種技巧。
- 優化潛在空間結構:重參數化技巧使得潛在空間具備連續性與可解釋性。它保證了潛在空間中相鄰的點對應的樣本在特征上相近,使得在潛在空間中進行插值和外推等操作變得有意義。這種對潛在空間結構的優化并非是模型自然形成的,而是通過重參數化技巧人為實現的,因此也體現了其“技巧”的特性。
作為基本操作的層面
- VAE 架構的必要組成:在 VAE 的標準架構里,重參數化是必不可少的步驟。編碼器輸出潛在變量的均值 (\mu) 和方差 (\sigma^2) 后,必須通過重參數化來得到潛在變量 (z),再由解碼器根據 (z) 重構數據。缺少重參數化步驟,VAE 就無法正常訓練和工作,所以它是 VAE 模型實現過程中的基本操作。
- 廣泛應用與標準化:在 VAE 相關的研究和應用中,重參數化已經成為一種被廣泛接受和使用的標準操作。無論是在學術研究還是實際項目里,只要涉及到 VAE 模型,都會采用重參數化技巧。它已經成為了 VAE 模型的一個標志性特征和基本組成部分。