日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模型学习 - VAE(变分自编码)专题

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模型学习 - VAE(变分自编码)专题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 生成模型
  • VAE模型
    • 理解角度1
    • 理解角度2

? ? ? ?理解出錯之處望不吝指正。
? ? ? ?今天聽師兄給我們講了VAE,覺得頗有收獲,分享一下,希望大家批評指正。

生成模型

? ? ? ?生成模型的目的是從一系列樣本x={x1,x2,...,xm}x=\{x_1,x_2,...,x_m\}x={x1?,x2?,...,xm?}中學習xxx的分布p(x)p(x)p(x),我們可以仿照EM算法,通過隱變量zzz和生成函數g()g()g()來得到x^=g(z)\hat x=g(z)x^=g(z),并盡可能的讓x^\hat {x}x^接近xxx
? ? ? ?上述方法有一個弊端,我們首先依據全概率公式將p(x)p(x)p(x)寫成如下形式:
p(x)=∑p(x∣z)p(z)p(x)=\sum p(x|z)p(z)p(x)=p(xz)p(z)
? ? ? ?我們易獲取到p(z)p(z)p(z),但是在zzz確定的情況下,無法得知p(x∣z)p(x|z)p(xz),這意味著我們無法將?“利用g()g()g()函數生成的x^i\hat x_ix^i??與?“真實的xix_ixi??進行對應,如下圖所示:
? ? ? ?
? ? ? ?那么怎么解決這個問題呢,接著往下看~

VAE模型

? ? ? ?在VAE模型中,我們解決了上述問題。我們可以從兩個角度理解VAE模型,首先是角度1。

理解角度1

? ? ? ?為了解決上述問題,將學習p(x)p(x)p(x)改為學習p(z∣x)p(z|x)p(zx)即可!
? ? ? ?我們令p(z∣x)~N(μ,σ2)p(z|x)\sim N(\mu,\sigma^2)p(zx)N(μ,σ2)(ps:為什么這個先驗分布是正態分布呢?因為若是其他分布,后面計算KL散度的時候會導致分母為0)。則VAE的編碼解碼過程如下圖所示:
? ? ? ?
? ? ? ?更具體的,我們假設p(z∣x)~N(0,1)p(z|x)\sim N(0,1)p(zx)N(0,1),即:我們在編碼過程中期望學到μi=0,σi=1\mu_i=0,\sigma_i=1μi?=0,σi?=1,則VAE的訓練過程中會產生以下兩種情況(類似于對抗):
? ? ? ?1.若σi2→1\sigma_i^2\rightarrow1σi2?1,此時加在xix_ixi?上的噪聲大,會導致已有的解碼能力效果變差,通過反向傳播會使得σi2→0\sigma_i^2\rightarrow0σi2?0
? ? ? ?2.若σi2→0\sigma_i^2\rightarrow0σi2?0,此時加在xix_ixi?上的噪聲小,會導致已有的解碼能力效果變好,通過反向傳播會使得σi2→1\sigma_i^2\rightarrow1σi2?1
? ? ? ?
? ? ? ?VAE模型的損失函數如下:
Lvaep(z∣x)=loss(x,x^)+KL[N(μ,σ2)∣∣N(0,1)]L_{vae}^{p(z|x)}=loss(x,\hat x)+KL[N(\mu,\sigma^2)||N(0,1)]Lvaep(zx)?=loss(x,x^)+KL[N(μ,σ2)N(0,1)]
? ? ? ?損失函數中第一部分loss(x,x^)loss(x,\hat x)loss(x,x^)代表真實數據xxx與生成數據x^\hat xx^之間的誤差,可以使用簡單的logistics損失或者MSE損失。
? ? ? ?損失函數中第二部分是一個KL散度,用于衡量編碼過程中得到的分布是否接近我們設置的先驗分布N(0,1)N(0,1)N(0,1),下面對這部分進行詳細的剖析。

? ? ? ? ? ? ? ?KL[N(μ,σ2)∣∣N(0,1)]KL[N(\mu,\sigma^2)||N(0,1)]KL[N(μ,σ2)N(0,1)]

? ? ? ?? ?=∫12πσexp{?(x?μ)22σ2}?log?12πσexp{?(x?μ)22σ2}12πexp{?x22}dx=\int \frac{1}{\sqrt{2\pi}\sigma}exp\{\frac{-(x-\mu)^2}{2\sigma^2}\}\centerdot\log \frac{\frac{1}{\sqrt{2\pi}\sigma}exp\{\frac{-(x-\mu)^2}{2\sigma^2}\}}{\frac{1}{\sqrt{2\pi}}exp\{\frac{-x^2}{2}\}}dx=2π?σ1?exp{2σ2?(x?μ)2?}?log2π?1?exp{2?x2?}2π?σ1?exp{2σ2?(x?μ)2?}?dx

? ? ? ?? ?=12∫12πσexp{?(x?μ)22σ2}?[?log?σ2+x2?(x?μ)2σ2]dx=\frac{1}{2}\int \frac{1}{\sqrt{2\pi}\sigma}exp\{\frac{-(x-\mu)^2}{2\sigma^2}\}\centerdot[-\log \sigma^2+x^2-\frac{(x-\mu)^2}{\sigma^2}]dx=21?2π?σ1?exp{2σ2?(x?μ)2?}?[?logσ2+x2?σ2(x?μ)2?]dx

? ? ? ?? ?=12(?log?σ2+μ2+σ2?1)=\frac{1}{2}(-\log \sigma^2+\mu^2+\sigma^2-1)=21?(?logσ2+μ2+σ2?1)

? ? ? ?? ?=12μ2+12(σ2?log?σ2?1)=\frac{1}{2}\mu^2+\frac{1}{2}(\sigma^2-\log \sigma^2-1)=21?μ2+21?(σ2?logσ2?1)

理解角度2

? ? ? ?在理解角度1中,我們由于不能計算p(x∣z)p(x|z)p(xz),所以將學習p(x)p(x)p(x)改為了學習p(z∣x)p(z|x)p(zx),但是我們忽略了p(x)p(x)p(x)不僅可以使用全概率公式分解為p(x)=∑p(x∣z)p(z)p(x)=\sum p(x|z)p(z)p(x)=p(xz)p(z),還可將p(x)p(x)p(x)寫為p(x)=∫p(x,z)dzp(x)=\int p(x,z)dzp(x)=p(x,z)dz,在這種情況下,我們假設先驗分布為q(x,z)q(x,z)q(x,z),則我們的學習目標變為:令p(x,z)p(x,z)p(x,z)無限趨近q(x,z)q(x,z)q(x,z),如下所示:

? ? ? ? ? ? ? ?KL[p(x,z)∣∣q(x,z)]KL[p(x,z)||q(x,z)]KL[p(x,z)q(x,z)]

? ? ? ?? ?=∫∫p(x,z)log?p(x,z)q(x,z)dzdx=\int\int p(x,z)\log \frac{p(x,z)}{q(x,z)} dz dx=p(x,z)logq(x,z)p(x,z)?dzdx

? ? ? ?? ?將p(x,z)=p^(x)p(z∣x)p(x,z)=\hat p(x)p(z|x)p(x,z)=p^?(x)p(zx)帶入上式,其中p^(x)\hat p(x)p^?(x)代表利用已有的xxx值通過估計得到的分布,可得:

? ? ? ?? ?=∫p^(x)[∫p(z∣x)log?p^(x)p(z∣x)q(x,z)dz]dx=\int \hat p(x)[ \int p(z|x) \log \frac{\hat p(x)p(z|x)}{q(x,z)}dz] dx=p^?(x)[p(zx)logq(x,z)p^?(x)p(zx)?dz]dx

? ? ? ?? ?=Ex~p^(x)[∫p(z∣x)log?p^(x)p(z∣x)q(x,z)dz]=E_{x\sim\hat p(x)}[\int p(z|x) \log \frac {\hat p(x)p(z|x)}{q(x,z)}dz]=Exp^?(x)?[p(zx)logq(x,z)p^?(x)p(zx)?dz]

? ? ? ?? ?將q(x,z)=q(z)q(x∣z)q(x,z)=q(z)q(x|z)q(x,z)=q(z)q(xz)p(z∣x)log?p(z∣x)q(z)=KL[p(z∣x)∣∣q(z)]p(z|x)\log \frac {p(z|x)}{q(z)}=KL[p(z|x)||q(z)]p(zx)logq(z)p(zx)?=KL[p(zx)q(z)]帶入上式,可得:

? ? ? ?? ?=Ex~p^(x){Ez~p(z∣x)[?log?q(x∣z)]+KL[p(z∣x)∣∣q(z)]}=E_{x\sim\hat p(x)}\{E_{z\sim p(z|x)}[-\log q(x|z)] + KL[p(z|x)||q(z)]\}=Exp^?(x)?{Ezp(zx)?[?logq(xz)]+KL[p(zx)q(z)]}


? ? ? ?我們可以發現,這樣計算得到的公式中每一項可以和Lvaep(z∣x)L_{vae}^{p(z|x)}Lvaep(zx)?中的每一項對應:

? ? ? ?? ??log?q(x∣z)?loss(x,x^)-\log q(x|z)\longleftrightarrow loss(x,\hat x)?logq(xz)?loss(x,x^)

? ? ? ?? ?KL[p(z∣x)∣∣q(z)]?KL[N(μ,σ2)∣∣N(0,1)]KL[p(z|x)||q(z)]\longleftrightarrow KL[N(\mu,\sigma^2)||N(0,1)]KL[p(zx)q(z)]?KL[N(μ,σ2)N(0,1)]


? ? ? ?原文中說q(x∣z)q(x|z)q(xz)可以為兩種分布:1.伯努利分布(B);2.正態分布(N)
? ? ? ?1.當q(x∣z)~Bq(x|z)\sim Bq(xz)B時,容易看出這是交叉熵損失:
?log?q(x∣z)=∑{xklog?pk(z)+(1?xk)log?[1?pk(z)]}-\log q(x|z) = \sum \{x_k\log p_k(z)+(1-x_k)\log [1-p_k(z)]\}?logq(xz)={xk?logpk?(z)+(1?xk?)log[1?pk?(z)]}
? ? ? ?2.當q(x∣z)~Nq(x|z)\sim Nq(xz)N時,容易看出這是均方誤差損失:
?log?q(x∣z)=12σ2∣∣x?μk∣∣2-\log q(x|z) = \frac {1}{2\sigma_2}||x-\mu_k||^2?logq(xz)=2σ2?1?x?μk?2

總結

以上是生活随笔為你收集整理的模型学习 - VAE(变分自编码)专题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。