AI產品經理必修:揭開演算法的面紗(隱含馬爾可夫)

AIBigbull2050發表於2020-05-27

隱馬爾可夫模型目前陸續成功地應用於機器翻譯、拼寫糾錯、手寫體識別、影像處理、基因序列分析等領域。近20年來,它廣泛應用於股票預測和投資。本文拋棄那些眼花繚亂的數學公式,去看看隱含馬爾可夫模型到底是什麼?怎麼用?

相信只要是涉足人工智慧領域,你都會聽到這樣一個神秘的名字-隱含馬爾可夫模型。是的,看了一圈文章和資料後,除了知道馬爾可夫是個聰明絕頂的人,其他的就啥也不知道了。

正式開講之前,先大概瞭解一下,這個演算法有哪些主要的應用場景。

一個詞概括,進行預測。

20世界80年代末李開復堅持採用隱馬爾可夫模型的框架,成功的開發了世界上第一個大詞彙量連續語音識別系統sphinx。接下來,隱馬爾可夫模型陸續成功地應用於機器翻譯、拼寫糾錯、手寫體識別、影像處理、基因序列分析等領域。近20年來,它廣泛應用於股票預測和投資。

今天,我想拋棄那些眼花繚亂的數學公式,去看看隱含馬爾可夫模型到底是什麼?怎麼用?

我們還是分成三個階段來了解。

概念一:馬爾可夫假設

隨機過程中各個狀態s t的機率分佈,只與它前一個狀態s t-1有關。

舉一個例子,我們可以把S ,  S 2 ,S 3…S t…看做北京每天的最高氣溫,這裡面的每個狀態S t都是隨機的。理論上,任何一天的最高氣溫S t取值都可能和這段時間以前的最高氣溫是相關的。

馬爾可夫這個大神為了簡化問題,做出瞭如上圖的簡化的假設。回到上面的例子,第二天的最高氣溫只跟昨天有關而與其他日期沒有任何關聯。

概念二:馬爾可夫鏈

符合馬爾可夫假設的隨機過程稱為馬爾可夫過程,也稱為馬爾可夫鏈。

在這個馬爾可夫鏈中,四個圈表示四個狀態,每條邊表示一個可能的狀態轉換,邊上的權值是轉移機率。

例如:某個時刻t的狀態S t是m 2,則下一個時刻S t+1=m 3的機率是0.6,用數學符號表示是P(S t+1=m 3|S t=m 2)=0.6。

把這個馬爾可夫鏈想象成一臺機器,它隨機選擇一個狀態作為初始狀態,然後按照上述規則隨機選擇後續狀態。

結果可能如下:

  • S 1=m 1S 2=m 2   S 3=m 3  S 4=m 4
  • S 1=m 2  S 2=m 4    
  • S 1=m 3  S 2=m 3   S 3=m 4  
  • ……

這樣經過一段時間的運轉,就會產生一個狀態序列S 1,S 2,S 3… S t。我們可以數出m i出現的次數,以及m i轉換到m j的轉移機率。基於馬爾可夫假設,每一個狀態只與前一個狀態相關,例如從m 3 轉移到m 4,不論在此之前是怎麼進入m 3,這個機率都是0.3。

概念三:隱含馬爾可夫模型

隱馬爾可夫模型是上述馬爾可夫鏈的一個擴充套件: 任一時刻t的狀態s t是不可見的。所以觀察者沒法透過觀察到一個狀態序列s 1,s 2,s 3,…s T-1來推測轉移機率等引數。但是, 隱馬爾可夫在每個時刻t會輸出一個符號o t,而且o t和s t相關而且僅和s t相關。這個被稱為獨立輸出假設。

隱馬爾可夫模型結構如下:

其中包含的狀態s 1,s 2,s 3,s 4是一個典型的馬爾可夫鏈。鮑姆把這種模型稱為“隱含”馬爾可夫模型。

那麼,問題來了,什麼是隱患狀態?

從馬爾可夫鏈中,我們看到的都是可見狀態啊。這個問題真的困擾了我很久,我找了大量的資料,發現還是這樣一個經典例子能夠解釋得清楚,請看:

假設我手裡有三個不同的骰 子。第一個骰 子是我們平常見的骰 子(稱這個骰 子為D6),6個面,每個面(1,2,3,4,5,6)出現的機率是1/6。第二個骰 子是個四面體(稱這個骰 子為D4),每個面(1,2,3,4)出現的機率是1/4。第三個骰 子有八個面(稱這個骰 子為D8),每個面(1,2,3,4,5,6,7,8)出現的機率是1/8。

現在,我們開始擲骰 子,得到如下結果:

看出來了吧?什麼是隱含狀態?擲出來的數字是可見的,但是每次取哪個骰 子,我們是不是不知道?

回到隱含馬爾可夫模型,符號o t就是我們擲出來得數字(1,2,3,4,5,6,7,8),隱患狀態s t就是我們擲得骰 子(D6,D4,D8)。

現在,我們以擲骰 子為例,來總結一下隱患馬爾可夫模型得幾個構成要素:

  • 可見狀態集:D6的可見狀態集(1,2,3,4,5,6),D4的可見狀態集(1,2,3,4),D8的可見狀態集(1,2,3,4,5,6,7,8)
  • 隱患狀態集:上圖中的隱含狀態集為D6,D8,D8,D6,D4……
  • 初始(隱含)狀態轉移機率:比如,第一次拿到D6,D4和D8的機率分別是0.1,0.4,0.5。
  • (隱含)狀態轉移機率:比如,我們可以這樣定義,D6後面不能接D4,D6後面是D6的機率是9,是D8的機率是0.1。
  • (隱含狀態至可見狀態的)輸出機率:就我們的例子來說,六面骰(D6)產生1的輸出機率是1/6。產生2,3,4,5,6的機率也都是1/6,我們同樣可以對輸出機率進行其他定義。比如:我有一個被賭 場動過手腳的六面骰 子,擲出來是1的機率更大,是1/2,擲出來是2,3,4,5,6的機率是1/10。

通用地講,圍繞HMM有三種型別的問題:

  1. 給定一個模型,如何計算某個特定的輸出序列的機率。(機率計算問題)
  2. 給定一個模型和某個特定的輸出序列,如何找到最可能產生這個輸出的狀態序列。(解碼,預測問題)
  3. 給定足夠的觀測資料,如何估計隱馬爾可夫模型的引數。(非監督學習方法)

目前來說,第二種問題最常用, 【中文分詞】【語音識別】【新詞發現】【詞性標註】都有它的一席之地。

隱含馬爾可夫模型的應用

講到這,隱馬爾可夫模型的理論定義和三個問題都介紹完畢,新問題又來了,這個模型到底有什麼用?

接下來請看一下典型的通訊系統是什麼樣子的,想必“隱馬爾可夫模型有什麼用”這個問題便不攻自破了。

  1. 傳送者(人或者機器)傳送資訊時,需要採用一種能在媒體中(比如空氣、電線)傳播的訊號,比如語音或者電話線的調製訊號,這個過程就是廣義上的 編碼
  2. 然後透過媒體傳播到接收方,這個過程是 通道傳輸
  3. 在接收方,接收者(人或者機器)根據事先約定好的方法,將這些訊號還原成傳送者的資訊,這個過程是廣義上的 解碼

其中S 1,S 2,S 3,…表示資訊源發出的訊號,比如手機傳送的訊號。O 1,O 2,O 3,…是接收器(比如另一部手機)接收到的訊號。通訊中的解碼就是根據接收到的訊號O 1,O 2,O 3,…,還原出傳送的訊號S 1,S 2,S 3,…。

這跟自然語言處理又有什麼關係?不妨換個角度來考慮這個問題,所謂的語音識別,就是聽者(機器)去猜測說話者要表達的意思。這就像通訊系統中,接收端根據收到的訊號去還原出傳送端發出的訊號。

在通訊中,如何根據接收端的觀測訊號O 1,O 2,O 3,…來推測訊號源傳送的資訊S 1,S 2,S 3,…呢?只需要從所有的源資訊中找到最可能產生出觀測訊號的那一個資訊。

同樣,很多自然語言處理的應用也可以這樣理解。在從漢語到英語的翻譯中,說話者講的是漢語,但是通道傳播編碼的方式是英語,如果利用計算機,根據接收到的英語資訊,推測說話者的漢語意思,就是機器翻譯。

同樣,如果根據帶有拼寫錯誤的語句推測說話者想表達的正確意思,那就是自動糾錯。這樣,幾乎所有的自然語言處理問題都可以等價成通訊的解碼問題。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2694540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章