1. 程式人生 > >貝葉斯深度學習:變分推理

貝葉斯深度學習:變分推理

1.貝葉斯深度學習

深度學習中,學習的目標是一個確定的權重WWy=f(W,x)y = f(W,x),這可能會存在一些問題(比如被對抗樣本愚弄)。貝葉斯深度學習不希望結果由某一個確定的權重WW決定,希望學習得到一組權重的分佈p(WD)p(W|D)(DD表示資料樣本),然後通過這組權重共同投票得到結果:

y=ip(WiD)f(Wi,x)y = \sum_i p(W_i|D)*f(W_i,x)

給定資料集DD,直接學習得到權重的分佈P(WD)P(W|D)是不太容易的,這裡介紹基於變分的方法。

2.變分法

目標:給定資料集D=[X,Y]D=[X,Y],學習得到權重分佈p(WX,Y)p(W|X,Y) 轉換:學習q(W)q(W)分佈,使得 minKL(qp)min\ KL(q||p)

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ KL(q||p) &= \s… 上式中,p(YX)p(Y|X)表示常數,因此上式可以寫成 KL(qp)=Eq[log q(W)log p(W)log p(

YX,W)]+cKL(q||p)=E_q[\text{log }q(W)-\text{log }p(W)-\text{log }p(Y|X,W)]+c

通過上面的公式,優化目標變成三項,下面用程式實現這三項的優化。

3.程式實現

待優化的公式中,EqE_q這個求平均的操作是通過不斷迭代體現出來的,並不會在程式中顯式地體現。

3.1生成 Eq(log q(W))E_q(\text{log }q(W))

假設q(W)N(μW,σW)q(W)\sim N(\mu_W, \sigma_W)

μ,σ\mu,\sigma無法通過梯度反轉求導。模擬生成q(W)q(W)項可以使用VAE中的重引數技巧,這樣μ,σ\mu,\sigma相當於兩個變數,可以通過梯度反轉優化。

ϵN(0,1)μ+σϵN(μ,σ)\epsilon\sim N(0,1)\Rightarrow \mu+\sigma*\epsilon\sim N(\mu,\sigma)

WW可以看成一組引數的組合,W=[w1,w2,...,wn]W=[w_1,w_2,...,w_n],假設這組引數互相獨立

KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \text{log }q(W…

3.2 Eq(log p(W))E_q(\text{log }p(W))

p(W)p(W)表示權重WW的先驗分佈,假設這個分佈是標準正態分佈。

log p(W)=ilog p(wi)=ilog exp(w0212)\text{log }p(W)=\sum_i\text{log }p(w_i)=\sum_i\text{log }exp(-\frac{w-0}{2*1^2})

3.3 Eq(log p(YX,W))E_q(\text{log }p(Y|X,W))

log p(YX,W)=log exp(f(X,W)Y2σ2)\text{log }p(Y|X,W)=\text{log }exp(-\frac{f(X,W)-Y}{2\sigma^2})

中間區域擬合的線條密集,基本可以重合到一起,這部分割槽域的迴歸結果是可信的,在兩端的線條比較分散,說明這部分的迴歸結果是不可信的。

變分推斷進行函式擬合實驗結果.jpg