如何評價Deep and Hierarchical Implicit Models?

最近David Blei組推出疑似大作:Deep and Hierarchical Implicit Models。在reddit上受到一致好評。粗讀了一下,似乎是提出一個框架把PGM和GAN給統一起來了。但是有點不明白,都implicit了怎麼還會interpretable呢?想請問各位,你認為這個工作有多重要?它主要的貢獻是把很多模型都generalize了,還是能讓我們去approximate更複雜的posterior model,亦或是找到一個可行的方法去解一個很多層的類似deep pgm了?


更新:重新研究了一下paper的求解過程。

============================正文======================

這篇paper的主要目的還是為了train一個deep generative network(DGN),提出了一種train DGN的演算法。實際上是一個演算法paper不是一個框架paper。以下回答你上面關於這篇paper的問題:

  1. 不是統一了PGM和GAN,paper里建立的跟GAN聯繫,但我認為比較牽強。
  2. 也不是generalize什麼東西。
  3. 也不是解deep PGM。(下面會說明)
  4. 確實提供了一種方法approximate更複雜的posterior model

一個generative network(箭頭向下的網路)的一般形式是每層為一個generative distribution p(z_{l}|z_{l+1},eta),最後生成datap(x|z_1,eta),他的joint distribution就是p(x,z,eta)=p(eta)p(x|z_1,eta)prod_lp(z_{l}|z_{l+1},eta).這是所謂的deep PGM的形式,每個 p(z_{l-1}|z_l,eta)都是顯式表達的。

對於(3),所謂的解deep PGM,是這個PGM的顯式表達已經給定了,我們去求它的approximation。而這篇paper不是這麼乾的,他是乾脆就把生成數據的網路model成一個implicit network。PGM里每層生成下一層數據是z_lsim p(z_l|z_{l+1}),而這篇的方法是z_l=g(epsilon,z_{l+1},eta),epsilonsim p(epsilon),這裡g是deterministic function。舉個最簡單的例子:

Gaussian的explicit表示p(x|mu,sigma)=N(mu,sigma) ,implicit表示x=mu+epsilon,epsilonsim N(0,sigma) ,這裡g就是一個線性函數。當然g變的更複雜後,就不一定能找到對應的explicit表示了。

對於PGM,解每層p(z_{l-1}|z_l,eta)都是難問題,每層的p(z_{l-1}|z_l,eta) 都是要normalize的,求partition function(normalization constant)就intractable。而用implicit的表示的好處是我們不需要關心partition function了。

實際上這篇paper的目的是想在Bayesian的框架下對一個network訓練。通常想法是,假設有一個網路,我們首先要把他轉化成PGM的對應形式,然後再用Bayesian的各種inference手段去做訓練。而這篇paper的思路,是我們不需要做這樣的轉化,只需要把給定network的每層作為一個implicit function g,然後我們在每層加一個簡單的generate項epsilonsim p(epsilon) ,整個網路就是probabilistic的了。

剩下的問題就是怎麼求解。paper里從VB lower bound出發,把問題轉化成求解形如E_q[lnfrac{p}{q}] 的expected density ratio的問題,然後用一個類似GAN的ratio estimation方法近似這個目標,得出了一個求解方法。

對於這個求解方法我有些疑問:

  1. 對marginal distribution q(x),這個分解 ln q(x)=sum_nln q(x_n) 是一定不成立的,所以我對(5)到(6)的合理性有疑問。
  2. 對於(7)的解貌似是近似的density ratio: p/q ,而並不是expectation: int qlnfrac{p}{q} 。然後文中說解了GAN的target就近似解了Bayesian lower bound,我覺得這個近似有點扯,並且太刻意。而恰恰用哪個分布對log ratio求期望才是Bayesian和non Bayesian的分界嶺。

雖然說,以上兩點反正是近似,也不是很有所謂。但這樣隨意的近似對我來說實在是有點無厘頭。

這篇paper還是很有創新性,把VB lower bound轉化implicit distribution的ratio estimation問題進行求解。至於這種轉化中間的近似是否合理,見仁見智吧。一作Dustin Tran最近一直開發Edward的同時,還推了這麼複雜的公式出來,實在精力過人。

但從實用角度看,我覺得問題很大。推導中各種近似太隨意,演算法的過程依然一堆的sampling。我猜無論訓練時間,還是模型效果應該都無法跟state of art(GAN)相比,這可能是為什麼實驗部分做了個很偏門的應用,也沒有跟state of art方法進行比較。

雖然我很佩服他們的工作量,但我覺得類似於mean filed+sampling的inference演算法再怎麼搞也很難走通,畢竟獨立性assumption過強導致的underestimate是fundamental problem,對於深度網路尤其嚴重,網路越複雜問題越嚴重,而sampling讓近似有效性問題變的更嚴重,而且收斂速度必然很慢。相比較而言,我覺得Bayesian方法要想實用還是得解決inference演算法underestimate問題。近期Bayesian deep generative model方面比較好的工作是那篇normalizing flow,走出了一條inference的新路。接緊著VAE那票人也用normalizing flow去訓練了一下,效果也不錯。不過normalizing flow也有問題,他要求每層節點數目相同,限制了靈活度。

最後還是心疼一下搞Bayesian的,各種non trivial idea,各種複雜數學推導,各種手寫實現,迭代一圈發現效果還是渣。相比較主流的拍腦袋之後直接改tensorflow script,然後效果還不錯。能堅持搞Bayesian,著實不易。


Bayesian Deep Learning入坑多日(誤),來講講我對這篇論文的粗淺理解,犯錯請輕噴。這篇論文在建模、求解方面很有亮點,但是實驗部分好像不是那麼亦可賽艇,感覺這個研究方向還是任重道遠啊。

1.建模

在生成模型中我們對概率分布一般的建模方式是所謂的explicit probability model,而這篇論文推的則是implicit probability model。兩者區別在於前者能夠寫出一個顯式的概率密度函數(density)或似然函數(likelihood),後者只能從這個概率分布中採樣,但是不要求能夠計算某個樣本的likelihood。兩者各有優劣:

  • explicit的好處是能夠對這個函數求導,因而可以相對方便地推導出一些近似梯度的計算公式(gradient estimator),不過這就涉及到很多其他論文了;壞處是真實世界中的分布可能會很複雜,不是我們能夠顯式寫出來的,或者即便寫出來了,也不是一個良好的建模,不能充分反映真實世界的分布。
  • implicit則相反,其思想可以概括為:複雜隨機分布=簡單隨機分布+複雜確定性映射。我們耳熟能詳的GAN就是一個代表,它把複雜的圖片分布拆解成一個簡單的高斯分布外加一個複雜的多層反卷積網路。於是我們就不需要直接寫出複雜分布的似然函數,只需要先對簡單分布採樣,再做一個複雜的確定性映射,從而達成對複雜分布的採樣,這種做法在很多地方也叫重參數化(reparameterization)。implicit model的好處是大大提高了建模的靈活度。壞處是沒有了顯式似然函數就很難對目標函數求導了,這一點我們可以在下面的公式中看到。

2.求解

既然希望獲得implicit model的靈活建模能力,那就一定要找到一個可行的求解方式,而作者給出的答案是一個叫ratio estimation的關鍵技術。

implicit model帶來的困難主要體現在論文公式6中的log frac{p(x_n, z_n | eta)}{q(x_n, z_n | eta)},裡面的分子分母我們都只能採樣,沒法求值,也就沒法求梯度。然而ratio estimation能夠幫我們直接對上面這個式子顯式地(近似)求值,因而也就可以計算梯度了。

ratio estimation是說現在有兩個分布p和q,然後給一個樣本x,可能採樣自p也可能採樣自q,所以有兩個似然p(x)q(x),然後我們就要estimate這兩個似然的log ratio log frac{p(x)}{q(x)}。為此我們可以訓練一個網路來做分類,試圖把采自p的樣本分為第一類,把采自q的樣本分為第二類,當分類器在這個二分類任務上訓練到最優的時候,它剛好就會是一個log ratio estimator。有了可以顯式求值的log ratio estimator之後,目標函數公式6中的log frac{p(x_n, z_n | eta)}{q(x_n, z_n | eta)}就可以求梯度了。

看到這裡很多人可能會聯想到GAN的判別器,沒錯,實際上這個ratio estimator的數學形式完全跟GAN的判別器一樣,具體參見論文公式7。所以論文說它「結合了PGM和GAN」是沒錯的,建模部分是PGM,求解的形式完完全全就是一個GAN,不能說它跟GAN沒毛關係。

3.實驗

好像還很少看到Bayesian在大數據集上做的,這篇也是,感覺並沒有很大亮點,我個人比較在意的是裡面文本GAN的實驗。

我們知道文本GAN的一個代表作是SeqGAN,但是可惜SeqGAN擺脫不了生成器的預訓練過程,所以大家也在試圖直接from scratch訓練文本GAN。

後面就出了一篇直接from scratch訓練的Gumbel-Softmax GAN,理論上的腦洞也很大,可惜實驗效果非常渣。首先,數據集不是自然語言,而是非常簡單的四則運算公式序列,其次,就算這麼簡單的數據它都還學不好,稍有常識的人都可以看出,生成出來序列簡直是一堆亂碼。所以它雖然理論上看著還不錯,但是評價並不高。

回到我們講的論文上,4.4節的文本GAN實驗也同樣是在四則運算序列上from scratch訓練,從Figure 6可以看出模型還是有學到pattern的,相對於Gumbel-Softmax GAN而言,也算是朝著無預訓練的文本GAN前進了一步。期待後面可以在自然文本上work。


很高興看到貝葉斯機器學習的討論居然上了雷鋒網

Reddit一致好評的David Blei新作,其實有兩大硬傷亟待斟酌

但是我認為這所謂兩大硬傷,其實解釋的有些問題。

1. 論文中假設 q(x) 是 underlying data distribution,按照一貫的 「觀測到的數據 x_n 是來自 data distribution 的 iid samples」 的假設,factorisation 是正確的。這與 integral 無關。

2. 「對哪個分布求期望是貝葉斯和非貝葉斯的分水嶺」 ?????

貝葉斯和非貝葉斯在實際計算中的重要區別是對於隱變數推斷 (inference) 的方法。非貝葉斯求 point estimate並且注重證明這個estimate 收斂到真值 (即 consistency),而貝葉斯方法是求隱變數的後驗概率 p(z|x) 並且用它對未來數據進行預測。這個後驗概率因為難以計算,所以才會有一大堆近似貝葉斯推斷 (approximate Bayesian inference)的研究。在這些研究中絕大部分都假設了一個近似分布,用本文的術語就是 q(z|x) 。而一般來說我們會去最小化這個近似分布到後驗分布的某個 distance/divergence/discrepancy 來求解 q(z|x)。這裡所謂「對 p 還是對 q 求期望,或者是即對 p 又對 q 求」實際上只是選擇了不同的 divergence (KL[q||p], KL[p||q], JS[p||q])而已,只要優化對象仍然是 q,那麼這仍然屬於求解近似分布,並且如果在預測中使用q,那麼我們仍然在做近似貝葉斯推斷。

另外順便吐槽一下,相似 idea 其實同時被三組人投稿到 ICML,而我在去年 NIPS approximate inference workshop 上也展示過含相似 idea 的海報,只不過我的注意力馬上被吸引到其他更有趣的項目了。


推薦閱讀:

已知兩個高斯分布及他們的關係,如何求條件期望?
深度學習乃至機器學習和凸論有什麼本質聯繫?
怎麼看待現在一些論文提出的新點子就只在mnist或者cifar上跑跑實驗?
如何評價CVPR best paper simGAN?
如何解讀論文《Generalization in Deep Learning》?

TAG:機器學習 | 深度學習DeepLearning | 概率圖模型 | Bayesian |