變分推斷

在github看到這個文章寫的不錯息拜,就轉(zhuǎn)載了掘猿,大家一起學(xué)習:
https://github.com/keithyin/mynotes/tree/master/MachineLearning/algorithms

——————————————————————————————————————————
該作者也推薦了下面一個系列的文章,也寫的不錯:

——————————————————————————————————————————

Variational Auto-Encoder

大家對貝葉斯公式應(yīng)該都很熟悉
P(Z|X)=\frac{p(X,Z)}{\int_z p(X,Z=z)dz}

我們稱P(Z|X)posterior distributionposterior distribution的計算通常是非常困難的,為什么呢袒炉?
假設(shè)Z是一個高維的隨機變量,如果要求P(Z=z|X=x),我們不可避免的要計算\int_z p(X=x,Z=z)dz,由于Z是高維隨機變量樊零,這個積分是相當難算的我磁。

variational inference就是用來計算posterior distribution的。

core idea

variational inference的核心思想包含兩步:

  • 假設(shè)分布q(z;\lambda) (這個分布是我們搞得定的驻襟,搞不定的就沒意義了)
  • 通過改變分布的參數(shù) \lambda , 使 q(z;\lambda) 靠近 p(z|x)

總結(jié)稱一句話就是夺艰,為真實的后驗分布引入了一個參數(shù)話的模型。 即:用一個簡單的分布 q(z;\lambda) 擬合復(fù)雜的分布 p(z|x) 塑悼。

這種策略將計算 p(z|x) 的問題轉(zhuǎn)化成優(yōu)化問題了
\lambda^* = \arg\min_{\lambda}~divergence(p(z|x),q(z;\lambda))
收斂后劲适,就可以用 q(z;\lambda) 來代替 p(z|x)

公式推導(dǎo)

\begin{aligned} \text{log}P(x) &= \text{log}P(x,z)-\text{log}P(z|x) \\ &=\text{log}\frac{P(x,z)}{Q(z;\lambda)}-\text{log}\frac{P(z|x)}{Q(z;\lambda)} \end{aligned}
等式的兩邊同時對分布Q(z)求期望楷掉,得
\begin{aligned} \mathbb E_{q(z;\lambda)}\text{log}P(x) &= \mathbb E_{q(z;\lambda)}\text{log}P(x,z)-\mathbb E_{q(z;\lambda)}\text{log}P(z|x), \\ \text{log}P(x)&=\mathbb E_{q(z;\lambda)}\text{log}\frac{p(x,z)}{q(z;\lambda)}-\mathbb E_{q(z;\lambda)}\text{log}\frac{p(z|x)}{q(z;\lambda)}, \\ &=KL(q(z;\lambda)||p(z|x))+\mathbb E_{q(z;\lambda)}\text{log}\frac{p(x,z)}{q(z;\lambda)},\\ \text{log}P(x)&=KL(q(z;\lambda)||p(z|x))+\mathbb E_{q(z;\lambda)}\text{log}\frac{p(x,z)}{q(z;\lambda)}, \end{aligned}
我們的目標是使 q(z;\lambda) 靠近 p(z|x) 厢蒜,就是\min_\lambda KL(q(z;\lambda)||p(z|x))

由于 KL(q(z;\lambda)||p(z|x)) 中包含 p(z|x) ,這項非常難求烹植。將\lambda看做變量時斑鸦,\text{log}P(x) 為常量,所以草雕, \min_\lambda KL(q(z;\lambda)||p(z|x)) 等價于 \max_\lambda \mathbb E_{q(z;\lambda)}\text{log}\frac{p(x,z)}{q(z;\lambda)}巷屿。

\mathbb E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)] 稱為Evidence Lower Bound(ELBO)。

現(xiàn)在墩虹,variational inference的目標變成\max_\lambda \mathbb E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)]

為什么稱之為ELBO呢嘱巾?
p(x)一般被稱之為evidence,又因為 KL(q||p)>=0, 所以 p(x)>=E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)], 這就是為什么被稱為ELBO诫钓。

ELBO

繼續(xù)看一下ELBO
\begin{aligned} ELBO(\lambda) &= \mathbb E_{q(z;\lambda)}[\text{log}p(x,z)-\text{log}q(z;\lambda)] \\ &= \mathbb E_{q(z;\lambda)}\text{log}p(x,z) -\mathbb E_{q(z;\lambda)}\text{log}q(z;\lambda)\\ &= \mathbb E_{q(z;\lambda)}\text{log}p(x,z) + H(q) \end{aligned}
The first term represents an energy. The energy encourages q to focus probability mass where the model puts high probability p(\mathbf{x}, \mathbf{z}). The entropy encourages q to spread probability mass to avoid concentrating to one location.

q(Z)

Z包含K個獨立部分(K 維旬昭, 當然,第i維也可能是高維向量)菌湃,我們假設(shè):
q(Z;\lambda) = \prod_{k=1}^{K}q_k(Z_k;\lambda_k)
這個被稱為mean field approximation问拘。(關(guān)于mean field approximationhttps://metacademy.org/graphs/concepts/mean_field

ELBO則變成
\begin{aligned} ELBO(\lambda) &= \mathbb E_{q(Z;\lambda)}\text{log}p(X,Z) -\mathbb E_{q(z;\lambda)}\text{log}q(Z;\lambda) \\ &= \int q(Z;\lambda)\text{log}p(X,Z)dZ-\int q(Z;\lambda)\text{log}q(Z;\lambda)dZ\\ &=\int [\prod_{k=1}^{K}q_k(Z_k;\lambda_k)] \text{log}p(X,Z)dZ-\int [\prod_{k=1}^{K}q_k(Z_k;\lambda_k)] \text{log}q(Z;\lambda)dZ \end{aligned}
第一項為 energy, 第二項為H(q)

energy

符號的含義:

Z = \{Z_j,\overline Z_j \}, \overline Z_j=Z\backslash Z_j
\lambda=\{\lambda_j, \overline\lambda_j\}, \overline \lambda_j=\lambda\backslash\lambda_j

先處理第一項:
\begin{aligned} &\int \Bigr[\prod_{k=1}^{K}q_k(Z_k;\lambda_k)\Bigr] \text{log}p(X,Z)dZ = \\ &\int_{Z_j}q_j(Z_j;\lambda_j)\int_{ \overline Z_j}\Bigr[\prod_{k=1,k\neq j}^K q_k(Z_k;\lambda_k)\Bigr]\text{log}p(X,Z)d \overline Z_jdZ_j = \\ &\int_{Z_j}q_j(Z_j;\lambda_j)\Bigr[E_{q(\overline Z_j;\overline \lambda_j)}\text{log}p(X,Z)\Bigr]dZ_j=\\ &\int_{Z_j}q_j(Z_j;\lambda_j)\{\log \exp\Bigr[E_{q(\overline Z_j;\overline \lambda_j)}\text{log}p(X,Z)\Bigr]\}dZ_j=\\ &\int_{Z_j}q_j(Z_j;\lambda_j)\Bigr[\log q_j^* (Z_j;\lambda_j)+\log C\Bigr]dZ_j \end{aligned}
其中q_j^* (Z_j;\lambda_j)=\frac{1}{C}\exp[E_{q(\overline Z_j;\overline \lambda_j)}\text{log}p(X,Z)] , C 保證 q_j^* (Z_j;\lambda_j) 是一個分布惧所。C 與分布的參數(shù) \overline \lambda_j 有關(guān)骤坐,與變量無關(guān)!下愈!

H(q)

再處理第二項:
\begin{aligned} &\int \Bigr[\prod_{k=1}^{K}q_k(Z_k;\lambda_k)\Bigr] \text{log}q(Z;\lambda)dZ = \\ &\int \Bigr[\prod_{k=1}^{K}q_k(Z_k;\lambda_k)\Bigr] \sum_{n=1}^K\text{log}q(Z_n;\lambda)dZ = \\ &\sum_j\int \Bigr[\prod_{k=1}^{K}q_k(Z_k;\lambda_k)\Bigr] \text{log}q(Z_j;\lambda_j)dZ=\\ &\sum_j\int \Bigr[\prod_{k=1}^{K}q_k(Z_k;\lambda_k)\Bigr] \text{log}q(Z_j;\lambda_j)dZ=\\ &\sum_j\int_{Z_j} q_j(Z_j;\lambda_j)\text{log}q(Z_j;\lambda_j)dZ_j\int [\prod_{k=1,k\neq j}^{K}q_k(Z_k;\lambda_k)]d\overline Z_j=\\ &\sum_j\int_{Z_j} q_j(Z_j;\lambda_j)\text{log}q(Z_j;\lambda_j)dZ_j \end{aligned}

再看ELBO

經(jīng)過上面的處理纽绍,ELBO變?yōu)?br> \begin{aligned} ELBO &= \int_{Z_i}q_i(Z_i;\lambda_j)\text{log}q_i^* (Z_i;\lambda_i)dZ_i-\sum_j\int_{Z_j} q_j(Z_j;\lambda_j)\text{log}q(Z_j;\lambda_j)dZ_j+\log C\\ &=\{\int_{Z_i}q_i(Z_i;\lambda_j)\text{log}q_i^* (Z_i;\lambda_i)dZ_i-\int_{Z_i} q_i(Z_i;\lambda_j)\text{log}q(Z_i;\lambda_i)dZ_i\} +H(q(\overline Z_i;\overline \lambda_i))+\log C\\ & \end{aligned}
再看上式 \{\} 中的項:
\int_{Z_i}q_i(Z_i;\lambda_j)\text{log}q_i^* (Z_i;\lambda_i)dZ_i-\int_{Z_i} q_i(Z_i;\lambda_j)\text{log}q(Z_i;\lambda_i)dZ_i = -KL(q_i(Z_i;\lambda_j)||q_i^* (Z_i;\lambda_i))
所以ELBO又可以寫成:
ELBO=-KL(q_i(Z_i;\lambda_j)||q_i^* (Z_i;\lambda_i))+H(q(\overline Z_i;\overline \lambda_i))+\log C
我們要maxmize ELBO,如何更新 q_i(Z_i;\lambda_i) 呢势似?

ELBO=-KL(q_i(Z_i;\lambda_i)||q_i^* (Z_i;\lambda_i))+H(q(\overline Z_i;\overline \lambda_i))+\log C
可以看出顶岸,當 q_i(Z_i;\lambda_j)=q_i^* (Z_i;\lambda_i) 時腔彰, KL(q_i(Z_i;\lambda_j)||q_i^* (Z_i;\lambda_i))=0 。 這時辖佣,ELBO取最大值霹抛。
所以參數(shù)更新策略就變成了
\begin{aligned} &q_1(Z_1;\lambda_1)=q_1^* (Z_1;\lambda_1)\\ &q_2(Z_2;\lambda_2)=q_2^* (Z_2;\lambda_2)\\ &q_3(Z_3;\lambda_3)=q_3^* (Z_3;\lambda_3)\\ &... \end{aligned}
關(guān)于 q_i^* (Z_i;\lambda_i)
\begin{aligned} q_i(Z_i;\lambda_i)&=q_i^* (Z_i;\lambda_i)\\ q_i (Z_i;\lambda_i)&=\frac{1}{C}\exp[E_{q(\overline Z_i;\overline \lambda_i)}\text{log}p(X,Z)]\\ &=\frac{1}{C}\exp[E_{q(\overline Z_i;\overline \lambda_i)}\text{log}p(X,Z_i,\overline Z_i)]\\ & \end{aligned}
q_i 是要更新的節(jié)點,X 是觀測的數(shù)據(jù),由于 Markov Blanket(下面介紹)卷谈,更新公式變成:
\log(q_i(Z_i;\lambda_i))=\int q(mb(Z_i))\log p(Z_i,mb(Z_i),X)d~mb(Z_i)
由于式子中和 Z_i 無關(guān)的項都被積分積掉了杯拐,所以寫成了 Markov Blanket 這種形式

Markov Blanket

In machine learning, the Markov blanket for a node A in a Bayesian network is the set of nodes mb(A) composed of A's parents, its children, and its children's other parents. In a Markov random field, the Markov blanket of a node is its set of neighboring nodes.
Every set of nodes in the network is conditionally independent of A when conditioned on the set mb(A), that is, when conditioned on the Markov blanket of the node A . The probability has the Markov property; formally, for distinct nodes A and B:
Pr(A|mb(A),B)=Pr(A|mb(A))
The Markov blanket of a node contains all the variables that shield the node from the rest of the network. This means that the Markov blanket of a node is the only knowledge needed to predict the behavior of that node.

參考資料

https://en.wikipedia.org/wiki/Markov_blanket
http://edwardlib.org/tutorials/inference
http://edwardlib.org/tutorials/variational-inference

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市世蔗,隨后出現(xiàn)的幾起案子端逼,更是在濱河造成了極大的恐慌,老刑警劉巖污淋,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顶滩,死亡現(xiàn)場離奇詭異,居然都是意外死亡寸爆,警方通過查閱死者的電腦和手機礁鲁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赁豆,“玉大人仅醇,你說我怎么就攤上這事∧е郑” “怎么了析二?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長节预。 經(jīng)常有香客問我叶摄,道長,這世上最難降的妖魔是什么安拟? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任蛤吓,我火速辦了婚禮,結(jié)果婚禮上去扣,老公的妹妹穿的比我還像新娘柱衔。我一直安慰自己,他們只是感情好愉棱,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布唆铐。 她就那樣靜靜地躺著,像睡著了一般奔滑。 火紅的嫁衣襯著肌膚如雪艾岂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天朋其,我揣著相機與錄音王浴,去河邊找鬼脆炎。 笑死,一個胖子當著我的面吹牛氓辣,可吹牛的內(nèi)容都是我干的秒裕。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼钞啸,長吁一口氣:“原來是場噩夢啊……” “哼几蜻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起体斩,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤梭稚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后絮吵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弧烤,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年蹬敲,在試婚紗的時候發(fā)現(xiàn)自己被綠了暇昂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡粱栖,死狀恐怖话浇,靈堂內(nèi)的尸體忽然破棺而出脏毯,到底是詐尸還是另有隱情闹究,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布食店,位于F島的核電站渣淤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吉嫩。R本人自食惡果不足惜价认,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望自娩。 院中可真熱鬧用踩,春花似錦、人聲如沸忙迁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姊扔。三九已至惠奸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恰梢,已是汗流浹背佛南。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工梗掰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗅回。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓及穗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绵载。 傳聞我的和親對象是個殘疾皇子拥坛,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350