接上一篇文章,本篇講述兩種機率模型的圖表示(Graphical Representation),爲此,引入機率圖模型的概念。html
機率圖模型是機率分佈的圖形表示。圖中每一個結點表示一個隨機變量,結點之間的邊表示兩個結點之間的依賴性,即對應兩個隨機變量是直接相關的,若是結點之間沒有邊存在,則對應兩個隨機變量是條件獨立的,好比隨機變量a和b在隨機變量c的條件下獨立,則有$p(a,b|c)=p(a|c)p(b|c)$,即事件c發生後,事件a與事件b獨立。node
條件獨立能夠將很複雜的機率模型分解成一個個連乘的因子,每一個因子中對應的隨機變量是原來圖中隨機變量的子集,由於這些因子對應的隨機變量子集之間條件獨立,因此能夠將聯合機率寫成因子的連乘,也稱因子分解。假設機率圖爲G=(V,E),V表示全部結點,E表示全部邊,根據前面條件隨機場(一)的介紹,圖G能夠分解爲各個最大團的組合,假設最大團對應結點結合S,V所表示的全部隨機變量爲$\vec v$,S所表示的全部隨機變量爲$\vec {v}_s$,最大團對應的因子設爲$\Psi_s$,那麼V的全部隨機變量的聯合機率分佈爲,dom
\begin{equation} p(\vec v) = \prod_{s} \Psi_s (\vec {v}_s) \end{equation}函數
令機率圖結點$V=X \bigcup Y$,其中X表示輸入隨機變量,Y表示輸出隨機變量。這裏介紹一下幾個核心的概念,機率圖模型(probabilistic graphical model)能夠分爲兩種:independency graph和factor graph。independency graph直接描述了變量的條件獨立,而factor graph則是經過因子分解( factorization)的方式暗含變量的條件獨立。factor graph圖中圓圈點也表示隨機變量,另外還多了一個實心小方塊,表示因子結點(factor node),factor graph的邊老是無向的,將隨機變量與結點與因子結點鏈接起來。因子$\Psi_s$包含了那些與因子結點有邊鏈接的結點所對應的隨機變量,以下右圖,因此factor graph是一種機率分佈的因子分解的圖形表示。3d
例如,假設聯合機率分佈$p(x_1,x_2,y)$能夠因子分解爲$p(\vec x,y)=p(x_1)p(x_2)p(y|x_1,x_2)$,其中各因子項爲$\Psi_1 (x_1)=p(x_1), \quad \Psi_2 (x_2)=p(x_2), \quad \Psi_3 (y)=p(y|x_1,x_2)$,這裏$x_1,x_2$相互獨立。這個機率模型就對應上面兩個機率圖。htm
聯合機率分佈$p(\vec v)$能夠因子分解爲條件分佈的連乘,每一個因子表示結點$v_k$,其條件分佈的條件是一系列的父結點$v_{k}^p$,blog
\begin{equation} p(\vec v) = p(v_1)p(v_2|v_1)...p(v_K|v_{K-1},v_{K-2},...,v_1) = \prod_{k=1}^K p(v_k | v_{k}^p) \end{equation}事件
以下圖所示是一個貝葉斯模型,jsx
其中有三個輸入(觀測)變量,機率分佈能夠因子分解爲$p(y,x_1,x_2,x_3)=p(y)p(x_1|y)p(x_2|y,x_1)p(x_3|y,x_1,x_2)=p(y)p(x_1|y)p(x_2)p(x_3|y)$,其中第二個等號的推導用到了樸素貝葉斯假設,即輸入x 的份量在輸出y 的條件下獨立。對應於factor graph,則各因子項爲$\Psi_1=p(y)$,$\Psi_2=p(x_1|y)$,$\Psi_3=p(x_2|y)$,$\Psi_4=p(x_3|y)$,怎麼樣,是否是跟圖表示很吻合?get
相似地,再給出一個例子以下圖,這是一個HMM分類器模型,輸入(觀測)序列爲$x_1,x_2,x_3$,輸出(分類)序列爲$y_1,y_2,y_3$,
從上圖(a)中能夠發現,輸入變量x 之間在給定輸出y的條件下獨立,而輸出變量y則僅依賴前一個輸出,因而咱們能夠直接寫出機率分佈爲$p(x_1,x_2,x_3,y_1,y_2,y_3)=p(y_1)p(x_1|y_1)p(y_2|y_1)p(x_2|y_2)p(y_3|y_2)p(x_3|y_3)$,各因子項爲$\Psi_1=p(y_1), \Psi_2=p(x_1|y_1), \Psi_3=p(x_2|y_2), \Psi_4=p(x_3|y_3), \Psi_5=p(y_2|y_1), \Psi_6=p(y_3|y_2)$。
機率分佈也可使用無向圖表示,即機率圖G上的全部最大團C上的非負函數連乘,這部份內容能夠參考前面講的條件隨機場(一),能夠這麼作的主要緣由是最大團之間的條件獨立性,即全局馬爾可夫性,因而機率分佈爲
\begin{equation} p(\vec v) = \frac 1 Z \prod_{C \in \mathcal C} \Psi_C (\vec {v}_C) \end{equation}
其中$\Psi_C \geq 0$,稱爲勢函數(potential function),對應於隨機變量組$\vec {v}_C$,$C \in \mathcal C$是無向圖G上最大團。
對比有向圖中則是聯合機率分佈因子分解成條件機率的連乘,無向圖則是最大團的勢函數的連乘,勢函數能夠不是機率函數(對隨機變量求和或積分能夠不爲1),因此須要勢函數的連乘須要歸一化,也就是上式中的歸一化因子Z,
\begin{equation} Z= \sum_{\vec v} \prod_{C \in \mathcal C} \Psi_C (\vec {v}_C) \end{equation}
其中對向量$\vec v$的求和,$\vec v$的取值爲全部可能的隨機變量組的值。
在條件隨機場(二)中,咱們講到最大熵模型的機率分佈能夠寫爲非負勢函數的連乘,以下,
\begin{equation} p_{\vec{\lambda}}(y|x)= \frac 1 {Z_{\vec{\lambda}}(x)} \prod_{i=1}^m \exp (\lambda_i f_i (x,y)) \end{equation}
上式這個對數線性模型中,勢函數爲權值特徵($\lambda_i$爲特徵函數f_i(x,y)的權重)的指數函數。一般就是採用這種形式的勢函數,由於它知足勢函數嚴格正(strict positivity)的要求。下圖所示爲最大熵模型的兩種圖表示,觀測變量x 只有一個,如(a)圖,
與樸素貝葉斯模型不一樣,最大熵模型從總體來建模,「保留儘量多的不肯定性,在沒有更多的信息時,不擅自作假設」,特徵函數則可看做是人爲賦給模型的信息,表示特徵 x 與 y 的某種相關性,好比上圖中,x與y之間有三個特徵函數。有向圖沒法表示這種相關性,則採用無向圖表示最大熵模型。
有向圖和無向圖區別在於如何將原始的機率分佈進行因子分解。有向圖因子分解成條件機率的連乘,無向圖採用勢函數的連乘,且須要歸一化,沒有明確指定隨機變量之間的關聯性,而是經過加權特徵函數來參與計算。
根據前面的介紹,咱們知道隱馬爾可夫是樸素貝葉斯的序列擴展(單個分類擴展到分類序列),一樣地,條件隨機場能夠理解爲最大熵模型的單個分類擴展到分類序列。條件隨機場與HMM同樣都是判別模型(計算$p(\vec y| \vec x)$而非$p(y|x)$)。然而,條件隨機場不必定是HMM那樣的對數線性結構,而能夠是任意結構(雖然最後仍是會着重討論線性鏈條件隨機場)。
給定輸入$\vec x = (x_1,...,x_n)$,條件隨機場模型計算輸出$\vec y = (y_1,...,yn)$的條件機率$p(\vec y | \vec x)$,注意這裏向量$\vec x, \vec y$表示序列,其中輸入序列也稱觀測序列。條件隨機場模型的通常形式與無向圖的機率分佈同樣,見上文,
\begin{equation} p(\vec v) = \frac 1 Z \prod_{C \in \mathcal C} \Psi_C (\vec {v}_C) \end{equation}
因而條件機率可寫爲,
\begin{equation} \begin{aligned} p(\vec {y} | \vec {x}) & = \frac {p(\vec {x} , \vec {y})} {p(\vec {x})} \\ & = \frac {p(\vec {x} , \vec {y})} {\sum_{{\vec {y}}^{'}} p({\vec {y}}^{'}, \vec x)} \\ & = \frac {\frac 1 Z \prod_{C \in \mathcal C} \Psi_C (\vec{x}_C, \vec{y}_C)} {\frac 1 Z \sum_{{\vec{y}}^{'}} \prod_{C \in \mathcal C} \Psi_C (\vec{x}_C, {\vec{y}_{C}}^{'})} \end{aligned} \end{equation}
因而CRF的通常形式爲,
\begin{equation} p(\vec {y} | \vec {x}) = \frac 1 {Z(\vec x)} \prod_{C \in \mathcal {C}} \Psi_C (\vec{x}_C, \vec{y}_C) \end{equation}
其中,
\begin{equation} Z(\vec x) = \sum_{{\vec y}^{'}} \prod_{C \in \mathcal C} \Psi_C (\vec{x}_C, {\vec{y}_{C}}^{'}) \end{equation}
如上文所述,$\Psi_C$是最大團上的函數。
下圖是一個線性鏈CRF的例子,每一個因子對應一個勢函數,勢函數將不一樣的特徵函數結合起來,而特徵函數則體現了相應的觀測和輸出之間的關聯。
線性鏈CRF是CRF的特殊形式,其無向圖是線性鏈結構,輸出變量爲一個序列,以下圖所示,
根據上面(8)式和圖(b),可知線性鏈CRF機率分佈可寫爲
\begin{equation} p(\vec y | \vec x) = \frac 1 {Z(\vec x)} \prod_{j=1}^n \Psi_j (\vec x, \vec y) \end{equation}
其中,
\begin{equation} Z(\vec x) = \sum_{{\vec y}^{'}} \prod_{j=1}^n \Psi_j (\vec x, {\vec y}^{'}) \end{equation}
爲了防止遺忘前面的推導細節,這裏再備註一下:上式對${\vec y}'$的求和是對$\mathcal Y$空間上全部向量取值求和。理解(11)式其實並不難,根據(8)式咱們知道機率分佈爲各個最大團上的函數連乘,根據上圖,咱們知道這裏最大團就是$(\vec x, y_{i-1}, y_i)$,其中包含了三個結點,因而再根據(3)式和(5)式,最大團上的函數爲
\begin{equation} \Psi_j (\vec x, \vec y) = \exp (\sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}
(其實,這裏最大團$(\vec x, y_{i-1}, y_i)$上的函數$\Psi_j (\vec x, \vec y)$中的指數部分是一個m個特徵函數值的求和,m個特徵函數包含兩部分:1. 轉移特徵;2.狀態特徵)
上式中 m 表示總共有 m 個特徵函數。假設觀測序列長度爲 n + 1(注意指的是 y 的長度,拿中文分詞來講,這裏模型要解決的問題就是已知輸入x 爲狀態,求輸出 y 序列出現的條件機率),那麼就有 n 個最大團,因而將上式代入(11)式,得
\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}
且有
\begin{equation} Z_{\vec {\lambda}}(\vec x) = \sum_{y \in \mathcal Y} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}
$Z_{\vec {\lambda}}(\vec x)$中的對$\vec y$的求和是針對 $\mathcal Y$中全部可能的序列。
上兩式計算中,咱們假設了$\vec y = (y_0, y_1,...,y_n)$,特徵函數的參數包含了下標 j,由於與最大熵模型不一樣,這裏輸出是一個序列。特徵函數的權重$\lambda_i$與下標 j 是無關的。
在(13)式中,將對 j 求和移到指數的左邊,根據指數的特性,求和則轉爲連乘,因而有
\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} \prod_{j=1}^n exp( \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}
固然,將(13)式中對 i 求和移到指數的左邊則爲
\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} \prod_{i=1}^m exp( \sum_{j=1}^n \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}
因而根據上式,變成對特徵上的函數項連乘,函數項表達式爲
$$\Psi_i = exp(\sum_{j=1}^n \lambda_i f_i (y_{j-1},y_j, \vec x, j))$$
以下圖能夠幫助理解上式。
甚至還能夠這樣轉換(13)式,
\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} \prod_{i=1}^m \prod_{j=1}^n exp(\lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}
基於最大團上的函數連乘((15)式所示)是線性鏈CRF一般所採用的表示方法。下文的講述就是基於此種表示方法。
上面線性鏈CRF的最大團只有一個團模板(clique template) $C \in \mathcal C$,每一個最大團的形式均爲 $C=\lbrace \Psi_j (y_j, y_{j-1}, \vec x) | \forall j \in \lbrace1,2,...,n\rbrace \rbrace$,正由於有這樣的線性鏈結構,咱們能夠用隨機有限狀態自動機(SFSA)來表示線性鏈CRF,這種狀態自動機與隱馬爾可夫模型相似,而且容易實現。其中,轉移機率依賴於輸入序列$\vec x$,好比上面那個線性鏈CRF的圖,輸入爲向量$\vec x$,輸出序列爲$(y_1,y_2,...,y_n), y_i \in S$,其中S 表示狀態集合。以下圖是一個三狀態$\lbrace S_1,S_2,S_3 \rbrace$自動機,
創建線性鏈CRF模型的策略總結以下:
上面這個線性鏈CRF模型是一階的。若是要定義高階的線性鏈CRF,則特徵函數的形式爲,
$$f_i (\vec y, \vec x, j) = f_i(h_j (\vec y), \vec y, j) $$
$$ h_j (\vec y) = (y_{j-k}, ...,y_j) $$
其中k爲階數,對於高階(k>1),能夠一樣使用狀態自動機,與上圖不一樣的是,高階狀況的當前狀態依賴於前面多個狀態。
對這種特殊的線性鏈CRF,訓練和預測的方法與HMM相似,即如下兩個問題:
問題1)是條件隨機場常見的應用場景,即給觀測序列進行分類獲得分類序列。問題2)是關於訓練的。關於這兩個問題,咱們下篇文章再詳述。
Classical Probabilistic Models and Conditional Random Fields