————轉自(12條消息) 馬爾科夫模型 Markov Model_皮皮blog-CSDN博客_馬爾可夫模型
生成模式(Generating Patterns)
1、確定性模式(Deterministic Patterns):確定性系統
考慮一套交通信號燈,燈的顏色變化序列依次是紅色-紅色/黃色-綠色-黃色-紅色。這個序列可以作為一個狀態機器,交通信號燈的不同狀態都緊跟着上一個狀態。
注意每一個狀態都是唯一的依賴於前一個狀態,所以,如果交通燈為綠色,那么下一個顏色狀態將始終是黃色——也就是說,該系統是確定性的。確定性系統相對比較容易理解和分析,因為狀態間的轉移是完全已知的。
2、非確定性模式(Non-deterministic patterns):馬爾科夫
為了使天氣那個例子更符合實際,加入第三個狀態——多雲。與交通信號燈例子不同,我們並不期望這三個天氣狀態之間的變化是確定性的,但是我們依然希望對這個系統建模以便生成一個天氣變化模式(規律)。
一種做法是假設模型的當前狀態僅僅依賴於前面的幾個狀態,這被稱為馬爾科夫假設,它極大地簡化了問題。顯然,這可能是一種粗糙的假設,並且因此可能將一些非常重要的信息丟失。
當考慮天氣問題時,馬爾科夫假設假定今天的天氣只能通過過去幾天已知的天氣情況進行預測——而對於其他因素,譬如風力、氣壓等則沒有考慮。在這個例子以及其他相似的例子中,這樣的假設顯然是不現實的。然而,由於這樣經過簡化的系統可以用來分析,我們常常接受這樣的知識假設,雖然它產生的某些信息不完全准確。
一個馬爾科夫過程是狀態間的轉移僅依賴於前n個狀態的過程。這個過程被稱之為n階馬爾科夫模型,其中n是影響下一個狀態選擇的(前)n個狀態。最簡單的馬爾科夫過程是一階模型,它的狀態選擇僅與前一個狀態有關。這里要注意它與確定性系統並不相同,因為下一個狀態的選擇由相應的概率決定,並不是確定性的。
下圖是天氣例子中狀態間所有可能的一階狀態轉移情況:
對於有M個狀態的一階馬爾科夫模型,共有M^2個狀態轉移,因為任何一個狀態都有可能是所有狀態的下一個轉移狀態。每一個狀態轉移都有一個概率值,稱為狀態轉移概率——這是從一個狀態轉移到另一個狀態的概率。所有的M^2個概率可以用一個狀態轉移矩陣表示。注意這些概率並不隨時間變化而不同——這是一個非常重要(但常常不符合實際)的假設。
下面的狀態轉移矩陣顯示的是天氣例子中可能的狀態轉移概率:
-也就是說,如果昨天是晴天,那么今天是晴天的概率為0.5,是多雲的概率為0.375。注意,每一行的概率之和為1。
要初始化這樣一個系統,我們需要確定起始日天氣的(或可能的)情況,定義其為一個初始概率向量,稱為pi向量。
-也就是說,第一天為晴天的概率為1。
我們定義一個一階馬爾科夫過程如下:
狀態:三個狀態——晴天,多雲,雨天。
pi向量:定義系統初始化時每一個狀態的概率。
狀態轉移矩陣:給定前一天天氣情況下的當前天氣概率。
任何一個可以用這種方式描述的系統都是一個馬爾科夫過程。
3、隱藏模式(Hidden Patterns):隱馬爾科夫
1、馬爾科夫過程的局限性
在某些情況下,我們希望找到的模式用馬爾科夫過程描述還顯得不充分。回顧一下天氣那個例子,一個隱士也許不能夠直接獲取到天氣的觀察情況,但是他有一些水藻。民間傳說告訴我們水藻的狀態與天氣狀態有一定的概率關系——天氣和水藻的狀態是緊密相關的。在這個例子中我們有兩組狀態,觀察的狀態(水藻的狀態)和隱藏的狀態(天氣的狀態)。我們希望為隱士設計一種算法,在不能夠直接觀察天氣的情況下,通過水藻和馬爾科夫假設來預測天氣。
一個更實際的問題是語音識別,我們聽到的聲音是來自於聲帶、喉嚨大小、舌頭位置以及其他一些東西的組合結果。所有這些因素相互作用產生一個單詞的聲音,一套語音識別系統檢測的聲音就是來自於個人發音時身體內部物理變化所引起的不斷改變的聲音。
一些語音識別裝置工作的原理是將內部的語音產出看作是隱藏的狀態,而將聲音結果作為一系列觀察的狀態,這些由語音過程生成並且最好的近似了實際(隱藏)的狀態。在這兩個例子中,需要着重指出的是,隱藏狀態的數目與觀察狀態的數目可以是不同的。一個包含三個狀態的天氣系統(晴天、多雲、雨天)中,可以觀察到4個等級的海藻濕潤情況(干、稍干、潮濕、濕潤);純粹的語音可以由80個音素描述,而身體的發音系統會產生出不同數目的聲音,或者比80多,或者比80少。
在這種情況下,觀察到的狀態序列與隱藏過程有一定的概率關系。我們使用隱馬爾科夫模型對這樣的過程建模,這個模型包含了一個底層隱藏的隨時間改變的馬爾科夫過程,以及一個與隱藏狀態某種程度相關的可觀察到的狀態集合。
馬爾科夫模型
馬爾科夫鏈的節點是狀態,邊是轉移概率,是template CPD(條件概率分布)的一種有向狀態轉移表達。馬爾科夫過程可以看做是一個自動機,以一定的概率在各個狀態之間跳轉。
考慮一個系統,在每個時刻都可能處於N個狀態中的一個,N個狀態集合是 {S1,S2,S3,...SN}。我們現在用q1,q2,q3,…qn來表示系統在t=1,2,3,…n時刻下的狀態。Note: 每個狀態都是一個向量分布,即在N個狀態集合是 {S1,S2,S3,...SN}上的概率分布。
馬爾科夫鏈
獨立同分布建模
處理順序數據的最簡單的方式是忽略順序的性質,將觀測看做獨立同分布,對應於圖13.2所示的圖。然而,這種方法無法利用數據中的順序模式,例如序列中距離較近的觀測之間的相關性。
馬爾科夫模型( Markov model )
為了在概率模型中表示這種效果,我們需要放松獨立同分布的假設。完成這件事的一種最簡單的方式是考慮馬爾科夫模型( Markov model )。
馬爾科夫模型( Markov model )表示觀測序列的聯合概率分布
一階馬爾科夫鏈( first-order Markov chain )
一階馬爾科夫鏈( first-order Markov chain )模型中, N 次觀測的序列的聯合概率分布為
根據 d -划分的性質,給定時刻 n 之前的所有觀測,我們看到觀測 x n 的條件概率分布為
同質馬爾科夫鏈( homogeneous Markov chain )
在這種模型的大部分應用中,條件概率分布 p(x n | x n−1 ) 被限制為相等的,對應於靜止時間序列(數據會隨着時間發生變化,但是生成數據的概率分布保持不變)的假設。這樣,這個模型被稱為同質馬爾科夫鏈( homogeneous Markov chain )。例如,如果條件概率分布依賴於可調節的參數(參數的值可以從訓練數據中確定),那么鏈中所有的條件概率分布會共享相同的參數值。
高階馬爾科夫鏈
二階馬爾科夫鏈
馬爾科夫鏈的參數個數分析
假設觀測是具有 K 個狀態的離散變量,那么一階馬爾科夫鏈中的條件概率分布 p(x n | x n−1 ) 由 K − 1 個參數指定,每個參數都對應於 x n−1 的 K 個狀態,因此參數的總數為 K(K − 1) 。
現在假設我們將模型推廣到 M 階馬爾科夫鏈,從而聯合概率分布由條件概率分布 p(x n | x n−M , . . . , x n−1 ) 構建。如果變量是離散變量,且條件概率分布使用一般的條件概率表的形式表示,那么這種模型中參數的數量為 K^M * (K − 1) 。
連續變量的馬爾科夫鏈
對於連續變量來說,我們可以使用線性高斯條件概率分布,其中每個結點都是一個高斯概率分布,均值是父結點的一個線性函數。這被稱為自回歸( autoregressive )模型或者 AR 模型( Box et al., 1994; Thiesson et al., 2004 )。另一種方法是為 p(x n | x n−M , . . . , x n−1 ) 使用參數化的模型,例如神經網絡。這種方法有時被稱為抽頭延遲線( tapped delay line ),因為它對應於存儲(延遲)觀測變量的前面 M 個值來預測下一個值。這樣,參數的數量遠遠小於一個一般的模型(例如此時參數的數量可能隨着 M 線性增長),雖然這樣做會使得條件概率分布被限制在一個特定的類別中。
[PRML]
馬爾科夫過程收斂性分析與采樣
這里只討論一階同質的馬爾科夫過程。
(一階同質)馬爾科夫模型有兩個假設:
1. 系統在時刻t的狀態只與時刻t-1處的狀態相關;(也稱為無后效性)
2. 狀態轉移概率與時間無關;(也稱為齊次性或時齊性)
第一條具體可以用如下公式表示:
P(qt=Sj|qt-1=Si,qt-2=Sk,…)= P(qt=Sj|qt-1=Si)
其中,t為大於1的任意數值,Sk為任意狀態
第二個假設則可以用如下公式表示:
P(qt=Sj|qt-1=Si)= P(qk=Sj|qk-1=Si)
其中,k為任意時刻。即任意時刻兩個狀態之間的轉移概率是一樣的,整個轉移概率矩陣在所有時間步之間是共享參數的。
Note: For you language folks, this is precisely the same idea as modeling word sequences using a bigram model, where here we have states z instead of having words w.一階馬氏鏈思想同詞序列的bigram模型,只是將詞w換成了狀態z。
馬氏鏈及其平穩分布
馬氏鏈的數學定義很簡單 P(Xt+1=x|Xt,Xt−1,⋯)=P(Xt+1=x|Xt)
也就是狀態轉移的概率只依賴於前一個狀態,Markov Chain 體現的是狀態空間的轉換關系,下一個狀態只決定與當前的狀態(可以聯想網頁爬蟲原理,根據當前頁面的超鏈接訪問下一個網頁)。
馬氏鏈的一個具體的例子
社會學家經常把人按其經濟狀況分成3類:下層(lower-class)、中層(middle-class)、上層(upper-class),我們用1,2,3 分別代表這三個階層。社會學家們發現決定一個人的收入階層的最重要的因素就是其父母的收入階層。如果一個人的收入屬於下層類別,那么他的孩子屬於下層收入的概率是 0.65, 屬於中層收入的概率是 0.28, 屬於上層收入的概率是 0.07。事實上,從父代到子代,收入階層的變化的轉移概率如下
使用矩陣的表示方式,轉移概率矩陣記為
P=⎡⎣0.650.150.120.280.670.360.070.180.52⎤⎦
假設當前這一代人處在下層、中層、上層的人的比例是概率分布向量 π0=[π0(1),π0(2),π0(3)],那么他們的子女的分布比例將是π1=π0P, 他們的孫子代的分布比例將是 π2=π1P=π0P2, ……, 第n代子孫的收入分布比例將是πn=πn−1P=π0Pn。
假設初始概率分布為π0=[0.21,0.68,0.11], 則我們可以計算前n代人的分布狀況如下。我們發現從第7代人開始,這個分布就穩定不變了,這個是偶然的嗎?我們換一個初始概率分布π0=[0.75,0.15,0.1] 試試看,繼續計算前n代人的分布狀況如下
我們發現,到第9代人的時候, 分布又收斂了,事實上,在這個問題中,從任意初始概率分布開始都會收斂到這個上面這個穩定的結果。最為奇特的是,兩次給定不同的初始概率分布,最終都收斂到概率分布π=[0.286,0.489,0.225], 也就是說收斂的行為和初始概率分布π0 無關。這說明這個收斂行為主要是由概率轉移矩陣P決定的。我們計算一下Pn
P20=P21=⋯=P100=⋯=⎡⎣0.2860.2860.2860.4890.4890.4890.2250.2250.225⎤⎦
我們發現,當 n 足夠大的時候,這個Pn矩陣的每一行都是穩定地收斂到π=[0.286,0.489,0.225] 這個概率分布。自然的,這個收斂現象並非是我們這個馬氏鏈獨有的,而是絕大多數馬氏鏈的共同行為。
關於馬氏鏈的收斂我們有如下漂亮的定理:
馬氏鏈收斂定理
馬氏鏈定理: 如果一個非周期馬氏鏈具有轉移概率矩陣P,且它的任何兩個狀態是連通的,那么limn→∞Pnij 存在且與i無關,記limn→∞Pnij=π(j), 我們有
- limn→∞Pn=⎡⎣⎢⎢⎢⎢⎢π(1)π(1)⋯π(1)⋯π(2)π(2)⋯π(2)⋯⋯⋯⋯⋯⋯π(j)π(j)⋯π(j)⋯⋯⋯⋯⋯⋯⎤⎦⎥⎥⎥⎥⎥
- π(j)=∑i=0∞π(i)Pij
- π 是方程 πP=π 的唯一非負解
其中,π=[π(1),π(2),⋯,π(j),⋯],∑i=0∞πi=1 π稱為馬氏鏈的平穩分布。
所有的 MCMC(Markov Chain Monte Carlo) 方法都是以這個定理作為理論基礎的。 定理的證明相對復雜。
定理內容的一些解釋說明
- 該定理中馬氏鏈的狀態不要求有限,可以是有無窮多個的;
- 定理中的“非周期“這個概念不解釋,因為我們遇到的絕大多數馬氏鏈都是非周期的;
- 兩個狀態i,j是連通並非指i 可以直接一步轉移到j(Pij>0),而是指i 可以通過有限的n步轉移到達j(Pnij>0)。馬氏鏈的任何兩個狀態是連通的含義是指存在一個n, 使得矩陣Pn 中的任何一個元素的數值都大於零。
- 我們用 Xi 表示在馬氏鏈上跳轉第i步后所處的狀態,如果limn→∞Pnij=π(j) 存在,很容易證明以上定理的第二個結論。由於
P(Xn+1=j)=∑i=0∞P(Xn=i)P(Xn+1=j|Xn=i)=∑i=0∞P(Xn=i)Pij
上式兩邊取極限就得到 π(j)=∑i=0∞π(i)Pij`
馬爾科夫模型的應用
采樣算法中的應用
從初始概率分布 π0 出發,我們在馬氏鏈上做狀態轉移,記Xi的概率分布為πi, 則有
X0Xi∼π0(x)∼πi(x),
πi(x)=πi−1(x)P=π0(x)Pn``
由馬氏鏈收斂的定理, 概率分布πi(x)將收斂到平穩分布π(x)。假設到第n步的時候馬氏鏈收斂,則有
X0X1XnXn+1Xn+2∼π0(x)∼π1(x)⋯∼πn(x)=π(x)∼π(x)∼π(x)⋯
所以 Xn,Xn+1,Xn+2,⋯∼π(x) 都是同分布的隨機變量,當然他們並不獨立。如果我們從一個具體的初始狀態 x0 開始,沿着馬氏鏈按照概率轉移矩陣做跳轉,那么我們得到一個轉移序列x0,x1,x2,⋯xn,xn+1⋯, 由於馬氏鏈的收斂行為,xn,xn+1,⋯ 都將是平穩分布π(x) 的樣本。
順序數據建模
[順序數據:狀態空間模型 ]
from:http://blog.csdn.net/pipisorry/article/details/46618991