回覆列表
  • 1 # 機器之心Pro

    馬爾可夫鏈是一個相當常見、相當簡單的對隨機過程進行統計建模的方式。它們被應用在很多領域,從文字生成到金融建模。一個比較流行的例子是 SubredditSimulator(https://www.reddit.com/r/SubredditSimulator/),它使用馬爾科夫鏈自動建立整個 subreddit 的內容。總之,馬爾可夫鏈在概念上是非常直觀,並且易於理解的,不使用任何高階的統計或者數學概念就可以實現。馬爾科夫鏈是入門機率建模和資料科學技術的很好的開端。

    簡介

    首先,我們用一個很常見的例子來描述它們:

    試想有兩種可能的天氣狀態:晴天或者陰天。你總是可以直接地觀察當前的天氣狀態,而且保證是之前提及的兩者之一。現在,你決定預測明天的天氣。假設在這個過程中有一個潛在的轉移,因為當前的天氣會對第二天的天氣狀態有所影響。因此,作為一個敬業的人,你收集了幾年的天氣資料,然後計算得到陰天之後出現晴天的機率是 0.25。你還注意到,廣泛地講,陰天之後發生陰天的機率是 0.75,因為只有兩種可能的天氣狀態。你現在可以利用這個分佈,根據當地目前的天氣狀態去預測未來幾天的天氣。

    這個例子描述了馬爾科夫鏈的很多關鍵概念。馬爾科夫鏈本質上是由一系列滿足馬爾科夫性質的轉移組成,這些轉換服從某種機率分佈。

    我們來觀察一下在這個例子中,如何僅僅透過觀察從當天到第二天的轉換就得到機率分佈。這其實說的就是馬爾科夫性,即馬爾科夫過程獨有的讓狀態轉移沒有記憶的性質。這通常使它們無法成功地生成會出現某些期望潛在趨勢的序列。例如,馬爾科夫鏈可能根據詞頻來模仿一個作者的寫作風格,但是它無法生成包含深層含義的文字或者蘊含某種主題意義的文字,因為這些文字都是基於更長的文字序列開發的。因此,它們缺乏生成語境相關內容的能力,因為它們無法考慮到之前的整條狀態鏈。

    天氣預測例子的視覺化

    模型

    形式上,馬爾科夫鏈是一個機率自動機。狀態轉移的機率分佈通常表示為馬爾科夫鏈的轉移矩陣。如果馬爾科夫鏈有 N 個可能的狀態,那麼這個轉移矩陣就是 N**x**N 的矩陣,使得元素 (I, J) 代表從狀態 I 轉移到狀態 J 的機率。此外,狀態轉移矩陣必須是隨機矩陣,它的每一行元素之和必須是 1。這完全是能夠講得通的,因為每一行代表它自己的機率分佈。

    馬爾科夫鏈的一般檢視,圓圈代表狀態,邊代表轉移。

    具有三個可能狀態的狀態轉移矩陣。

    此外,馬爾科夫鏈也會有一個初始狀態向量,由一個 N x 1 的向量表示,用這個向量來描述從 N 個狀態中的某個狀態開始的機率分佈。初始向量中的元素 I 代表該馬爾科夫鏈從 I 狀態開始的機率。

    具有四個可能狀態的初始向量。

    這兩個實體通常就是用來描述一個馬爾科夫鏈所需的全部內容了。

    我們知道如何獲得從一個狀態轉移到另一個狀態的可能性,但是如何知道經過多個步驟後發生轉移的機率呢?為了將這個也形式化,我們現在要定義在 M 個步驟中從狀態 I 轉移到狀態 J 的機率。事實證明,這是很容易的。給定一個狀態轉移矩陣 P,這可以透過計算矩陣 P 的 M 次冪中的元素 (I, J) 來決定。然而,對於 M 值比較大的情況,如果您對簡單的線性代數比較熟悉,更有效的方法是先將矩陣對角化,然後再計算它的 M 次冪。

    結論

    既然你已經瞭解了馬爾可夫鏈的基本知識,現在就應該能夠用你選擇的語言輕鬆地實現它們。如果你不擅長程式設計,還有許多更高階的馬爾可夫鏈和馬爾可夫過程的屬性可以深入研究。在我看來,馬爾科夫鏈沿著理論路線的自然發展將是隱馬爾可夫過程或 MCMC(馬爾科夫鏈蒙特卡羅)。簡單的馬爾可夫鏈是其他更復雜的建模技術的基本組成,因此,掌握了這些知識,你現在可以去嘗試更多這種主題的技術,例如信念建模和取樣。

  • 中秋節和大豐收的關聯?
  • 客房服務員的工作流程是什麼?