原文:http://dongguo.me/blog/2014/01/01/expectation-propagation/
簡介
第一次接觸EP是10年在百度實習時,當時組里面正有計划把線上的CTR預估模型改成支持增量更新的版本,讀到了微軟一篇基於baysian的CTR預估模型的文章(見推薦閱讀5),文章中沒有給出推導的細節,自己也沒有繼續研究。今年在PRML中讀Approximal inference這章對EP有了一些了解,同時參考了其它相關的一些資料,在這里和大家探討。
什么是期望傳播
期望傳播(Expectation Propagation): 基於bayesian的一種近似推斷方法,常用於圖模型中計算單個節點的邊緣分布或者后驗分布,屬於message passing這一類推斷方法。
牛人
首先當然是Thomas Minka, 其在MIT讀博期間提出了EP,並將EP作為博士論文課題在2001年發表。Minka畢業之后去了CMU教書,現在和Bishop一起在劍橋微軟研究院。
其次是Kevin p. Murphy, 他是我做EP相關文獻調研時發現的paper比較多的,我讀到的一篇全文基本都是在推導Minka博士論文中一些公式的細節。btw Murphy 2013年出版了一本書,見推薦閱讀2。
中英文對照
下面是一些關鍵詞的中英文對應 (由於相關的書籍文獻基本都是英文的,有些詞沒有想到比較好的中文翻譯,故保留英文)
截斷高斯: Truncated Gaussian
置信傳播: Belief Propagation (后面會簡稱BP)
期望傳播: Expectation Propagation (后面會簡稱為EP)
消息傳遞: Message passing
背景
EP本身的思想和方法都還是比較簡單的,不過會涉及到一些背景知識,這邊一並介紹。
高斯、截斷高斯
EP的核心思想之一是用指數族分布近似復雜分布,實際應用中通常選擇高斯分布,所以多個高斯分布的乘積,相除,積分在EP應用過程中不可避免。
截斷高斯是高斯分布在指定區間歸一化后的結果,(所以其並不是一個高斯分布),EP本身並不和截斷高斯直接相關,但是如果在分類問題中應用EP,對觀察樣本(0-1)建模方法通常是y=sign(f(x)>t), 和另一個高斯分布相乘之后即為截斷高斯分布。(然后就需要計算其的均值方差,原因后面會提到)
我在另一篇文章Gaussian and Truncated Gaussian中介紹了比較多的細節,可以參考。
指數族分布
指數族分布(exponential family distribution)有着非常好的特性,比如其有充分統計量,多個指數族分布的乘積依然是指數族分布,具體的介紹可以參見wikipedia, 介紹的非常全面,也可以參考PRML第2章。
由於指數族的良好特性,其常被拿去近似復雜的概率分布(EP和variance baysian都是)。由於EP中常常選擇高斯分布,我們這邊強調一下,高斯分布的充分統計量為: (x, x2), 其中x為高斯分布的自變量。
圖模型
EP是貝葉斯流派的計算變量后驗分布(或者說是邊緣分布)的近似推斷方法,通常都可以通過一個概率圖模型來描述問題的生成過程(generation process),所以可以說圖模型是EP的典型應用場景。
圖模型在很多地方都有介紹,比如PRML第8章,在這里就不重復了。有1點提一下,一個圖模型的聯合分布(不管是有向圖還是無向圖)可以寫成若干個因子的乘積,對於有向圖每個因子是每個節點的條件分布(條件於其的所有直接相連的父節點),對於無限圖每個因子是energy function。 這個特性在后面的置信傳播算法會用到。
factor graph
圖模型中節點之間的關系通過邊來表達,factor graph將這種節點之間的關系通過顯式的節點(factor node)來表達,比如對於有向圖,每個factor node就代表一個條件概率分布,圖中的所有的信息都存在於節點上(variable nodes和factor nodes)。
后面的BP和EP都基於factor graph,可以認為factor graph使得圖上的inference方法變得比較直觀,另一個好處是factor graph屏蔽了有向圖和無向圖的差異。(有向圖無向圖都可以轉變為factor graph)
更多了解可以看PRML第8章。
置信傳播
Belief Propagation (BP)又叫’sum-product’,是一種計算圖模型上節點邊緣分布的推斷方法,屬於消息傳遞方法的一種,非近似方法(基於其延伸的Loopy Belief propagation為近似推斷方法)。 BP的核心為如下3點:
- 單個variable node邊緣分布的計算

(注:上圖來之PRML)
前面提到過圖模型的聯合分布可以分解為若干因子的乘積,每個因子對應一個factor node:

每個variable node的邊緣分布為與其直接相連的factor nodes傳遞過來的message的乘積:

- 從factor node到variable node的消息傳遞

(注:上圖來之PRML)
從factor node f傳遞到variable node x的message為:與f直接相連(除了x)的variable nodes傳遞到f的messages與f本身的乘積的積分(積分變量為與f直接相連的除x之外的所有variable nodes):

- 從variable node到factor node的消息傳遞

(注:上圖來之PRML)
從variable node x到factor node f的message為:與x直接相連的factor nodes(除f以外)傳遞到x的messages的乘積:

更多細節請參考PRML
Moment matching
在實際的問題中,要么后驗分布本身比較復雜(推薦閱讀3中的Clutter example),要么最大化后驗的計算比較復雜,要么破壞了具體算法的假設(比如EP要求圖中的所有message都是指數族),所以常常會用(有良好性質的)指數族分布近似實際的概率分布。

用一個分布去近似另一個分布的常見方法是最小化KL散度:

我們發現通過最小化KL散度得到的‘最接近’p(x)的q(x)可以簡單地通過匹配充分統計量的期望得到。
當q(x)為高斯分布的時候,我們知道其充分統計量u(x)=(x, x2),這時通過KL散度最小化近似分布近似的方法稱為moment matching(匹配矩)

為什么稱為匹配矩呢,看看矩的定義就知道了:

期望傳播方法-理論
EP的思想:在圖模型中,用高斯分布近似每一個factors,然后’approximate each factor in turn in the context of all remaining facotrs’.
下面為具體的算法:
(注:本算法參考了PRML)
下面通過Minka博士論文中的例子‘clutter problem’來解釋:每個觀察樣本以(1-w)的概率由高斯分布N(x|sita, I)生成,以w的概率由noise生成(同樣也是高斯分布N(x|0, aI)),於是:

按照EP的思想,我們用一個單高斯q(sita)去近似混合高斯p(x|sita) 
單高斯去近似混合高斯聽起來效果一定不好,但實際上,由於EP在近似的時候乘了其他所有factors的高斯近似之后的上下文,考慮到很多個高斯分布相乘之后的方差一般都很小,所有實際上單高斯只需要在很小的區間近似好混合高斯即可。如下圖:

(注:上面2張圖來之PRML)
其中藍色曲線為混合高斯(沒有畫完整),紅色曲線為近似的單高斯,綠色曲線為‘其它所有factor的乘積’。
EP怎么應用在message passing中:
在圖模型中,所謂的’context of all remaining factors’就是當前節點之外所有節點和messages,所以EP在圖模型中的使用方式為:和BP一樣的方法計算message和marginal distribution,當某個factor或者marginal distribution不是高斯分布時,用高斯分布近似它。所以Minka認為EP也就是BP+moment matching。
由於每個factor以及variable node的邊緣分布都是高斯分布(或被近似為高斯分布),所以EP的計算過程一般並不復雜。
期望傳播方法-應用
EP被廣泛地應用在圖模型的inference上,這邊提一下微軟的2個應用:Bing的CTR預估,XBOX游戲中player skill的評估。
Bing的CTR預估
詳細的推導及實驗請參考:Bayesian CTR prediction for Bing paper中稱這個model為ad predictor,其在我的數據集上預估效果很不錯,訓練預測速度快,天然支持增量更新,主要的缺點就是模型不是稀疏的。如果你知道怎么自然地達到稀疏效果,請指教。
和其它算法的比較請參考:Classification Models
XBOX中player skill的評估
圖模型和上一篇略有差異,推導過程差不多,paper中沒有給出詳細的推導過程,不過Murphy的新書中給出了,請參考推薦閱讀2。
一些小結
- EP的通用性比較好,對於實際的問題,畫出graph model和factor graph,就可以嘗試用EP來進行inference;
- 雖然應用EP時的推導過程略長(計算很多個message和marginal distribution),但是最終的整體的更新公式一般都非常簡單,所以模型訓練時間開銷往往較小;
- 為了使用EP,只能用高斯分布來建模,比如Bing的CTR預估那篇對每個feature的weight建模,只能假設服從高斯分布,相當於是2范數的正則化,不能達到稀疏模型的效果;
- 在我的實驗中,通過EP進行inference得到的模型預估效果不錯,值得一試;
推薦閱讀
-
機器學習保留書籍:Pattern recognition and machine learning 第2,8,10章 (第2章看看高斯四則運算,指數族分布特性;第8章了解圖模型基礎,期望傳播算法;第10章了解期望傳播算法)
-
Murphy新書: Machine Learning: A Probabilistic Perspective 第22章 (本書相比PRML更加具體,第22章干脆包含了TrueSkill的詳細推導步驟)
-
Minka的博士論文:A family of algorithms for approximate Bayesian inference (想了解基本思想和理論看完前3節即可)
-
EP的應用之一:TrueSkill: A Bayesian Skill Rating System (文中並沒有給出EP每一步的細節)
-
EP的應用之二:Web-Scale Bayesian Click-Through Rate Prediction for Sponsored Search Advertising in Microsoft’s Bing Search Engine (CTR預估的應用比較吸引人,文章寫得很棒,算法的效果也很好,只是干脆忽略的inference過程,有興趣的同學可以參看我另一個文章,里面有一步一步推導的過程)
-
Minka整理的EP學習資料:link (其中的包含了一個videolecture上他做的variance inference的talk值得一看)
