1. 程式人生 > >深度學習筆記——理論與推導之Structured Learning【Markov Random Field】(十)

深度學習筆記——理論與推導之Structured Learning【Markov Random Field】(十)

Graphical Model & Gibbs Sampling(Sturctured Learning)

Graphical Model是Structured Learning中的一種。

Structured Learning複習

這裡寫圖片描述
Structured Learning中兩個存在困擾的地方:
1. 如何設計feature vector(即Φ(x,y)):
2. Inference
這裡寫圖片描述
解決方法:
1. Evaluation:可以使用圖的方法(Graphical Model)來定義evaluation funcation。
2. Inference:可以使用Gibbs Sampling來解。

Graphical Model

A language which describes the evaluation function
用Graph來描述F(x,y),這裡提到三種Graphical Model:
這裡寫圖片描述

Decompose F(x,y)

  1. F(x,y) 原來是一個global function,即考慮到全部的x和全部的y
  2. 基於Graphical model,F(x,y)是可以由多個local functions所組成。這就需要它滿足下述條件:
    • x和y可以被分解成更小的部分(每一個x和y是由多個元件所組成的。)
    • 每一個local function是定義在x和y的其中一小部分上。
    • 那麼有哪些function,而這些function的input又是x和y的哪些部分呢?這是由Graphical Model決定的。
  3. 可以把x和y拆解成比較小的component是什麼意思呢?
    • 假設,我們現在要做POS Tagging,如下:
    • 那麼我們一個完整的x就是一句話,完整的y就是一個詞性的sequence,我們可以說x是由一串word組成的(x1~x4),同理y(y1~y4)。
      這裡寫圖片描述

Factor Graph

Factor Graph是什麼?
- 假設x可以被拆成x1和x2,y可以被拆成y1和y2。
- 在這些Component的背後存在一些factors,而這些factor會影響一些component的表現。至於factor影響那些component,這可以在Graph中看出來。
- 可以把factor想成一個local function,input就是在graph中和factor相連的component。
- 如果factor所代表的local function,它output的值越大,代表這一組值出現的機率越高。
- 所以我們可以把F(x,y)拆成多個factor的小項。
- 你需要提前定義factors,而每一個factor的local function長什麼樣,這些是可以根據training data中學出來的。
這裡寫圖片描述


Factor Graph - Example

  • 例子:Image De-noising
  • 我們可以把一個pixel當成一個component(1代表黑,-1代表白),即如下:
    這裡寫圖片描述
  • 那我們今天應該如何描述noisy image(x)和cleaned image(y)的關係呢?比如說noisy image是cleaned image加上干擾產生的;並且他們在同樣位置的pixel,他們顏色相近的可能性是比較高的。因此我們現在有個factor a,表示的是xi和yi的關係;另外一個factor b,表示的是相鄰畫素之間的關係,即yi的相鄰pixel的關係(一般是smooth,即相近的可能性比較大)。
  • 我們可以對factor a和factor b做以下描述,在複雜的模型中我們可以從training data中做learnning以獲取factor a和factor b。
    這裡寫圖片描述
  • 那麼接下來,我們可以得到下面的F(x,y):
    這裡寫圖片描述
  • 我們還可以定義其他的factor,如下:
    這裡寫圖片描述

Markov Random Field(MRF)

MRF是什麼?
- Clique:一組component中兩兩相連就是一個clique,如下圖中的藍色框框:
這裡寫圖片描述
- Maximum Clique:假如有一個Clique,它不被其他Clique包含,如下面的紅框框:
這裡寫圖片描述
- MRF:
當給你一個Graph時,這個Graph上的節點就是x或y,上面的link就是你自己定的,告訴你factor長什麼樣,即(以下是MRF和Factor Graph的對比):
這裡寫圖片描述
複雜一點的MRF轉Factor Graph:
MRF:這裡寫圖片描述
Factor Graph:
這裡寫圖片描述
最後得到的F(x,y)就可以寫成這樣:
這裡寫圖片描述
那麼MRF我們應該如何Training呢?
1. 假設我們可以把factor描述為w·Φ(x,y),即:
這裡寫圖片描述
上面這個其實是可以用Structured Perceptron或Structured SVM來learning Grapical Model的引數。當你用Structured SVM來描述learn MRF時這叫做Max-Margin Markov Networks(M3N)。
2. 如何將local function都描述為linear的呢?

  • 假設現在y1,y2的值只有{-1,+1},所以今天最一般話情況下,fb的output只有4種可能,如下:
    這裡寫圖片描述
  • 所以今天如果你想不到什麼好方法把factor都變成linear的話且y1,y2都是離散的, 你可以用上面的方法,把它變成linear的。y1和y2維度很大的時候,比如y1 = 100,y2 = 100,那麼如果用上述方法,輸出就有10000維,這時,我們就可以用共享引數的方法,看看(y1,y2)是哪些值時共享引數。

Probability Point of View

  • 一般在Graphical Model上面,我們都會evaluation function加上機率的含義。
  • F(x,y)是一個可正可負的值,我們描述的P(x,y)的機率,即:
    這裡寫圖片描述
    接下來,我們就可以計算各種機率。

Gibbs Sampling

Inference for the dump(求解Inference的一種方法)
今天,假設我們用factor graph方法,得到下面圖形,並且用Structured SVM得到f(x,y)的引數,我們假設,如:xi和yi的顏色一樣時f(x,y) = 0.1等。所以Inference要做的事情就是給一張noisy image,也就是給你x1~x4,根據現在的f(x,y)可以用找到一組y1~y4使得F(x,y)最大。假設我們現在x1 ,x2,x3,x4 = -1,-1,-1,1,我們窮舉所有y,可以得到下面值:
這裡寫圖片描述
那麼有沒有比窮舉更有效的方法呢?這就是Gibbs Sampling,P(y|x)的下面這項,因為是計算y的總和,所以P(y|x)這項會獨立於y,因此P(y|x)正比於F(x,y)。
所以我們現在就可以把窮舉所有的y看誰的F(x,y)最大轉化為看誰的P(y|x)最大。
這裡寫圖片描述
我們知道P(y|x)是一個distribution,Gibbs Sampling的精神就是我們根據這個distribution,我們知道每一組y出現的機率,我們現在根據這個distribution做sample,那麼可能-1,-1,-1,-1 Sampling的機率是會最多。那麼它就是我們要找的y。
這裡寫圖片描述
然而,我們很難找到這個distribution
這裡寫圖片描述
這時候需要Gibbs Sampling來解決這個問題,如果可以計算給定除yi以外的y,計算yi的機率,就可以用Gibbs Sampling:
這裡寫圖片描述
Gibbs Sampling操作如下:
首先需要一個初始值y值,操作如下(記得要把之前計算出的y1^t帶入到下面的y2^t中):
這裡寫圖片描述
因為y的可能值是很有限的,所以我們計算P(yi|y1,y2…,yi-1,yi+1,…yN,x)是比較簡單的。
這裡寫圖片描述
舉例:通過Gibbs Sampling計算P(y|x):
先初始化y sequence:
這裡寫圖片描述
接下來Sample y1,假設所有y值和x值都是已知的,除了y1的值,窮舉y1。
這裡寫圖片描述
那麼我們求出來,y1 = 1Sample後的概率是0.1,則y1 = -1Sample後的概率是0.9:
這裡寫圖片描述
接下來,我們令y1 = -1,繼續Sample y2,y2 = 1後Sample的概率是0.45,y2 = -1的概率為0.55,因為Sample這件事情,從一開始的initial是隨機的,所以不同的initial有可能你這裡sample到的y2=1的概率反而更大,所以這裡我們選y2 = 1:
這裡寫圖片描述
接下來Sample y3和y4:
這裡寫圖片描述
這裡寫圖片描述
所以這裡,我們得到了第一個序列{y1=-1,y2 = 1,y3 = -1,y4 = -1}
接下來,繼續下去這個process,這個Sample是永遠不會停止的:
這裡寫圖片描述
因為這裡有y1~y4,每一個y有兩個不同的值,所以一共有2^4個不同的序列,這樣我們Sample幾十萬次後,我們會有一個比較準確的結果。今天我們從16個序列中,抽取出3個序列,來看看sample 次數=10/100/1000/10000/100000次時,y^A,y^B,y^C出現的次數。
這裡寫圖片描述
我們發現,如果我們只Sample 10次或者100次,y^B出現的概率其實是更多的,所以我們應當Sample幾十萬次,才能得到一個比較準確的值。
所以呢,我們知道現在y^A是我們要的準確的結果。
那麼Initialization會對我們的結果造成什麼影響呢?
這裡寫圖片描述
所以Initialization只會在Sample次數比較少的時候會有影響,當你Sample的次數多的時候,Initalization對結果其實是沒有什麼影響的。

Practical Suggestion

  1. Gibbs Sampling只勝過窮舉,如果你有更好的Inference方法,就用其他的方法:
  2. 一開始的Sample其實不是很準,所以可以丟棄一些
  3. 為了加快收斂速度,我們可以調整機率的差值,比如在分子分母都乘以c(c>1),這樣distribution之間的差距就會拉大,所以就可以在比較小的Sampling中看出每一個不同output的差距(這有點像Gradient Descent中的learning rate,我們在迭代次數越大的時候,我們的learning rate是要越小的,而在這裡,我們可以慢慢增大這個c):
    這裡寫圖片描述

為什麼Gibbs Sampling可以work呢

  1. 從Markov Chain說起:
    Markov Chain是什麼呢?
    假設有一個旅行者,這個旅行者每天都會離開或者留在一個城市,例如他在A城市時,第二天去B城市的概率是1/2,去C城市的概率是1/6,留在A城市的概率是2/3,以此類推。他會將他的路線記錄下來,這就是Markov Chain,因為他每天走到的城市只depend前一個城市,而和他之前拜訪過哪些城市無關。那麼這個sequence上的某一個city就是Markov Chain上的一個state:
    這裡寫圖片描述
    假設結果10000天后,他拜訪某個城市的比率固定下來了(無論從哪個城市開始旅行),A:B:C = 6:2:2:
    這裡寫圖片描述
    那麼為什麼會這樣呢?
    P(A) = 0.6,P(B) = 0.2,P(C) = 0.2是一個stationary的point,也就是P(A|A)P(A)+P(A|B)P(B)+P(A|C)P(C) 會等於 P(A)。所以今天當P(A) = 0.6,P(B) = 0.2,P(C) = 0.2就會像是陷入一個minima的地方,就不會再改變了,這個不會再改變的distribution就叫做Stationary Distribution。
    這裡寫圖片描述
    其實Markov Chain可以又不只一個的stationary distribution,比如下圖:P(A) = 1/P(B) = 0/P(C) = 0,P(A) = 0/P(B) = 1/P(C) = 0和P(A) = 0/P(B) = 0/P(C) = 1。所以Markov Chain最後會到達哪一個stationary distribution取決於它從哪一個state開始。
    當Markov Chain滿足某些特性的話,它就只會有一個stationary distribution(無論從哪一個state開始):
    這個某些特性(充分非必要,滿足這個條件一定有uniqu Markov Chain,而有unique Markov Chain不一定滿足這個條件):一個點到其他點的概率都不會為0,即P(s’|s) for any states s and s’ is not zero。
    這裡寫圖片描述
    那麼為什麼Gibbs Sample可以做到unique Markov Chain呢?我們見每次sample後的z值,視為一個個state,把這個看成一個Markov Chain(因為這裡的z^t只depend on z^t-1)
    這裡寫圖片描述
    那我們如何證明這個Markov chain只有一個stationary distribution,而這個stationary distribution就是P(z):
    • 假設Markov Chain只會有一個stationary distribution:
      即Markov Chain從一個state跳到另外一個state的機率都大於零:
      這裡寫圖片描述
    • 計算P(z’)是否會等於如下圖所示的公式:
      這裡寫圖片描述