變分自編碼為何迫使p z x 等於標準正態分佈?就是約束項中的kl散度?

時間 2021-05-29 22:34:38

1樓:MANTIC

k-L 散度衡量的是兩個函式之間的距離,這個距離指的是相似度,之所以設定標準正態分佈無非是設定為正態分佈比較好取值,模型能夠得到簡化,你設定成別的正態分佈也可以。

2樓:

接 @李斌 的回答,猜測下除了保證方差為1,為什麼要均值為0?

正文:僅猜測,其實就是為了共享引數。

VAE的本質是,對於乙個樣本X^(i),encode提取出對應的Z^(i),相當於資料壓縮。

假設訓練集只有乙個樣本X^(1),對應乙個Z^(1),那麼Z的經驗分布p(z)和encoder的分布q(z|x)就可以是N(u^(1)|1),就是均值為u^(1),方差為1的正態分佈。

但是如果訓練集有多個樣本X^(i), i = 1, 2, ...n,那麼就會有多個u^(i)。u^(i)互不相同,則表示模型本身就不相同。

那就意味著要設計並訓練n個模型,也就是n個encoder,這樣成本太高了。(注:這裡的u^(i)是模型引數,不是實際的取樣結果)

所以為了保證所有樣本對應的模型相同,也就是只使用乙個模型對所有樣本進行encode,那就需要共享引數,對齊u^(i),也就是假設u^(i) = u_0,就是都等於某個值,這樣乙個encoder才能對所有的樣本都通用。

之所以等於0,是因為先假設了方差為1,則均值統一為0,意味著得到標準正態,模型能得到簡化。

至於為什麼一定程度上能簡化模型?參閱[1]中的公式(6)、(7)。

[1] Doersch C. Tutorial on variational autoencoders[J]. arXiv preprint arXiv:

1606.05908, 2016.

3樓:ALme

因為設定z的先驗是標準正態,便需要在訓練過程中與之聯絡.換句話說,最後用vae生成樣本時,用的是標準正態分佈對z隨機取樣,然後將z送入decoder得到樣本.如果我們把用於最後取樣的分布 換成另外乙個分布,那麼loss中的 中的p(z)也會隨之改變。

既然從先驗分布中取樣z送入decoder得到樣本,而且根據貝葉斯rule寫出的z的後驗分布表示式 的分母中有z的先驗分布項p(z),所以z的後驗分布與z的先驗分布總體上是接近的,所以loss中在訓練 的變分分布 時需要拉近這兩個分布的距離.若loss中沒有 這一項,那麼從先驗分布取樣的操作和訓練變分後驗分布的過程完全無關,則訓練出的近似後驗分布和給定的先驗分布失去了聯絡,天差萬別,怎麼保證最後生成的樣本是接近真實的樣本?loss有了這一項之後,才能確保 逼近的分布是z的後驗分布,而不是完全無關的乙個分布。

綜上,這本身沒有什麼理由,完全是先驗是標準正態分佈導致的,採用標準正態分佈只不過是因為取樣比較方便,完全可以換成其他的乙個分布。

以上只是直觀的理解,若把變分推斷的ELBO的推導完全看一遍,相信可以有更深刻的理解.

4樓:

拋磚引玉答乙個。如果沒有這一約束,隨著訓練進行,模型會傾向於令 變得很小,此時,從分布 中進行取樣,基本上等同於直接把 取出來 。

顯然,讓乙個重建樣本看上去是真的,要比讓乙個分布裡面的所有重建樣本看上去像是真的,容易的多。這個時候,變分自編碼器就退化成了普通自編碼器。

KL Loss起的作用實際上是把這個過程往回拉。

變分自編碼器的重建損失為什麼有人用交叉熵損失 有人用平方差

Taffy lll 一般來說,p x z 的選取和x的取值空間是密切相關的 如果x是二值影象,這個概率一般用伯努利分布,而伯努利分布的對數似然就是binary cross entropy,可以調各大DL庫里的BCE函式 如果x是彩色 灰度影象,這個概率取高斯分布,那麼高斯分布的對數似然就是平方差。 ...

受限制玻爾茲曼機 RBM 以及自編碼器 Autoencoder

斜槓青年姬十一 文藝女青年認為的優點 1,留過學。不會賺錢留過學有啥用?2,會鋼琴。不會賺錢會鋼琴有啥用?3,碩士學歷。不會賺錢碩士學歷有啥用?4,會四門外語。不會賺錢會四門外語有啥用?去字幕組嗎?5,善良有孝心。又不是對我父母有孝心,是對你自己父母有孝心。6,比較顧家。比較顧自己父母家,不是顧你和...

怎麼分變愛情與親情?

普進峰 親情是我應該對他好,愛情是我想對他好。親情是理性的,愛情是感性的。親情是有原因的,愛情是沒有原因的。親情的原因是血緣和婚姻,愛情的原因只能是愛情本身。 巧克力咖啡木子 親情無論發生什麼矛盾,傷害多麼的巨大,到頭來還會依賴對方,愛情有了巨大的裂痕後,就是分手或離婚,還有一種可能,就是將愛情變為...