从完美KL距离推导VAE
文章目錄
- VAE的純邏輯推導(dǎo)
- 一、初始設(shè)定
- VAE流程
- 核心推導(dǎo)
- 從理想出發(fā)
- 從理想假設(shè) (Assumption1Assumption_1Assumption1?)
- 化簡(jiǎn)LossLossLoss
- 采樣優(yōu)化(Assumption2Assumption_2Assumption2?)
- 二、樣例解釋
- 三、總結(jié)
VAE的純邏輯推導(dǎo)
一、初始設(shè)定
-
為了更具體的邏輯討論,我們假定表示輸入圖片的隨機(jī)變量XXX(以下簡(jiǎn)稱輸入圖片),表示編碼的隨機(jī)變量hhh(以下簡(jiǎn)稱編碼),表示得到的重構(gòu)圖片的隨機(jī)變量X^\hat XX^(以下簡(jiǎn)稱重構(gòu)圖片)
-
對(duì)于編碼器和解碼器,我們用三個(gè)變量來表示,{?\phi?, hhh, XXX},其中?\phi?表示“器”的所有參數(shù),hhh表示編碼,XXX表示圖片(對(duì)于編碼器是輸入圖片,對(duì)于解碼器是重構(gòu)圖片)
-
我們所有的假設(shè)都是趨于【完美】,所有的假設(shè)的根本出發(fā)點(diǎn)都是為了設(shè)計(jì)出能求的算法
-
P?(X,h)P_{\phi}(X,h)P??(X,h)表示在給定?\phi?的參數(shù)下,XXX和hhh的聯(lián)合分布
-
KL(P(x)∣∣P(y))KL(P(x)||P(y))KL(P(x)∣∣P(y))表示兩個(gè)分布xxx, yyy的KL距離
VAE流程
XXX →\rightarrow→ Encoder(參數(shù):?\phi?) →\rightarrow→ hhh →\rightarrow→ Decoder(參數(shù):θ\thetaθ) →\rightarrow→ X^\hat XX^
核心推導(dǎo)
從理想出發(fā)
【完美】情況下,我們希望得到一個(gè)完全相同的編碼器和解碼器,即
Loss(?,θ,X,h,X^)=KL(P?(X,h)∣∣Pθ(X^,h))=0Loss(\phi, \theta,X,h,\hat{X}) = KL(P_{\phi}(X,h)||P_{\theta}(\hat{X},h))=0 Loss(?,θ,X,h,X^)=KL(P??(X,h)∣∣Pθ?(X^,h))=0
但是可能得不到,那就盡量減少KL(?∣∣?)KL(\cdot||\cdot)KL(?∣∣?)吧(KL距離非負(fù)):
min?Loss(?,θ,X,h,X^)=KL(P?(X,h)∣∣Pθ(X^,h))\min \quad Loss(\phi, \theta,X,h,\hat{X}) =KL(P_{\phi}(X,h)||P_{\theta}(\hat{X},h)) minLoss(?,θ,X,h,X^)=KL(P??(X,h)∣∣Pθ?(X^,h))
數(shù)學(xué)知識(shí)告訴我們
Loss(?,θ,X,h,X^)=KL(P?(X,h)∣∣Pθ(X^,h))=∑X,h,X^P?(h,X)log?P?(h,X)Pθ(h,X^)=∑X,h,X^P?(X)P?(h∣X)log?P?(X)P?(h∣X)Pθ(X^)Pθ(h∣X^)\begin{aligned} Loss(\phi, \theta,X,h,\hat{X}) = &KL(P_{\phi}(X,h)||P_{\theta}(\hat{X},h))\\ =& \sum_{X,h,\hat{X}} P_{\phi}(h,X)\log\frac{P_{\phi}(h,X)}{P_{\theta}(h,\hat{X})} \\ =&\sum_{X,h,\hat{X}} P_\phi(X)P_{\phi}(h|X)\log\frac{P_\phi(X)P_{\phi}(h|X)}{P_{\theta}(\hat{X})P_{\theta}(h|\hat{X})} \end{aligned} Loss(?,θ,X,h,X^)===?KL(P??(X,h)∣∣Pθ?(X^,h))X,h,X^∑?P??(h,X)logPθ?(h,X^)P??(h,X)?X,h,X^∑?P??(X)P??(h∣X)logPθ?(X^)Pθ?(h∣X^)P??(X)P??(h∣X)??
到此為止,能推導(dǎo)的部分已經(jīng)結(jié)束了,在向下就需要做一些假設(shè)才能向下推,甚至于有一些假設(shè)與原設(shè)定相悖,但是沒辦法,不假設(shè)就推不下去GG了
從理想假設(shè) (Assumption1Assumption_1Assumption1?)
【完美】情況下,我們最終得到的XXX和X^\hat{X}X^應(yīng)該是一模一樣的,所以我們假設(shè)重構(gòu)的X^\hat{X}X^的分布和XXX一樣,所以
Loss(?,θ,X,h)=KL(P?(X,h)∣∣Pθ(X,h))=∑X,hP?(X)P?(h∣X)log?P?(X)P?(h∣X)Pθ(X)Pθ(h∣X)=∑X,hP?(X)P?(h∣X)log?P?(X)P?(h∣X)Pθ(X)Pθ(h∣X)=∑X,hP?(X)P?(h∣X)log?P?(X)Pθ(X)+∑X,hP?(X)P?(h∣X)log?P?(h∣X)Pθ(h∣X)=∑XP?(X)log?P?(X)Pθ(X)+∑XP?(X)∑hP?(h∣X)log?P?(h∣X)Pθ(h∣X)=KL(P?(X)∣∣Pθ(X))+KL(P?(h∣X)∣∣Pθ(h∣X))\begin{aligned} Loss(\phi, \theta,X,h) =& KL(P_{\phi}(X,h)||P_{\theta}(X,h)) \\ =& \sum_{X,h} P_\phi(X)P_{\phi}(h|X)\log\frac{P_\phi(X)P_{\phi}(h|X)}{P_{\theta}(X)P_{\theta}(h|X)}\\ =& \sum_{X,h} P_\phi(X)P_{\phi}(h|X)\log\frac{P_\phi(X)P_{\phi}(h|X)}{P_{\theta}(X)P_{\theta}(h|X)}\\ =& \sum_{X,h} P_\phi(X)P_{\phi}(h|X)\log\frac{P_\phi(X)}{P_{\theta}(X)} + \sum_{X,h} P_\phi(X)P_{\phi}(h|X)\log\frac{P_{\phi}(h|X)}{P_{\theta}(h|X)}\\ =& \sum_{X} P_\phi(X)\log\frac{P_\phi(X)}{P_{\theta}(X)} + \sum_{X} P_\phi(X)\sum_hP_{\phi}(h|X)\log\frac{P_{\phi}(h|X)}{P_{\theta}(h|X)}\\ =& KL(P_\phi(X)||P_{\theta}(X)) + KL(P_{\phi}(h|X)||P_{\theta}(h|X)) \end{aligned} Loss(?,θ,X,h)======?KL(P??(X,h)∣∣Pθ?(X,h))X,h∑?P??(X)P??(h∣X)logPθ?(X)Pθ?(h∣X)P??(X)P??(h∣X)?X,h∑?P??(X)P??(h∣X)logPθ?(X)Pθ?(h∣X)P??(X)P??(h∣X)?X,h∑?P??(X)P??(h∣X)logPθ?(X)P??(X)?+X,h∑?P??(X)P??(h∣X)logPθ?(h∣X)P??(h∣X)?X∑?P??(X)logPθ?(X)P??(X)?+X∑?P??(X)h∑?P??(h∣X)logPθ?(h∣X)P??(h∣X)?KL(P??(X)∣∣Pθ?(X))+KL(P??(h∣X)∣∣Pθ?(h∣X))?
這樣一來,聯(lián)合分布的KL距離就轉(zhuǎn)化為,邊緣分布的KL距離與條件分布的KL距離之和,那么換言之,也就是說loss變成了兩項(xiàng):
化簡(jiǎn)LossLossLoss
LossLossLoss的第一項(xiàng)是重構(gòu)圖片X^\hat XX^和原圖片XXX的某種差距,我們可以化簡(jiǎn)為
Loss1(?,θ,X,h)=KL(P?(X)∣∣Pθ(X))=∑XP?(X)log?P?(X)Pθ(X)=?Entropy(P?(X))?∑XP?(X)log?Pθ(X)=Constant?∑XP?(X)log?Pθ(X)=?∑XP?(X)∑hP?(h∣X)log?Pθ(X∣h)Pθ(h)Pθ(h∣X)Pθ(X)Pθ(X)+Constant=?∑XP?(X)∑hP?(h∣X)log?Pθ(X∣h)Pθ(h)Pθ(h∣X)P?(h∣X)P?(h∣X)+Constant=?∑XP?(X)∑hP?(h∣X)log?Pθ(X∣h)+∑XP?(X)∑hP?(h∣X)log?P?(h∣X)Pθ(h)?∑XP?(X)∑hP?(h∣X)log?P?(h∣X)Pθ(h∣X)+Constant=?∑XP?(X)∑hP?(h∣X)log?Pθ(X∣h)+∑XP?(X)∑hP?(h∣X)log?P?(h∣X)Pθ(h)?KL(P?(h∣X)∣∣Pθ(h∣X))+Constant=?∑XP?(X)∑hP?(h∣X)log?Pθ(X∣h)+KL(P?(h∣X)∣∣Pθ(h))?KL(P?(h∣X)∣∣Pθ(h∣X))+Constant\begin{aligned} Loss_1(\phi, \theta,X,h) =& KL(P_\phi(X)||P_{\theta}(X)) \\ =& \sum_X P_\phi(X) \log \frac{P_\phi(X)}{P_{\theta}(X)}\\ =& - Entropy(P_\phi(X)) - \sum_X P_\phi(X) \log P_{\theta}(X)\\ =& Constant - \sum_X P_\phi(X) \log P_{\theta}(X)\\ =& - \sum_X P_\phi(X) \sum_h P_\phi(h|X)\log \frac{P_{\theta}(X|h) P_{\theta}(h)}{P_{\theta}(h|X) P_{\theta}(X)}P_{\theta}(X)+ Constant\\ =& - \sum_X P_\phi(X) \sum_h P_\phi(h|X)\log \frac{P_{\theta}(X|h) P_{\theta}(h)}{P_{\theta}(h|X) }\frac{P_\phi(h|X)}{P_\phi(h|X)}+ Constant\\ =&- \sum_{X} P_\phi(X) \sum_h P_\phi(h|X)\log P_{\theta}(X|h) + \sum_{X} P_\phi(X) \sum_h P_\phi(h|X)\log \frac{P_\phi(h|X)}{P_{\theta}(h)} - \sum_{X} P_\phi(X)\sum_h P_\phi(h|X) \log\frac{P_\phi(h|X)}{P_{\theta}(h|X)}+ Constant\\ =&- \sum_{X} P_\phi(X) \sum_h P_\phi(h|X)\log P_{\theta}(X|h) + \sum_{X} P_\phi(X) \sum_h P_\phi(h|X)\log \frac{P_\phi(h|X)}{P_{\theta}(h)} - KL(P_{\phi}(h|X)||P_{\theta}(h|X))+ Constant\\ =& - \sum_{X} P_\phi(X) \sum_h P_\phi(h|X)\log P_{\theta}(X|h) + KL(P_\phi(h|X)||P_{\theta}(h)) - KL(P_{\phi}(h|X)||P_{\theta}(h|X))+ Constant \end{aligned} Loss1?(?,θ,X,h)=========?KL(P??(X)∣∣Pθ?(X))X∑?P??(X)logPθ?(X)P??(X)??Entropy(P??(X))?X∑?P??(X)logPθ?(X)Constant?X∑?P??(X)logPθ?(X)?X∑?P??(X)h∑?P??(h∣X)logPθ?(h∣X)Pθ?(X)Pθ?(X∣h)Pθ?(h)?Pθ?(X)+Constant?X∑?P??(X)h∑?P??(h∣X)logPθ?(h∣X)Pθ?(X∣h)Pθ?(h)?P??(h∣X)P??(h∣X)?+Constant?X∑?P??(X)h∑?P??(h∣X)logPθ?(X∣h)+X∑?P??(X)h∑?P??(h∣X)logPθ?(h)P??(h∣X)??X∑?P??(X)h∑?P??(h∣X)logPθ?(h∣X)P??(h∣X)?+Constant?X∑?P??(X)h∑?P??(h∣X)logPθ?(X∣h)+X∑?P??(X)h∑?P??(h∣X)logPθ?(h)P??(h∣X)??KL(P??(h∣X)∣∣Pθ?(h∣X))+Constant?X∑?P??(X)h∑?P??(h∣X)logPθ?(X∣h)+KL(P??(h∣X)∣∣Pθ?(h))?KL(P??(h∣X)∣∣Pθ?(h∣X))+Constant?
我們將Loss1(?,θ,X,h)Loss_1(\phi, \theta,X,h)Loss1?(?,θ,X,h)代回 Loss(?,θ,X,h)Loss(\phi, \theta,X,h)Loss(?,θ,X,h),將ConstantConstantConstant去掉(因?yàn)閮?yōu)化的時(shí)候常數(shù)其實(shí)沒有影響),得到
Loss(?,θ,X,h)=?∑XP?(X)∑hP?(h∣X)log?Pθ(X∣h)+KL(P?(h∣X)∣∣Pθ(h))\begin{aligned} Loss(\phi, \theta,X,h) =& - \sum_{X} P_\phi(X) \sum_h P_\phi(h|X)\log P_{\theta}(X|h) + KL(P_\phi(h|X)||P_{\theta}(h)) \end{aligned} Loss(?,θ,X,h)=??X∑?P??(X)h∑?P??(h∣X)logPθ?(X∣h)+KL(P??(h∣X)∣∣Pθ?(h))?
神奇么?兩個(gè)編碼器之間的某種差距,KL(P?(h∣X)∣∣Pθ(h∣X))KL(P_{\phi}(h|X)||P_{\theta}(h|X))KL(P??(h∣X)∣∣Pθ?(h∣X))消掉了。
好耶!到此為止,我們得到了和CS231n完全一致的結(jié)論!
但是具體應(yīng)該怎么優(yōu)化呢,我們就需要第二個(gè)假設(shè)了。
采樣優(yōu)化(Assumption2Assumption_2Assumption2?)
讓我們重新回顧一下涉及到的參數(shù):
讓我們?cè)倏匆豢磧?yōu)化目標(biāo)
Loss(?,θ,X,h)=?∑XP?(X)∑hP?(h∣X)log?Pθ(X∣h)+KL(P?(h∣X)∣∣Pθ(h))\begin{aligned} Loss(\phi, \theta,X,h) =& - \sum_{X} P_\phi(X) \sum_h P_\phi(h|X)\log P_{\theta}(X|h) + KL(P_\phi(h|X)||P_{\theta}(h)) \end{aligned} Loss(?,θ,X,h)=??X∑?P??(X)h∑?P??(h∣X)logPθ?(X∣h)+KL(P??(h∣X)∣∣Pθ?(h))?
好家伙,辛辛苦苦得出的LossLossLoss里面有Pθ(X∣h)P_{\theta}(X|h)Pθ?(X∣h)和Pθ(h)P_{\theta}(h)Pθ?(h),這怎么搞呀?
難道要根據(jù)特定的?\phi?,取眾多的XXX,得到眾多的hhh,才算出這倆概率嘛?
很顯然,計(jì)算量巨大,而且每更新一次?\phi?,又得走一遍流程,你懂計(jì)算機(jī)的痛苦嘛?
所以,我們需要新的假設(shè)來簡(jiǎn)化計(jì)算:
【完美】情況下,假設(shè)hhh服從正態(tài)分布,也即h~N(μ,Σ)h\sim N(\mu, \Sigma)h~N(μ,Σ)。這樣一來,我們的LossLossLoss就可以近似計(jì)算了。
- 注意,這樣的假設(shè)其實(shí)是與初始條件矛盾的。根據(jù)原定假設(shè),hhh 是由 XXX 和 DecoderDecoderDecoder 確定的,換言之 hhh 的分布取決于 XXX 和 DecoderDecoderDecoder 的分布。但是這樣一來,為了求出 hhh 的分布我們需要大量采樣XXX,來求得Pθ(X∣h)P_{\theta}(X|h)Pθ?(X∣h),很難實(shí)現(xiàn),所以就選擇將編碼 hhh 看作是高斯分布。
那么我們就可以算出LossLossLoss,然后用Back Propagation等方法優(yōu)化啦~
二、樣例解釋
下面根據(jù)cs321n的PPT,解釋一下怎么優(yōu)化
特別的,我們 LossLossLoss 里是對(duì)所有的 XXX 進(jìn)行優(yōu)化,用batch的話,可以記錄之前幾輪batch的loss,在新的一輪添加上動(dòng)量項(xiàng),來綜合考量進(jìn)行優(yōu)化
Loss(epochi+1)=γLoss(epochi)+(1?γ)Loss(thisepoch)Loss(epoch_{i+1}) = \gamma Loss(epoch_{i}) + (1-\gamma)Loss(this \; epoch) Loss(epochi+1?)=γLoss(epochi?)+(1?γ)Loss(thisepoch)
三、總結(jié)
用全新的角度梳理一遍VAE是真的難頂,推了幾次推不下去就存成草稿,后來不甘心,又打開草稿繼續(xù)推,終于用我自己覺得嚴(yán)謹(jǐn)?shù)倪壿嬐仆炅薞AE。有一說一,推完之后自己清楚了許多。
以前覺得VAE都是bug,弄了一堆不自恰的東西,現(xiàn)在看來,也就是兩個(gè)假設(shè),剩下的夾著的都是純邏輯推導(dǎo),就如同兩面包夾芝士(^ _ ^)。
這里特別感謝cs231n的PPT(后半段推導(dǎo)),上海交通大學(xué)張拳石老師的機(jī)器學(xué)習(xí)課程(前半段推導(dǎo))。
總結(jié)
以上是生活随笔為你收集整理的从完美KL距离推导VAE的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php一些错误的显示问题
- 下一篇: MAC 下shell工具推荐 zente