Learning deep energy model: contrastive divergence vs. Amortized MLE
- abstract
- 1 Introduction
- 2 Background
- 2.1 stein variational gradient descent
- 2.2 learning energy model
- **contrastive Divergence**
abstract
受SVGD算法的啟發,本文提出兩個算法用于從數據中學習深度能量模型.兩個算法分別為:SteinCD算法和SteinGAN 算法,SteinCD 算法將 CD算法和SVGD算法結合(基于兩者理論上的聯系), SteinGAN 算法通過最大似然訓練一個附加的網絡訓練負樣本. SteinCD有高似然,SteinGAN有高可視化質量.兩者結合可以繼承兩者的優點.
1 Introduction
EBM(energy -based models)能夠捕獲依據能量函數捕獲變量之間的依賴性,為無向圖模型,深度生成模型等提供了一個統一的建模框架.
MLE(maximum likelihood estimator)用于學習EBM中的參數,但是準確MLE由于難以計算的歸一化常數往往無法求解.為了解決這個困境,近年提出了很多方法,例如近似的Likelihood 目標函數,或者可替代的目標函數. Contrastive divergence 是其中一種改進方案,優化的是一個對比目標,該對比目標用以衡量 朝著目標走一定步子的 能夠改進的KL散度(兩個分布沒有搞清楚呦).
CD類的方法能夠獲得很高的測試似然,但是產生不了真實的數據(real-world instance圖像). 能量模型無法捕獲real-world instance 基于的相對第的流形.GAN模型能夠生成高視覺質的樣本但沒有明確的能量目標(使得泛化性能一般). 將GAN模型和EBM模型結合能夠融合兩種方法的優點.
2 Background
2.1 stein variational gradient descent
SVGD 可以是一個近似采樣策略,用于近似從目標分布p(x)p(x)p(x)中采樣(x是d 維度的一個隨機變量).初始化一些列例子{xi}i=1n\{x_i\}_{i=1}^n{xi?}i=1n?(這些例子的經驗分布是q0(x)=∑iδ(x?xi)/nq_0(x)=\sum_{i}\delta(x-x_i)/nq0?(x)=∑i?δ(x?xi?)/n),通過下面的變換操作,使得例子朝著p(x)分布的規律靠近.
xi′←xi+??(xi),?i=1,...,nx_i'\leftarrow x_i + \epsilon \phi(x_i), \forall i=1,...,nxi′?←xi?+??(xi?),?i=1,...,n
其中?\epsilon?為步長,?(xi)\phi(x_i)?(xi?)為xix_ixi?決定的改進方向,這個改進方向應該朝向KL散度下降最快的方向前進(可以直接對W距離優化么)
??=arg?max??∈F{KL(q0∣∣p)?KL(q[??]∣∣p)}(6.1)\phi^*=\arg \max_{\phi \in \mathcal{F}}\{KL(q_0||p) - KL(q_{[\epsilon\phi]}||p)\}\tag{6.1}??=arg?∈Fmax?{KL(q0?∣∣p)?KL(q[??]?∣∣p)}(6.1)
KL(q0∣∣p)?KL(qx′∣∣p)=∫[q0log?q0p?qx′log?qx′p]dxKL(q_0||p)-KL(q_{x'}||p)=\int [q_0\log\frac{q_0}{p} -q_{x'}\log\frac{q_{x'}}{p} ]dxKL(q0?∣∣p)?KL(qx′?∣∣p)=∫[q0?logpq0???qx′?logpqx′??]dx
原來SVGD目標函數只有后半部分
無窮的部分會被減掉,上式子定義了一個非線性方程優化問題.當步長?→0\epsilon \rightarrow 0?→0時, KL散度的下降率(就用這個式子可以計算出來) 可以近似為 KL 散度的梯度(說的是哪兩個分布的KL散度?),寫作:
??=arg?max??∈F{?dd?KL(q[??]∣∣p)∣?=0}(6.2)\phi^* = \arg \max_{\phi \in \mathcal{F}}\{-\frac{d}{d\epsilon} KL(q_{[\epsilon\phi]}||p)|_{\epsilon=0}\}\tag{6.2}??=arg?∈Fmax?{?d?d?KL(q[??]?∣∣p)∣?=0?}(6.2)
最優的?\phi?記為??\phi^*??,是通過使6.1式最大化得到的最優擾動方向.當q0q_0q0?與ppp給定,6.1式子中的KL(q0∣∣p)KL(q_0||p)KL(q0?∣∣p)為一個與優化無關的固定值,則需要最小化KL(q[??]∣∣p)KL(q_{[\epsilon\phi]}||p)KL(q[??]?∣∣p),則需要找到下降(負梯度)最快(max)的方向(即6.2式子所示),在 SVGD 中顯示6.2式可以表示為:
?dd?KL(q[??]∣∣p)∣?=0=Ex~q0[Tp?(x)]-\frac{d}{d\epsilon} KL(q_{[\epsilon\phi]}||p)|_{\epsilon=0}=\mathbb{E}_{x\sim q_0}[\mathcal{T_p\phi(x)}]?d?d?KL(q[??]?∣∣p)∣?=0?=Ex~q0??[Tp??(x)]
Tp\mathcal{T}_pTp?為stein算子,具體作用形式為(返回標量值函數不懂),6.2 式定義了一個discrepency:D(q0∣∣p)\mathbb{D}(q_0||p)D(q0?∣∣p)(距離的定義本身就是一個糟糕的一種情況)
SVGD探索了F\mathcal{F}F需要具備的特性:具有簡單的結構,但是依舊能保持著無限維度以包含所有有用的速度場方向.一個自然的選擇是再生核希爾伯特空間中函數.在這種情況下,最優的??\phi^*??為:
??=Ex~q0[?xlog?p(x)k(x,x′)+?xk(x,x′)]\phi^*=\mathbb{E}_{x \sim q_0}[\nabla_x\log p(x)k(x,x')+ \nabla_xk(x,x')]??=Ex~q0??[?x?logp(x)k(x,x′)+?x?k(x,x′)]
2.2 learning energy model
SVGD 是一個推斷過程,本文研究的是一個學習過程.給定一批樣本{xi}i=1n\{x_i\}_{i=1}^n{xi?}i=1n?,找到一個分布ppp,最好的近似這批樣本.
可以將p分布建模為:
p(x∣θ)=1Z(θ)exp?(f(x;θ))Z(θ)=∫xexp?(f(x;θ))dxp(x|\theta)=\frac{1}{Z(\theta)}\exp(f(x;\theta))\\ Z(\theta)=\int_x \exp (f(x;\theta))dxp(x∣θ)=Z(θ)1?exp(f(x;θ))Z(θ)=∫x?exp(f(x;θ))dx
f(x,θ)f(x,\theta)f(x,θ)為負代表能量的標量值函數, 使用MLE來估計(更新)θ\thetaθ,對最大化對數似然求導數,可以得到參數θ\thetaθ更新的方式,但是有一個致命的缺點是該導數中存在歸一化常數的導數無法直接計算(到現在也沒有明白為啥這個導數難以計算?對參數的導數乘上所有樣本的和?),所以需要對涉及到的這個歸一化參數求導的部分進行 近似處理 .
contrastive Divergence
https://blog.csdn.net/bbbeoy/article/details/79246340 cd 方法的原始論文的翻譯
深度學習方法:受限玻爾茲曼機RBM(四)對比散度contrastive divergence,CD:https://blog.csdn.net/xbinworld/article/details/45274289?utm_source=blogxgwz0
現在的主要問題是如何從KL過度到CD不是很明白,大概是說原來的吉布斯分布采樣是從隨機狀態開始的,現在 從采樣樣本開始,CD算法的前身應該是吉布斯采樣訓練RBM
stein max-min 目標函數還是可以理解,max 是為了越接近與原始KL散度, 外層的Min就是最小化這個KL散度
看完也是一知半解,初步想法框圖,就看多變量的直接請求離差算不算是QR回歸.