- 介紹(introduction)
- 產生模式(Generating Patterns)
- 隱含模式(Hidden Patterns)
- 隱馬爾科夫模型(Hidden Markov Models)
- 前向演算法(Forward Algorithm)
- 維特比演算法(Viterbi Algorithm)
- 前向後向演算法(Forward-Backward Algorithm)
- 總結
介紹(introduction)
通常我們總是對尋找某一段時間上的模式感興趣,這些模式可能出現在很多領域:一個人在使用電腦的時候使用的命令的序列模式;一句話中的單詞的序列;口語中的音素序列。總之能產生一系列事件的地方都能產生有用的模式。
考慮一個最簡單的情況:有人(柯南?)試圖從一塊海藻來推斷天氣的情況。一些民間的傳說認為“soggy”的海藻意味著潮濕(wet)的天氣,“dry”的 海藻預示著晴朗(sun)。如果海藻處於中間狀態“damp”,那就無法確定了。但是,天氣的情況不可能嚴格的按照海藻的狀態來變化,所以我們可以說在一 定程度上可能是雨天或是晴天。另一個有價值的資訊是之前某些天的天氣情況,結合昨天的天氣和可以觀察到的海藻的狀態,我們就可以為今天的天氣做一個較好的 預報。
這是在我們這個系列的介紹中一個非常典型的系統。
- 首先我們介紹一個可以隨時間產生機率性模型的系統,例如天氣在晴天或者雨天之間變動。
- 接下來我們試圖去預言我們所不能觀察到的"隱形"的系統狀態,在上面的例子中,能被觀察到的序列就是海藻的狀態嗎,隱形的系統就是天氣情況
- 然後我們看一下關於我們這個模型的一些問題,在上面那個例子中,也許我們想知道
- 如果我們觀察一個星期每一天的海藻的狀態,我們是否能知相應的其天氣情況
- 如果給出一個海藻狀態的序列,我們是否能判斷是冬天還是夏天?我們假設,如果海藻幹(dry)了一段時間,那就意味著是夏天如果海藻潮濕(soggy)了一段時間,那可能就是冬天。
產生模式(Generating Patterns)
- 確定的模式(Deterministic Patterns)
考慮交通燈的例子,一個序列可能是紅-紅/橙-綠-橙-紅。這個序列可以畫成一個狀態機器,不同的狀態按照這個狀態機器互相交替
我們可以注意到,每一個狀態都只依賴於此前的狀態,如果當前的是綠燈,那麼接下來就是橙燈,這就是一個確定型的系統。確定型的系統更容易理解和分析,只要這些狀態轉移都是已知的。
- 不確定的模式(Non-Deterministic Patterns)
為了讓之前那個天氣的例子更貼近現實,我們可以添加一個狀態-多雲。和交通燈的例子不同,我們不能得到一個確定的狀態轉移系統,但是我們還是希望能得到一個天氣的模式。
一種辦法就是假設這個模型的每個狀態都只依賴於之前的狀態,這個假設被稱為馬爾科夫假設,這個假設可以大大的簡化這個問題。顯然,這個假設可能是一個非常糟糕的假設,導致很多重要的資訊都丟失了。
當涉及到天氣的時候,馬爾科夫假設假設如果我們知道之間一些天 的天氣的資訊,不考慮風力、氣壓等因素,那麼我們就能預言今天的天氣。當然,和其他許多例子一樣,這個列子也是不合實際的。但是,這樣一個簡化的系統可以 有利於我們的分析,所以我們通常接受這樣的假設,因為我們知道這樣的系統能讓我們獲得一些有用的資訊,儘管不是十分準確的。
一個馬 爾科夫過程就是指過程中的每個狀態的轉移只依賴於之前的n個狀態,這個過程被稱為1個n階的模型,其中n是影響轉移的狀態的數目。最簡單的馬爾科夫過程就 是一階過程,每一個狀態的轉移只依賴於其之間的那一個狀態。注意這和確定型的系統不一樣,因為這種裝因是有機率的,而不是確定的。下面這個圖展示了天氣這 個例子中所有可能的一階轉移:
注意一個含有M個狀態的一階過程有M的平方個狀態轉移。每一個轉移的機率叫做狀態轉移機率(state transition probability),就是從一個狀態轉移到另一個狀態的機率。這所有的M的平方個機率可以用一個狀態轉移矩陣來表示。注意這裡有一個假設,機率不隨時間的變化而變化,這又是一個不現實但很重要的假設。下面就是一個狀態轉移矩陣的列子:
這個矩陣的意思是,如果昨天是晴天,那麼今天又50%的可能是晴天,37.5%的機率是陰天,12.5%的機率會下雨,很明顯,每一行的和都是1。
為了初始化這樣一個系統,我們需要一個初始的機率向量:
這個向量表示第一天是晴天。
到這裡,我們就為一階馬爾科夫流程定義了以下三個部分:
- 狀態:晴天、陰天和下雨
- 初始向量:定義系統在時間為0的時候的狀態的機率
- 狀態轉移矩陣:每種天氣轉換的機率
所有的能被這樣描述的系統都是一個馬爾科夫過程。
我們為了找到隨時間變化的模式,就試圖去建立一個可以產生模式的過程模型。我們使用了具體的時間步驟、狀態、並且做了馬爾科夫假設。有了這些假設,這個能產生模式系統就是一個馬爾科夫過程。一個馬爾科夫過程包括一個初始向量和一個狀態轉移矩陣。關於這個假設需要注意的一點是狀態轉移機率不隨時間變化。