參考:1.?CARL?DOERSCH,?Tutorial on Variational Autoencoders
? ? ? ? ? ? 2. Ian Goodfellow,《深度學(xué)習(xí)》
概述
? ? ? ? 我們想要構(gòu)建一個與我們的數(shù)據(jù)集相關(guān)的生成式模型冒滩,它能夠生成和數(shù)據(jù)集中的樣本相似但又有一些不同的新數(shù)據(jù)。按照慣例浪谴,我們引入 隱隨機(jī)向量
?和對應(yīng)的概率分布
开睡,以表示數(shù)據(jù)的某種編碼表示因苹,設(shè)?可見隨機(jī)向量?為
,我們想要構(gòu)建關(guān)于
的模型
篇恒,就像 高斯混合模型?
一樣扶檐,在采樣的時候,我們可以先用邊緣分布
對隱向量進(jìn)行采樣婚度,再根據(jù)條件分布
對可見變量進(jìn)行采樣得到
樣本蘸秘。
? ? ? ? 在 VAE 中官卡,和 GMM 一樣蝗茁,我們也可以使用高斯分布作為混合分支,即:寻咒,只不過這里用連續(xù)變量的混合分布
取代了離散變量的混合系數(shù)
哮翘;均值向量不再像 GMM 那樣可以解析地從數(shù)據(jù)中統(tǒng)計出來,在這里我們使用神經(jīng)網(wǎng)絡(luò)
來擬合均值向量毛秘;而協(xié)方差矩陣僅僅是 isotropic 的饭寺。使用單模的高斯分布作為生成分布意味著,一旦網(wǎng)絡(luò)
對某些
的取值非常接近真實數(shù)據(jù)
叫挟,則生成分布在這些隱變量值下就會偏向于生成與真實數(shù)據(jù)
很相似的樣本艰匙,這的確就是我們所期望的結(jié)果。
問題的提出
為了求解抹恳,我們需要解決兩個問題:
????????第一個是問題是隱向量分布的選擇员凝,咋一看似乎毫無頭緒,我們只是期望
是
的一種表示奋献,包含能夠描述如何生成
的信息健霹;拿生成圖像來說,我們既不知道如何去準(zhǔn)確地描述生存任何一張圖片需要的隱表示瓶蚂;即便知道糖埋,又無法將其與適當(dāng)?shù)南蛄?img class="math-inline" src="https://math.jianshu.com/math?formula=Z" alt="Z" mathimg="1">對應(yīng)起來。
????????在深度學(xué)習(xí)背景中窃这,我們按照深度學(xué)習(xí)的設(shè)計哲學(xué):“不要手動設(shè)計特征瞳别,讓機(jī)器自己去學(xué)“。所以我們考慮使用另外一個神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)這樣的隱表示杭攻,其中
是我們待變換的可采樣隨機(jī)向量祟敛;并且為了不自找麻煩,我們使用一個可以很容易進(jìn)行抽樣的經(jīng)典分布朴上,例如 VAE 中就直接使用了多變量標(biāo)準(zhǔn)正態(tài)分布
垒棋,再由神經(jīng)網(wǎng)絡(luò)的普適近似性,在給定充分大容量的神經(jīng)網(wǎng)絡(luò)
后痪宰,我們認(rèn)為它可以逼近隱向量
的分布叼架。
? ? ? ? 事實上畔裕,我們可以將這兩個神經(jīng)網(wǎng)絡(luò)進(jìn)行函數(shù)復(fù)合,為了保持和論文的符號一致乖订,重新用來代替
的角色扮饶,并且簡記
為
。到此乍构,我們就把對人類來說很困難的特征工程轉(zhuǎn)嫁給了機(jī)器甜无,并且將采樣從網(wǎng)絡(luò)中游移到了網(wǎng)絡(luò)輸入端,這些操作都符合深度學(xué)習(xí)“端到端”的設(shè)計美學(xué)哥遮。
? ? ? ? 第二個問題是如何計算積分岂丘,一個顯然的方法就是 Monte Carlo 積分,即:
眠饮,其中:
是
按分布
的部分抽樣奥帘。我們當(dāng)然可以使用前面講過的 ancestral sampling 方法得到隱向量樣本,然后饋入網(wǎng)絡(luò)中得到變換后的樣本仪召,然后放到到輸出分布中計算出概率值寨蹋。但是由于我們在處理高維度的問題,要得到一個不錯的近似扔茅,需要非常大的樣本量已旧,所以不可取。
? ? ? ? 事實上召娜,我們不一定需要計算出才能進(jìn)行優(yōu)化运褪,我們?nèi)绻苡嬎?img class="math-inline" src="https://math.jianshu.com/math?formula=P(X)" alt="P(X)" mathimg="1">關(guān)于參數(shù)的梯度,或者是
的某個變分下界關(guān)于參數(shù)的梯度萤晴,然后使用梯度上升進(jìn)行優(yōu)化即可吐句,下面我們將導(dǎo)出該目標(biāo)函數(shù)。
目標(biāo)函數(shù)的導(dǎo)出
回到?期望最大化EM?那里店读,我們曾經(jīng)得到過一個公式嗦枢,我們用積分代替求和重寫如下:
其中:
????????在?GMM?或是?HMM?那里,我們可以解析地計算出完全數(shù)據(jù)的對數(shù)似然屯断,并且我們還有隱變量的后驗分布
可以直接計算文虏,我們可以直接令
就能使 KL-散度 降為 0,從而抬高?證據(jù)下界ELBO殖演。但是在這里根據(jù)貝葉斯公式氧秘,有
,其中
包含我們的神經(jīng)網(wǎng)絡(luò)趴久,所以我們沒有關(guān)于后驗分布的解析表達(dá)式丸相,自然也不能直接令
來抬高證據(jù)下界。所以我們考慮挑選一個變分分布族彼棍,在該分布族中找到最接近
的
灭忠,從而使得 KL-散度 降低到最小膳算,而這就是?變分自編碼器?名字中的“變分”的由來;事實上目前我們還沒有對該分布作出具體選擇弛作,下面將討論這部分涕蜂。
????????我們先對公式(1)進(jìn)行變換,構(gòu)造出和
兩項映琳,并經(jīng)過簡單的等式變換得:
代入(0)式中得:
? ? ? ? 到此机隙,我們得到一個重要的方程式,左邊是我們想要最大化的量萨西,而右邊是我們期望可以通過基于梯度的優(yōu)化算法來優(yōu)化的量有鹿。由于對大部分的
都接近為 0,因此我們無需考慮這樣的區(qū)域原杂,現(xiàn)在對
提出限制印颤,我們有理由認(rèn)為應(yīng)該將分布
限制在有高概率的這些地方您机,即使得編碼
能夠可靠地重構(gòu)出
的那些分布穿肄,所以應(yīng)該把
和
關(guān)聯(lián)起來,即
际看,顯然作為任意分布族
的一個子集咸产,
當(dāng)然也滿足方程式(3),我們把它寫出來如下:
? ? ? ? 我們一直說變分自編碼器仲闽,說到現(xiàn)在好像只在討論生成分布脑溢,即解碼器;那么編碼器在哪呢赖欣?現(xiàn)在仔細(xì)看一下我們的目標(biāo)函數(shù)(4)屑彻,發(fā)現(xiàn)公式右邊的確包含一個解碼器和編碼器
,下面我們將引入編碼器的形式顶吮。
優(yōu)化目標(biāo)
??????如果我們能夠選擇適當(dāng)?shù)姆植?img class="math-inline" src="https://math.jianshu.com/math?formula=Q(Z%7CX)" alt="Q(Z|X)" mathimg="1">社牲,則我們可以通過隨機(jī)梯度上升來進(jìn)行優(yōu)化方程(4)的右邊,再次我們選擇使用的分布為:
悴了,其中:
均為神經(jīng)網(wǎng)絡(luò)實現(xiàn)搏恤,且協(xié)方差矩陣
限制為對角線的,我們?nèi)匀挥欣碛烧J(rèn)為湃交,當(dāng)給到足夠大的網(wǎng)絡(luò)容量時熟空,
可以逼近
,當(dāng)這兩個分布的距離很小時搞莺,我們優(yōu)化方程(4)的右邊就相當(dāng)于直接優(yōu)化最終目標(biāo)似然
了息罗。
? ? ? ? 我們之所以選擇這樣的近似分布,是因為可以得到好的解析結(jié)果才沧,我們先來推導(dǎo)一下方程(4)右邊的第二項 KL-散度迈喉,為此我們先來推導(dǎo)兩個多變量高斯分布的 KL-散度:
其中:代入(5)式得:
下面依次處理這三項:
上式第三項積分 再次分成三部分俏扩,其中:
將以上全部結(jié)果代入(6)式得:
最后,在我們討論的限制下有:
????????接下來還要解決方程(4)右邊的第一項弊添,可以通過抽樣來估計录淡,但是要得到一個好的估計,需要使用大量的
饋入到
形成大量的樣本油坝,這非常耗時嫉戚。因此,作為隨機(jī)梯度下降優(yōu)化中的慣用做法澈圈,我們直接使用一個樣本
彬檀,并使用這個樣本的
來近似
;畢竟瞬女,我們已經(jīng)打算在數(shù)據(jù)集中的每個樣本
上做隨機(jī)梯度下降了窍帝。按照這樣的討論,我們的優(yōu)化目標(biāo)是對(4)式兩邊在數(shù)據(jù)分布上的期望:
????????對上式兩邊求導(dǎo)诽偷,求導(dǎo)運算可與期望(積分)運算互換(在這里我們忽視積分和求導(dǎo)的可交換性)坤学,進(jìn)而 求導(dǎo)運算 可以直接作用于下面的公式:
????????當(dāng)然實際中可以用小批量的平均梯度。為了看的更清楚报慕,簡單分析一下:上面(9)式的第二項的解析式為公式(8)深浮,由于我們對高斯分布作出的 isotropic 假設(shè),因此可以進(jìn)一步將(8)式展開為下面的:
????????這顯然是很好求導(dǎo)的眠冈,但是在實際中飞苇,我們不直接對建模,因為那樣的話蜗顽,在損失函數(shù)中取對數(shù)后會壓縮誤差布卡,從而迫使網(wǎng)絡(luò)學(xué)習(xí)指數(shù)尺度的參數(shù),這樣使得網(wǎng)絡(luò)很不穩(wěn)定雇盖;我們可以直接對
進(jìn)行建模忿等,即令
,因此上式就變成:
? ? ? ? 再來分析(9)式第一項刊懈,因為取了對數(shù)把高斯密度中的指數(shù)消掉了这弧,這相當(dāng)于直接對高斯分布中的二次型進(jìn)行求導(dǎo),而我們又假設(shè)了輸出分布是 isotropic gaussian 的虚汛,顯然我們可以很方便地進(jìn)行求導(dǎo)匾浪,結(jié)合我們對模型的輸出高斯分布的 isotropic 假設(shè)(),可繼續(xù)化簡為:
? ? ? ? 顯然卷哩,我們對上式關(guān)于參數(shù)求導(dǎo)時蛋辈,只有中間一項會產(chǎn)生梯度,而這里的超參數(shù)??就可以視為權(quán)重因子,用來平衡(9)式中兩項的損失值冷溶。
重參數(shù)化
????????很愉快地渐白,我們終于將模型和損失函數(shù),以及梯度計算全部搞出來了逞频。但是這就結(jié)束了嗎纯衍?然并沒有,我們忽略了一個嚴(yán)重的問題苗胀,就是我們的編碼器和解碼器之間存在一個隨機(jī)采樣步驟:襟诸,見下圖左邊。
? ? ? ? 采樣操作是一個不可以求導(dǎo)的過程基协,所以的梯度無法后向傳播到編碼器部分歌亲;因此作者提出了“重參數(shù)化”技巧,將無法傳播梯度的步驟挪到輸入端即可澜驮。如上圖右邊陷揪,由于多元正態(tài)隨機(jī)變量的仿射變換仍然時多元正態(tài)隨機(jī)變量,因此我們可以先從標(biāo)準(zhǔn)多元正態(tài)分布
中采樣
杂穷,然后通過變換
悍缠,其中
為矩陣
的平方根,容易驗證
亭畜。這一步轉(zhuǎn)換后多出來的矩陣乘法和向量加法扮休,顯然是可求導(dǎo)的。因此拴鸵,最終我們的目標(biāo)函數(shù)是:
測試階段
????????在測試階段,我們直接將編碼器部分丟棄蜗搔,僅僅使用解碼器部分劲藐,當(dāng)然“重采樣部分”屬于編碼器當(dāng)然也要丟掉;最后我們進(jìn)行采樣的模型如下圖所示:
? ? ? ? 這個采樣過程非常簡單樟凄;另一方面假設(shè)我們希望計算給定的測試樣本在模型下的概率如何聘芜?也就是計算,根據(jù)之前全部的討論缝龄,我們有如下兩種方式:
1)
2)
? ? ? ? 無論哪種方式汰现,我們都要對隱向量進(jìn)行采樣;但是我們是用下面兩個方法中的那個呢叔壤?雖然方法(1)是近似的瞎饲,方法(2)為精確的。但是根據(jù)之前的討論炼绘,由于從
可以采樣處使得
出現(xiàn)高概率的樣本嗅战,因此從
分布中采樣會比從
采樣收斂的更快。
我們在下篇繼續(xù)討論:變分自編碼器VAE細(xì)致推導(dǎo)(二)