Variational Auto-encoder(VAE)變分自編碼器

介紹

? Variational Auto-encoder(VAE)變分自編碼器赏参,是無(wú)監(jiān)督復(fù)雜概率分布學(xué)習(xí)的最流行的方法之一。

? VAE的最大特點(diǎn)是模仿自動(dòng)編碼機(jī)的學(xué)習(xí)預(yù)測(cè)機(jī)制韭脊,在可測(cè)函數(shù)之間進(jìn)行編碼、解碼单旁。同GAN類似沪羔,其最重要的idea是基于一個(gè)令人驚嘆的數(shù)學(xué)事實(shí):

對(duì)于一個(gè)目標(biāo)概率分布,給定任何一種概率分布慎恒,總存在一個(gè)可微的可測(cè)函數(shù)任内,將其映射到另一種概率分布,使得這種概率分布與目標(biāo)的概率分布任意的接近融柬。

? 可測(cè)函數(shù)是測(cè)度論中的概念死嗦,它是真實(shí)世界的隨機(jī)事件到數(shù)學(xué)世界的隨機(jī)事件的映射。

? VAE的一個(gè)重要的哲學(xué)思想是粒氧,我們希望生成的樣本是由某些隱含變量所構(gòu)造出來(lái)的越除。舉個(gè)例子,比如我們想要生成0-9的手寫體外盯,影響生成這些數(shù)字的樣式可能有很多因素摘盆,比如筆畫粗細(xì)、筆尖的角度饱苟、寫者的書寫習(xí)慣孩擂、天氣好壞(天氣會(huì)影響寫者的心情,進(jìn)而影響書寫方式箱熬。根據(jù)蝴蝶效應(yīng)类垦,初始條件的微小變化會(huì)影響最終的結(jié)果)。這些因素不勝枚舉城须,一些看似不相關(guān)的因素蚤认,都有可能影響最終的結(jié)果。一個(gè)直接的方法是顯示地構(gòu)造出這些隱含因素的概率分布糕伐,但是這些因素實(shí)在是太多了砰琢,無(wú)窮多個(gè),我們顯然不能手工構(gòu)造良瞧。VAE巧妙地避開(kāi)了這個(gè)問(wèn)題陪汽,利用一個(gè)聯(lián)合高斯分布作為隱含可測(cè)函數(shù)的分布(這個(gè)隱含可測(cè)函數(shù)將上面所說(shuō)的所有現(xiàn)實(shí)世界影響寫字樣式的隱含因素映射到歐式空間中去了),隨即將問(wèn)題轉(zhuǎn)化為學(xué)習(xí)一個(gè)從隱含可測(cè)函數(shù)(隱含變量)到一個(gè)所希望生成樣本的映射褥蚯。后面我們會(huì)看到掩缓,這個(gè)過(guò)程就是解碼過(guò)程∽裱遥可以想象你辣,這個(gè)映射會(huì)極為復(fù)雜巡通。我們自然會(huì)想到利用深度學(xué)習(xí)強(qiáng)大的函數(shù)擬合能力來(lái)學(xué)習(xí)這個(gè)映射。

模型設(shè)計(jì)

目的

? VAE的核心目的是希望構(gòu)建一個(gè)從隱變量Z生成目標(biāo)數(shù)據(jù)X的模型舍哄。更準(zhǔn)確地講宴凉,它們是假設(shè)了Z服從某些常見(jiàn)的分布(比如正態(tài)分布或均勻分布),然后希望訓(xùn)練一個(gè)模型X = g(Z)表悬,這個(gè)模型能夠?qū)⒃瓉?lái)的概率分布映射到訓(xùn)練集的概率分布弥锄,也就是說(shuō),它們的目的都是進(jìn)行分布之間的變換蟆沫。

難點(diǎn)

? 那現(xiàn)在假設(shè)Z服從某個(gè)已知分布籽暇,那么我就可以從中采樣得到若干個(gè)Z_{1},Z_2,…,Z_n,然后對(duì)它做變換得到X^1=g(Z_1),X^2=g(Z_2),…,X^n=g(Z_n)饭庞,但是我們無(wú)法判斷這個(gè)轉(zhuǎn)換得到的分布跟我們目標(biāo)的數(shù)據(jù)集分布是不是一樣的戒悠。一般計(jì)算兩個(gè)不同的分布的差異是通過(guò)KL散度,但是這里我們實(shí)際上沒(méi)有兩個(gè)分布的表達(dá)式舟山,我們只有一批從構(gòu)造的分布采樣而來(lái)的數(shù)據(jù)\{{{\hat X}_1},{{\hat X}_2}...{{\hat X}_n}\}绸狐,還有一批從真實(shí)的分布采樣而來(lái)的數(shù)據(jù){X1,X2,…,Xn}(也就是我們希望生成的訓(xùn)練集)。我們只有樣本本身累盗,沒(méi)有分布表達(dá)式寒矿,當(dāng)然也就沒(méi)有方法算KL散度。

從后驗(yàn)估計(jì)入手

? 首先我們有一個(gè)數(shù)據(jù)x若债,x服從于某未知p_\theta(X)分布符相,與x對(duì)應(yīng)的有一個(gè)隱變量z,服從于某一已知先驗(yàn)分布p(Z),用p_\theta (x|z)表示似然概率蠢琳,用p_\theta(z|x)表示后驗(yàn)概率啊终。顯然這里除了z的先驗(yàn)分布p(Z)是我們指定的,其余的概率分布我們一無(wú)所知挪凑。

? 假設(shè)數(shù)據(jù)集中的數(shù)據(jù)都是獨(dú)立同分布的孕索,那么對(duì)于數(shù)據(jù)集中的數(shù)據(jù)就有如下的最大似然概率估計(jì)
{{\mathop{\rm logp}\nolimits} _\theta }({x^{(1)}},{x^{(2)}}...,{x^{(N)}}) = \sum\limits_{i = 1}^{i = N} {{{{\mathop{\rm logp}\nolimits} }_\theta }({x^{(i)}})}
不過(guò)我們沒(méi)有p_\theta (x)的分布表示形式逛艰,所以沒(méi)法直接計(jì)算躏碳。

VAE從后驗(yàn)估計(jì)入手,利用一個(gè)編碼器{q_\phi }(z|x^{(i)})去擬合其后驗(yàn)概率p_\theta(z|x^{(i)})散怖,最終目標(biāo)是讓兩個(gè)分布的KL散度最小化菇绵。因此有如下公式
\begin{array}{l} KL({q_\phi }(z|{x^{(i)}})||{P_\theta }(z|{x^{(i)}})) = {E_{{q_\phi }(z|{x^{(i)}})}}(\log (\frac{{{q_\phi }(z|{x^{(i)}})}}{{{P_\theta }(z|{x^{(i)}})}}))\\ = {E_{{q_\phi }(z|{x^{(i)}})}}(\log (\frac{{{q_\phi }(z|{x^{(i)}})*{p_\theta }({x^{(i)}})}}{{{P_\theta }(z|{x^{(i)}})*{p_\theta }({x^{(i)}})}}))\\ = {E_{{q_\phi }(z|{x^{(i)}})}}(\log (\frac{{{q_\phi }(z|{x^{(i)}})*{p_\theta }({x^{(i)}})}}{{{P_\theta }(z,{x^{(i)}})}}))\\ = {E_{{q_\phi }(z|{x^{(i)}})}}(\log (\frac{{{q_\phi }(z|{x^{(i)}})}}{{{P_\theta }(z,{x^{(i)}})}})) + {E_{{q_\phi }(z|{x^{(i)}})}}(\log ({p_\theta }({x^{(i)}})))\\ = {E_{{q_\phi }(z|{x^{(i)}})}}(\log (\frac{{{q_\phi }(z|{x^{(i)}})}}{{{P_\theta }(z,{x^{(i)}})}})) + \log ({p_\theta }({x^{(i)}})) \end{array}
于是我們的對(duì)數(shù)似然概率就可以表示為
\log ({p_\theta }({x^{(i)}})){\rm{ = }}KL({q_\phi }(z|{x^{(i)}})||{P_\theta }(z|{x^{(i)}})){\rm{ + L(}}\theta {\rm{,}}\phi {\rm{;}}{{\rm{x}}^{(i)}})
其中{\rm{L(}}\theta {\rm{,}}\phi {\rm{;}}{{\rm{x}}^{(i)}})就是對(duì)數(shù)似然函數(shù)變分推斷的下界,ELBO镇眷,全稱是Evidence Lower Bound
\begin{array}{l} L(\theta ,\phi ;{x^{{\rm{(i)}}}}) = - {E_{{q_\phi }(z|{x^{(i)}})}}\log (\frac{{{q_\phi }(z|{x^{(i)}})}}{{{p_\theta }(z,{x^{(i)}})}})\\ = - {E_{{q_\phi }(z|{x^{(i)}})}}\log (\frac{{{q_\phi }(z|{x^{(i)}}){p_\theta }(z)}}{{{p_\theta }(z,{x^{(i)}}){p_\theta }(z)}})\\ = - {E_{{q_\phi }(z|{x^{(i)}})}}\log (\frac{{{q_\phi }(z|{x^{(i)}})}}{{{p_\theta }(z)}}) + {E_{{q_\phi }(z|{x^{(i)}})}}\log (\frac{{{p_\theta }(z,{x^{(i)}})}}{{{p_\theta }(z)}})\\ = - KL({q_\phi }(z|{x^{(i)}})||{p_\theta }(z)) + {E_{{q_\phi }(z|{x^{(i)}})}}\log ({p_\theta }({x^{(i)}}|z)) \end{array}
因?yàn)镵L散度的非負(fù)性咬最,所以\log ({p_\theta }({x^{(i)}})) > = {\rm{L(}}\theta {\rm{,}}\phi {\rm{;}}{{\rm{x}}^{(i)}}),因此我們可以用優(yōu)化下界{\rm{L(}}\theta {\rm{,}}\phi {\rm{;}}{{\rm{x}}^{(i)}})的方式去優(yōu)化\log ({p_\theta }({x^{(i)}}))欠动。

顯然這里的{\rm{L(}}\theta {\rm{,}}\phi {\rm{;}}{{\rm{x}}^{(i)}})是包含期望的永乌,因此我們需要使用蒙特卡洛方法去估計(jì)期望惑申。假定編碼器{{q_\phi }(z|{x^{(i)}})}可以寫作可微函數(shù){z} = {g_\phi }(\varepsilon ,{x}),其中\varepsilon是噪聲翅雏,服從p(\varepsilon).
{{\rm{L}}^B}{\rm{(}}\theta {\rm{,}}\phi {\rm{;}}{{\rm{x}}^{(i)}}) = - KL({q_\phi }(z|{x^{(i)}}){\rm{||}}{P_\theta }(z)){\rm{ + }}\frac{1}{M}\sum\limits_{m = 1}^M {(\log ({P_\theta }({x^{(i)}}{\rm{|}}{z^{(i,m)}})))}
其中{z^{(i,m)}} = {g_\phi }({\varepsilon ^{(i,m)}},{x^{(i)}})

實(shí)際試驗(yàn)時(shí)圈驼,如果樣本量N很大,我們一般采用minibatch的方法進(jìn)行學(xué)習(xí)望几,對(duì)數(shù)似然函數(shù)的下界可以通過(guò)minibatch來(lái)估計(jì)绩脆,假設(shè)minibatch為K個(gè),則
{\rm{L(}}\theta {\rm{,}}\phi {\rm{;x}}) \approx \frac{N}{K}\sum\limits_{k = 1}^K {{{\rm{L}}^B}{\rm{(}}\theta {\rm{,}}\phi {\rm{;}}{{\rm{x}}^{(k)}})}
可以看到橄抹,為了計(jì)算{\rm{L(}}\theta {\rm{,}}\phi {\rm{;x}})靴迫,我們用了兩層估計(jì)。當(dāng)K較大時(shí)楼誓,內(nèi)層蒙特卡洛估計(jì)可以由外層估計(jì)來(lái)完成玉锌,也就是說(shuō),取M=1即可慌随。實(shí)際計(jì)算中芬沉,作者取K=100,M=1阁猜。由上述推導(dǎo)得到AEVB算法:

img

現(xiàn)在我們需要給定一些具體的分布來(lái)啟動(dòng)算法丸逸,
\begin{array}{l}p(\varepsilon ) = N(\varepsilon ;0,I)\\{q_\phi }(z|{x^{(i)}}) = N(z;{\mu ^{(i)}},{\sigma ^{(i)}}^{^2}I)\\{P_\theta }(z) = N(z;0,I)\\{g_\phi }({\varepsilon ^m},{x^{(i)}}{\varepsilon ^m}) = {\mu ^{(i)}} + {\sigma ^{(i)}} \odot {\varepsilon ^m}\end{array}
{P_\theta }({x^{(i)}}{\rm{|}}z)則依據(jù)z是二值或者是實(shí)值來(lái)制定不同的分布,二值則采用伯努利分布來(lái)估計(jì)剃袍,而實(shí)值則使用正太分布{P_\theta }({x^{(i)}}{\rm{|}}z) = N({x^{(i)}};{{\mu '}^{(i)}},{{\sigma '}^{(i)}}^{^2}I)來(lái)估計(jì)

作者采用多層感知機(jī)來(lái)估計(jì)上述{q_\phi }(z|{x^{(i)}}){P_\theta }({x^{(i)}}{\rm{|}}z),

若為二維數(shù)據(jù)黄刚,則
\begin{array}{l}\log p(x|z) = \sum\limits_{i = 1}^{{D_x}} {{x_i}\log {x_i} + (1 - {x_i})\log (1 - {y_i})} \\y = sigmoid({W_2}\tanh ({W_1}z + {b_1}) + {b_2}))\end{array}
若為實(shí)值數(shù)據(jù),則
\begin{array}{l} \mu = {W_1}h + {b_1}\\ \sigma = {W_2}h + {b_2}\\ h = \tanh ({W_3}z + {b_3})\\ \log p(x|z) \approx \frac{1}{2}\sum\limits_{j = 1}^{{D_z}} {(1 + log({{({\sigma _j}^{(i)})}^{^2}}) - } {({\mu _j}^{(i)})^2} - {({\sigma _j}^{(i)})^{^2}}) + \frac{1}{M}\sum\limits_{m = 1}^M {(\log ({P_\theta }({x^{(i)}}{\rm{|}}{z^{(i,m)}})))} \\ 其中{z^{(i,m)}} = {\mu ^{(i)}} + {\sigma ^{(i)}} \odot {\varepsilon ^m} \end{array}
對(duì)數(shù)似然函數(shù)的第一項(xiàng)的推導(dǎo)過(guò)程:
\begin{aligned}&KL\Big(N(\mu,\sigma^2)\Big\Vert N(0,1)\Big)\\ =&\int \frac{1}{\sqrt{2\pi\sigma^2}}e^{-(x-\mu)^2/2\sigma^2} \left(\log \frac{e^{-(x-\mu)^2/2\sigma^2}/\sqrt{2\pi\sigma^2}}{e^{-x^2/2}/\sqrt{2\pi}}\right)dx\\ =&\int \frac{1}{\sqrt{2\pi\sigma^2}}e^{-(x-\mu)^2/2\sigma^2} \log \left\{\frac{1}{\sqrt{\sigma^2}}\exp\left\{\frac{1}{2}\big[x^2-(x-\mu)^2/\sigma^2\big]\right\} \right\}dx\\ =&\frac{1}{2}\int \frac{1}{\sqrt{2\pi\sigma^2}}e^{-(x-\mu)^2/2\sigma^2} \Big[-\log \sigma^2+x^2-(x-\mu)^2/\sigma^2 \Big] dx\end{aligned}
整個(gè)結(jié)果分為三項(xiàng)積分民效,第一項(xiàng)實(shí)際上就是-\log \sigma^2乘以概率密度的積分(也就是1)憔维,所以結(jié)果是-\log \sigma^2;第二項(xiàng)實(shí)際是正態(tài)分布的二階矩畏邢,熟悉正態(tài)分布的朋友應(yīng)該都清楚正態(tài)分布的二階矩為\mu^2 + \sigma^2业扒;而根據(jù)定義,第三項(xiàng)實(shí)際上就是“-方差除以方差=-1”舒萎。所以總結(jié)果就是
KL\Big(N(\mu,\sigma^2)\Big\Vert N(0,1)\Big)=\frac{1}{2}\Big(-\log \sigma^2+\mu^2+\sigma^2-1\Big)
因此可以啟動(dòng)優(yōu)化過(guò)程了程储。

蘇劍林的用了另一個(gè)思路來(lái)描述這個(gè)過(guò)程以下內(nèi)容摘錄自變分自編碼器(一):原來(lái)是這么一回事

解決方案

? 我們最終目標(biāo)是想要生成屬于p(X)的分布的數(shù)據(jù),但我們現(xiàn)在只有一批數(shù)據(jù)樣本\{X_1,\dots,X_n\}臂寝,其整體用X來(lái)描述章鲤,假如我們能夠根據(jù)\{X_1,\dots,X_n\}得到X的分布p(X),那我直接根據(jù)p(X)來(lái)采樣咆贬,就可以得到所有可能的X了(包括\{X_1,…,X_n\}以外的)败徊,這是一個(gè)終極理想的生成模型了。當(dāng)然掏缎,這個(gè)理想很難實(shí)現(xiàn)皱蹦,于是我們將分布改一改
p(X)=\sum_Z p(X|Z)p(Z)
? 此時(shí)p(X|Z)就描述了一個(gè)由Z來(lái)生成X的模型煤杀,而我們假設(shè)Z服從標(biāo)準(zhǔn)正態(tài)分布,也就是p(Z)=N(0,I)沪哺。如果這個(gè)理想能實(shí)現(xiàn)怜珍,那么我們就可以先從標(biāo)準(zhǔn)正態(tài)分布中采樣一個(gè)Z,然后根據(jù)Z來(lái)算一個(gè)X凤粗,也是一個(gè)很棒的生成模型酥泛。接下來(lái)就是結(jié)合自編碼器來(lái)實(shí)現(xiàn)重構(gòu),保證有效信息沒(méi)有丟失嫌拣,再加上一系列的推導(dǎo)柔袁,最后把模型實(shí)現(xiàn)。

vae的傳統(tǒng)理解

? 如果像這個(gè)圖的話异逐,我們其實(shí)完全不清楚:究竟經(jīng)過(guò)重新采樣出來(lái)的Z_k捶索,是不是還對(duì)應(yīng)著原來(lái)的X_k,所以我們?nèi)绻苯幼钚』?img class="math-inline" src="https://math.jianshu.com/math?formula=D(%7B%5Chat%20X_k%7D%2CX_k)%5E2" alt="D({\hat X_k},X_k)^2" mathimg="1">(這里D代表某種距離函數(shù))是很不科學(xué)的

? 其實(shí)灰瞻,在整個(gè)VAE模型中腥例,我們并沒(méi)有去使用p(Z) (隱變量空間的分布)是正態(tài)分布的假設(shè),我們用的是假設(shè)p(Z|X)(后驗(yàn)分布)是正態(tài)分布T腿蟆燎竖!

? 具體來(lái)說(shuō),給定一個(gè)真實(shí)樣本X_k要销,我們假設(shè)存在一個(gè)專屬于X_k的分布p(Z|X_k)(學(xué)名叫后驗(yàn)分布)构回,并進(jìn)一步假設(shè)這個(gè)分布是(獨(dú)立的、多元的)正態(tài)分布疏咐。為什么要強(qiáng)調(diào)“專屬”呢纤掸?因?yàn)槲覀兒竺嬉?xùn)練一個(gè)生成器X=g(Z),希望能夠把從分布p(Z|X_k)采樣出來(lái)的一個(gè)Z_k還原為X_k浑塞。如果假設(shè)p(Z)是正態(tài)分布借跪,然后從p(Z)中采樣一個(gè)Z,那么我們?cè)趺粗肋@個(gè)Z對(duì)應(yīng)于哪個(gè)真實(shí)的X呢酌壕?現(xiàn)在p(Z|X_k)專屬于X_k掏愁,我們有理由說(shuō)從這個(gè)分布采樣出來(lái)的Z應(yīng)該要還原到X_k中去。

? 回到本文仅孩,這時(shí)候每一個(gè)X_k都配上了一個(gè)專屬的正態(tài)分布托猩,才方便后面的生成器做還原印蓖。但這樣有多少個(gè)X就有多少個(gè)正態(tài)分布了辽慕。我們知道正態(tài)分布有兩組參數(shù):均值μ和方差σ^2(多元的話,它們都是向量)赦肃,那我怎么找出專屬于X_k的正態(tài)分布p(Z|X_k)的均值和方差呢溅蛉?好像并沒(méi)有什么直接的思路公浪。那好吧,那我就用神經(jīng)網(wǎng)絡(luò)來(lái)擬合出來(lái)吧船侧!這就是神經(jīng)網(wǎng)絡(luò)時(shí)代的哲學(xué):難算的我們都用神經(jīng)網(wǎng)絡(luò)來(lái)擬合欠气。

于是我們構(gòu)建兩個(gè)神經(jīng)網(wǎng)絡(luò)μ_k=f_1(X_k)logσ^2_k=f_2(X_k)來(lái)算它們了袁梗。我們選擇擬合logσ^2_k而不是直接擬合σ^2_k宜鸯,是因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=%CF%83%5E2_k" alt="σ^2_k" mathimg="1">總是非負(fù)的,需要加激活函數(shù)處理遮怜,而擬合logσ^2_k不需要加激活函數(shù)即碗,因?yàn)樗烧韶?fù)。到這里陌凳,我能知道專屬于X_k的后驗(yàn)分布的均值和方差了剥懒,也就知道它的正態(tài)分布長(zhǎng)什么樣了,然后從這個(gè)專屬分布中采樣一個(gè)Z_k出來(lái)合敦,然后經(jīng)過(guò)一個(gè)生成器得到\hat{X}_k=g(Z_k)蕊肥,現(xiàn)在我們可以放心地最小化D(\hat X_k,X_k)^2,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=Z_k" alt="Z_k" mathimg="1">是從專屬X_k的分布中采樣出來(lái)的蛤肌,這個(gè)生成器應(yīng)該要把開(kāi)始的X_k還原回來(lái)壁却。于是可以畫出VAE的示意圖

事實(shí)上,vae是為每個(gè)樣本構(gòu)造專屬的正態(tài)分布裸准,然后采樣來(lái)重構(gòu)

? 考慮一下上述的模型展东,首先,我們希望重構(gòu)X炒俱,也就是最小化D(\hat X_k,X_k)^2盐肃,但是這個(gè)重構(gòu)過(guò)程受到噪聲的影響,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=Z_k" alt="Z_k" mathimg="1">是通過(guò)重新采樣過(guò)的权悟,不是直接由encoder算出來(lái)的砸王。顯然噪聲會(huì)增加重構(gòu)的難度,不過(guò)好在這個(gè)噪聲強(qiáng)度(也就是方差)通過(guò)一個(gè)神經(jīng)網(wǎng)絡(luò)算出來(lái)的峦阁,所以最終模型為了重構(gòu)得更好谦铃,肯定會(huì)想盡辦法讓方差為0。而方差為0的話榔昔,也就沒(méi)有隨機(jī)性了驹闰,所以不管怎么采樣其實(shí)都只是得到確定的結(jié)果(也就是均值)瘪菌,只擬合一個(gè)當(dāng)然比擬合多個(gè)要容易,而均值是通過(guò)另外一個(gè)神經(jīng)網(wǎng)絡(luò)算出來(lái)的嘹朗。

說(shuō)白了师妙,模型會(huì)慢慢退化成普通的AutoEncoder,噪聲不再起作用屹培。

這樣不就白費(fèi)力氣了嗎默穴?說(shuō)好的生成模型呢?

別急別急褪秀,其實(shí)VAE還讓所有的p(Z|X)都向標(biāo)準(zhǔn)正態(tài)分布看齊壁顶,這樣就防止了噪聲為零,同時(shí)保證了模型具有生成能力溜歪。怎么理解“保證了生成能力”呢若专?如果所有的p(Z|X)都很接近標(biāo)準(zhǔn)正態(tài)分布N(0,I),那么根據(jù)定義
p(Z)=\sum_X p(Z|X)p(X)=\sum_X \mathcal{N}(0,I)p(X)=\mathcal{N}(0,I) \sum_X p(X) = \mathcal{N}(0,I)
這里的\sum_X p(X)可以是積分或者求和蝴猪,總之概率和為一调衰,這樣我們就能達(dá)到我們的先驗(yàn)假設(shè):p(Z)是標(biāo)準(zhǔn)正態(tài)分布。然后我們就可以放心地從N(0,I)中采樣來(lái)生成圖像了自阱。

為了使模型具有生成能力嚎莉,vae要求每個(gè)p(Z_X)都向正態(tài)分布看齊

為了使模型具有生成能力,vae要求每個(gè)p(Z_X)都向正態(tài)分布看齊

那怎么讓所有的p(Z|X)都向N(0,I)看齊呢沛豌?如果沒(méi)有外部知識(shí)的話趋箩,其實(shí)最直接的方法應(yīng)該是在重構(gòu)誤差的基礎(chǔ)上中加入額外的loss:
\mathcal{L}_{\mu}=\Vert f_1(X_k)\Vert^2\quad \text{和}\quad \mathcal{L}_{\sigma^2}=\Vert f_2(X_k)\Vert^2
因?yàn)樗鼈兎謩e代表了均值\mu_k和方差的對(duì)數(shù)\log σ^2_k,達(dá)到\mathcal N(0,I)就是希望二者盡量接近于0了加派。不過(guò)叫确,這又會(huì)面臨著這兩個(gè)損失的比例要怎么選取的問(wèn)題,選取得不好芍锦,生成的圖像會(huì)比較模糊竹勉。所以,原論文直接算了一般(各分量獨(dú)立的)正態(tài)分布與標(biāo)準(zhǔn)正態(tài)分布的KL散度KL\Big(N(\mu,\sigma^2)\Big\Vert N(0,I)\Big)作為這個(gè)額外的loss娄琉,計(jì)算結(jié)果為
\mathcal{L}_{\mu,\sigma^2}=\frac{1}{2} \sum_{i=1}^d \Big(\mu_{(i)}^2 + \sigma_{(i)}^2 - \log \sigma_{(i)}^2 - 1\Big)
這里的d是隱變量Z的維度,因?yàn)榧僭O(shè)各分變量獨(dú)立所以每個(gè)變量獨(dú)立計(jì)算KL散度次乓,然后再求和。其中μ(i)和σ2(i)分別代表一般正態(tài)分布的均值向量和方差向量的第i個(gè)分量孽水。直接用這個(gè)式子做補(bǔ)充loss票腰,就不用考慮均值損失和方差損失的相對(duì)比例問(wèn)題了。

重參數(shù)技巧

由于這里我們需要從正態(tài)分布\mathcal p(Z|X_k)中采樣出來(lái)一個(gè)Z_k女气,但是分布的均值和方差都是神經(jīng)網(wǎng)絡(luò)算出來(lái)的杏慰,現(xiàn)在我們要利用采樣出來(lái)的結(jié)果去在損失函數(shù)中計(jì)算loss,然后反過(guò)來(lái)優(yōu)化這個(gè)分布的均值和方差√幽可是采樣的這個(gè)操作是不可導(dǎo)的,所以要利用一個(gè)重參數(shù)的技巧簇搅,英文名是reparameterization trick完域。我們利用如下公式
\begin{aligned}&\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(z-\mu)^2}{2\sigma^2}\right)dz \\ =& \frac{1}{\sqrt{2\pi}}\exp\left[-\frac{1}{2}\left(\frac{z-\mu}{\sigma}\right)^2\right]d\left(\frac{z-\mu}{\sigma}\right)\end{aligned}
這說(shuō)明(z-\mu)/\sigma=\varepsilon是服從均值為0、方差為1的標(biāo)準(zhǔn)正態(tài)分布的瘩将,要同時(shí)把dz考慮進(jìn)去吟税,是因?yàn)槌松蟙z才算是概率,去掉dz是概率密度而不是概率姿现。這時(shí)候我們得到:

\mathcal{N}(\mu,\sigma^2)中采樣一個(gè)Z肠仪,相當(dāng)于從\mathcal N(0,I)中采樣一個(gè)ε,然后讓Z=\mu + \varepsilon \times \sigma备典。

于是异旧,我們將從\mathcal{N}(\mu,\sigma^2)采樣變成了從\mathcal N(0,I)中采樣,然后通過(guò)參數(shù)變換得到從\mathcal{N}(\mu,\sigma^2)中采樣的結(jié)果提佣。這樣一來(lái)吮蛹,“采樣”這個(gè)操作就不用參與梯度下降了,改為采樣的結(jié)果參與拌屏,使得整個(gè)模型可訓(xùn)練了潮针。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市倚喂,隨后出現(xiàn)的幾起案子每篷,更是在濱河造成了極大的恐慌,老刑警劉巖端圈,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焦读,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡舱权,警方通過(guò)查閱死者的電腦和手機(jī)吨灭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)刑巧,“玉大人喧兄,你說(shuō)我怎么就攤上這事“〕” “怎么了吠冤?”我有些...
    開(kāi)封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)恭理。 經(jīng)常有香客問(wèn)我拯辙,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任涯保,我火速辦了婚禮诉濒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夕春。我一直安慰自己未荒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布及志。 她就那樣靜靜地躺著片排,像睡著了一般。 火紅的嫁衣襯著肌膚如雪速侈。 梳的紋絲不亂的頭發(fā)上率寡,一...
    開(kāi)封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音倚搬,去河邊找鬼冶共。 笑死,一個(gè)胖子當(dāng)著我的面吹牛每界,可吹牛的內(nèi)容都是我干的比默。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼盆犁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼命咐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起谐岁,我...
    開(kāi)封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤醋奠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后伊佃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體窜司,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年航揉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塞祈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帅涂,死狀恐怖议薪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情媳友,我是刑警寧澤斯议,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站醇锚,受9級(jí)特大地震影響哼御,放射性物質(zhì)發(fā)生泄漏睹逃。R本人自食惡果不足惜翰舌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望璧诵。 院中可真熱鬧坚弱,春花似錦妒蔚、人聲如沸承疲。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矩屁。三九已至辟宗,卻和暖如春爵赵,著一層夾襖步出監(jiān)牢的瞬間吝秕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工空幻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烁峭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓秕铛,卻偏偏與公主長(zhǎng)得像约郁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子但两,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容