變分自編碼Variational Auto-Encoders

自編碼Auto-Encoders

自編碼(Auto-Encoders)是非監督學習領域中的一種, 可以自動從無標註的數據中學習特徵, 是一種以重構輸入信號爲目標的神經網絡, 它可以給出比原始數據更好的特徵描述, 具有較強的特徵學習能力, 在深度學習中常用自編碼網絡生成的特徵來取代原始數據, 以得到更好的結果。長被用於生成類模型。
如下圖所示:

輸入一張圖片,通過一個 Encoder 網絡,輸出一個壓縮後的特徵。之後將這個壓縮特徵通過一個 Decoder 網絡,又將這張圖片還原回去了。
我們知道,PCA是可以做降維的,不過PCA降維依賴線性性,本質仍然是線性變換,而自編碼是通過神經網絡降維,由於激活函數所以自編碼有非線性性,理論上可以有更好的降維效果,事實也是如此。下圖展示了二者重建圖像的區別:

自編碼器原理

讓我們來考慮有監督學習的神經網絡的功能:
𝒐 = 𝑓_𝜃(𝒙), 𝒙 ∈ 𝑅^{𝑑_{𝑖𝑛}}, 𝒐 ∈ 𝑅^{𝑑_{𝑜𝑢𝑡}}

𝑑_{𝑖𝑛} 是輸入的向量長度, 𝑑_{𝑜𝑢𝑡} 是網絡輸出的向量長度。對於分類問題,網絡模型通過把長度爲𝑑_{𝑖𝑛} 輸入特徵向量 𝒙 變換到長度爲 𝑑_{𝑜𝑢𝑡} 的輸出向量 𝒐,這個過程可以看成是特徵降維的過程,把原始的高維輸入向量𝒙變換到低維的變量𝒐。特徵降維(Dimensionality reduction)在機器學習中有廣泛的應用, 比如文件壓縮(Compression),數據預處理(Preprocessing)等。
自編碼網絡利用數據 𝒙 本身作爲監督信號來指導網絡的訓練,即希望神經網絡能夠學習到映射𝑓_𝜃: 𝒙 → 𝒙,我們把網絡 𝑓_𝜃 切分爲 2 個部分,前面的子網絡嘗試學習映射關係: 𝑔_{𝜃_1}: 𝒙 → 𝒛 ,後面的子網絡嘗試學習映射關係 ℎ_{𝜃_2}: 𝒛 → 𝒙,我們把 𝑔_{𝜃_1} 看成一個數據編碼(Encode)的過程,把高維度的輸入 𝒙 編碼成低維度的隱變量 𝒛 (Latent variable,或隱藏變量),稱爲 Encoder 網絡(編碼器); ℎ_{𝜃_2} 看成數據解碼(Decode)的過程,把編碼過後的輸入 𝒛 解碼爲高維度的 𝒙, 稱爲 Decoder 網絡(解碼器)。

編碼器和解碼器共同完成了輸入數據𝒙的編碼和解碼過程,我們把整個網絡模型 𝑓_𝜃 叫做自動編碼器(Auto-Encoder),簡稱自編碼器。 如果都使用深層神經網絡來參數化 𝑔_{𝜃_1}ℎ_{𝜃_2} 函數,則稱爲深度自編碼器(Deep auto-encoder),如下圖所示。

自編碼器能夠將輸入變換到隱藏向量 𝒛,並通過解碼器重建(Reconstruct,或恢復)出 \overline{𝒙}。我們希望解碼器的輸出能夠完美地或者近似恢復出原來的輸入,即 \overline{𝒙} ≈ 𝒙 ,那麼,自編碼器的優化目標:
\begin{array}{l} \text { Minimize } \mathcal{L}=\operatorname{dist}(\boldsymbol{x}, \overline{\boldsymbol{x}}) ,\quad \overline{\boldsymbol{x}}=h_{\theta_{2}}\left(g_{\theta_{1}}(\boldsymbol{x})\right) \end{array}

其中𝑑𝑖𝑠𝑡(𝒙, \overline{𝒙})表示 𝒙\overline{𝒙} 的距離度量(Distance metric)。
自編碼器網絡和普通的神經網絡並沒有本質的區別, 只不過訓練的監督信號由標籤 y 變成了自身 𝒙

去噪自編碼Denoising Auto-Encoders

要想取得好的特徵只靠重構輸入數據是不夠的, 在實際應用中, 還需要讓這些特徵具有抗干擾的能力, 即當輸入數據發生一定程度的擾動時, 生成的特徵仍然保持不變在這種情況下訓練出來的模型纔會有更好的魯棒性。
Denoising Auto-Encoders 給輸入數據添加隨機的噪聲擾動,如給輸入x添加採樣自高斯分佈的噪聲\epsilon
\overline{x}=x+\epsilon,\quad \epsilon \sim N(0,1)

添加噪聲後,網絡需要從\overline{x} 學習到數據的真實隱藏變量 z,並還原出原始的輸入x
\theta^{*}=\operatorname{argmin}_{\theta} \operatorname{dist}\left(h_{\theta_{2}}\left(g_{\theta_{1}}(\widetilde{x})\right), x\right)

變分自編碼Variational Auto-Encoders

基本的自編碼器本質上是學習輸入𝒙,隱藏變量 𝒛 之間映射關係, 它是一個判別模型(Discriminative model),並不是嚴格的生成模型(Generative model)。 於是考慮將模型變爲生成模型,我們可以學習到給定 x, 隱藏變量的條件概率分佈 p(z|x), 在學習到這個分佈後, 通過對p(z|x)進行採樣可以生成不同的樣本。 這就是變分自編碼器(Variational Auto-Encoders,VAE)。

VAE原理

從概率的角度, 我們假設任何數據集都採樣自某個分佈 p(x|z)z 是隱藏的變量,代表了某種內部特徵, 比如手寫數字的圖片 xz 可以表示字體的大小,書寫風格,加粗、斜體等設定,它符合某個先驗分佈 p(z),在給定具體隱藏變量 z 的情況下,我們可以從學到的分佈 p(x|z) 中採樣一系列的生成樣本,這些樣本都具有 z 所表示的共性。
p(z) 已知(比如z \sim N(0,1))的條件下, 我們的目的就是希望能學會生成概率模型 p(x|z)。這裏我們可以採用最大似然估計(Maximum likelihood estimation): 一個好的模型,應該擁有很大的概率產生已觀測的樣本。 如果我們的生成模型 p(x|z) 是用 \theta 來參數化,比如我們通過一個神經網絡 Decoder 來學習 p(x|z),那麼 \theta 就是此 decoder 的權值 w, b 等,那麼我們的神經網絡的優化目標是:
\underset{\theta}{\operatorname{max}}p(x)=\int_z{p(x|z)p(z)}dz

注意上式的含義,p(x|z)p(z)=p(x,z) 是聯合概率密度,對聯合概率密度積分可得到邊緣概率密度。
很遺憾的是,由於 z 是連續變量,上述積分沒法轉換爲離散形式,所以直接優化上式幾乎是不可能的。

換一個思路,利用 變分推斷(Variational Inference) 的思想,我們通過分佈 q_{\phi}(z|x) 來逼近真實的後驗概率 p(z|x),即需要優化 q_{\phi}(z|x)p(z|x) 之間的距離:
\min _{\phi} \mathbb{D}_{K L}\left(q_{\phi}(z \mid x)|p(z \mid x))\right.

其中KL散度定義爲:
\begin{array}{l} \mathbb{D}_{KL}(P | Q)=\sum P(x) \log \frac{P(x)}{Q(x)} \quad 離散分佈律\\ \mathbb{D}_{KL}(P | Q)=\int P(x) \log \frac{P(x)}{Q(x)} d x \quad 連續概率密度 \end{array}

嚴格來說距離應該是對稱的,但是KL散度並不對稱。
將min式的KL散度展開:
\mathbb{D}_{K L}\left(q_{\phi}(z \mid x)|p(z \mid x)\right)=\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(z \mid x)} d z.

進一步由 p(z|x)p(x)=p(x,z)
\begin{array}{l} \mathbb{D}_{K L} \left (q_{\phi}(z \mid x)|p(z \mid x) \right)=\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x) p(x)}{p(x, z)} d z. \\ =\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z+\int_{z} q_{\phi}(z \mid x) \log p(x) d z \\ =-\underbrace{\left(-\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z\right)}_{\mathcal{L}(\phi, \theta)}+\log p(x) \end{array}

上式中 \int_{z} q_{\phi}(z \mid x) \log p(x) d z 部分,\log p(x) 相對於積分變量 z 是常數,剩餘部分由概率密度定義,積分爲 \int_{z} q_{\phi}(z \mid x) d z=1
我們將 -\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z 項定義爲 {\mathcal{L}(\phi, \theta)},上式即爲:
\mathbb{D}_{K L} \left (q_{\phi}(z \mid x)|p(z \mid x) \right)=-{\mathcal{L}(\phi, \theta)}+\log p(x)

其中:
{\mathcal{L}(\phi, \theta)}=-\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z=\int_{z} q_{\phi}(z \mid x) \log \frac{p_{\theta}(x, z)}{q_{\phi}(z \mid x)}dz

考慮到 \mathbb{D}_{K L}\left(q_{\phi}(z \mid x)|p(z \mid x)\right) \geq 0,故有 \mathcal{L}(\phi, \theta) \leq \log p(x)
也就是說,\mathcal{L}(\phi, \theta)\log p(x) 的下界(Lower bound),優化目標 \mathcal{L}(\phi, \theta) 稱爲Evidence Lower Bound Objective(ELBO),爲了最大化似然 \max p(x)\max \log p(x),可以通過 \max \mathcal{L}(\phi, \theta) 實現。
現在我們分析如何最大化 \mathcal{L}(\phi, \theta),將其展開可得:
\begin{aligned} \mathcal{L}(\theta, \phi)&=\int_{z} q_{\phi}(z \mid x) \log \frac{p_{\theta}(x, z)}{q_{\phi}(z \mid x)}dz \\ &=\int_{z} q_{\phi}(z \mid x) \log \frac{p(z) p_{\theta}(x \mid z)}{q_{\phi}(z \mid x)}dz \\ &=\int_{z} q_{\phi}(z \mid x) \log \frac{p(z)}{q_{\phi}(z \mid x)}dz+\int_{z} q_{\phi}(z \mid x) \log p_{\theta}(x \mid z)dz \\ &=-\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(z)}dz+\mathbb{E}_{z \sim q}\left[\log p_{\theta}(x \mid z)\right] \\ &=-\mathbb{D}_{K L}\left(q_{\phi}(z \mid x) \mid p(z)\right)+\mathbb{E}_{z \sim q}\left[\log p_{\theta}(x \mid z)\right] \end{aligned}

因此:
\mathcal{L}(\theta, \phi)=-\mathbb{D}_{K L}\left(q_{\phi}(z \mid x) \mid p(z)\right)+\mathbb{E}_{z \sim q}\left[\log p_{\theta}(x \mid z)\right]

因此可以用編碼器網絡參數化 q_{\phi}(z|x) 函數,解碼器網絡參數化 p_{\theta}(x|z) 函數,通過計算解碼器的輸出分佈 q_{\phi}(z|x) 與先驗分佈 p(z) 之間的 KL 散度,以及解碼器的似然概率 \log p_{\theta}(x|z) 構成的損失函數,即可優化 \mathcal{L}(\theta, \phi) 目標。
q_{\phi}(z|x) \sim N(\mu_1,\sigma_1^2)p(z) \sim N(\mu_2,\sigma_2^2) 都假設爲正態分佈時:
\mathbb{D}_{K L}\left(q_{\phi}(z \mid x) \mid p(z)\right)=\log \frac{\sigma_{2}}{\sigma_{1}}+\frac{\sigma_{1}^{2}+\left(\mu_{1}-\mu_{2}\right)^{2}}{2 \sigma_{2}^{2}}-\frac{1}{2}

Reparameterization Trick

隱變量採樣自編碼器的輸出 q_{\phi}(z|x),如下圖左所示,編碼器輸出正態分佈的均值 \mu 和方差 \sigma^2,解碼器的輸入採樣自 N(\mu,\sigma^2)。由於採樣操作的存在,導致梯度傳播是不連續的,無法通過梯度下降算法訓練 VAE 網絡。原VAE論文中提供了一種連續可導的解決方案,稱爲 Reparameterization Trick, 它通過 z = 𝜇 + 𝜎 ⊙ 𝜀方式採樣隱變量 z,從而將梯度傳播連接起來。如下圖右所示,𝜀 變量採樣自標準正態分佈 N(0, 1)𝜇𝜎 由編碼器網絡產生,通過 z= 𝜇 + 𝜎 ⊙ 𝜀 即可獲得採樣後的隱變量。

VAE 網絡模型如下圖所示,輸入x 通過編碼器網絡 q_{\phi}(z|x) 計算得到隱變量 z 的均
值與方差,通過 Reparameterization trick 方式採樣後送入解碼器網絡,獲得分佈 p_{\theta}(x|z)
並通過損失函數 \mathcal{L}(\theta,\phi) 計算誤差優化參數。

參考資料

KL divergence

VAE原論文

https://zhuanlan.zhihu.com/p/25401928

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章