AI產(chǎn)品經(jīng)理必修:揭開算法的面紗(隱含馬爾可夫)

2 評(píng)論 3595 瀏覽 12 收藏 11 分鐘

隱馬爾可夫模型目前陸續(xù)成功地應(yīng)用于機(jī)器翻譯、拼寫糾錯(cuò)、手寫體識(shí)別、圖像處理、基因序列分析等領(lǐng)域。近20年來,它廣泛應(yīng)用于股票預(yù)測(cè)和投資。本文拋棄那些眼花繚亂的數(shù)學(xué)公式,去看看隱含馬爾可夫模型到底是什么?怎么用?

相信只要是涉足人工智能領(lǐng)域,你都會(huì)聽到這樣一個(gè)神秘的名字-隱含馬爾可夫模型。是的,看了一圈文章和資料后,除了知道馬爾可夫是個(gè)聰明絕頂?shù)娜耍渌木蜕兑膊恢懒恕?/p>

正式開講之前,先大概了解一下,這個(gè)算法有哪些主要的應(yīng)用場(chǎng)景。

一個(gè)詞概括,進(jìn)行預(yù)測(cè)。

20世界80年代末李開復(fù)堅(jiān)持采用隱馬爾可夫模型的框架,成功的開發(fā)了世界上第一個(gè)大詞匯量連續(xù)語音識(shí)別系統(tǒng)sphinx。接下來,隱馬爾可夫模型陸續(xù)成功地應(yīng)用于機(jī)器翻譯、拼寫糾錯(cuò)、手寫體識(shí)別、圖像處理、基因序列分析等領(lǐng)域。近20年來,它廣泛應(yīng)用于股票預(yù)測(cè)和投資。

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

一、隱含馬爾可夫模型是什么?

我們還是分成三個(gè)階段來了解。

概念一:馬爾可夫假設(shè)

隨機(jī)過程中各個(gè)狀態(tài)st的概率分布,只與它前一個(gè)狀態(tài)st-1有關(guān)。

舉一個(gè)例子,我們可以把S1 ,?S2?,S3…St…看做北京每天的最高氣溫,這里面的每個(gè)狀態(tài)St都是隨機(jī)的。理論上,任何一天的最高氣溫St取值都可能和這段時(shí)間以前的最高氣溫是相關(guān)的。

馬爾可夫這個(gè)大神為了簡(jiǎn)化問題,做出了如上圖的簡(jiǎn)化的假設(shè)。回到上面的例子,第二天的最高氣溫只跟昨天有關(guān)而與其他日期沒有任何關(guān)聯(lián)。

概念二:馬爾可夫鏈

符合馬爾可夫假設(shè)的隨機(jī)過程稱為馬爾可夫過程,也稱為馬爾可夫鏈。

在這個(gè)馬爾可夫鏈中,四個(gè)圈表示四個(gè)狀態(tài),每條邊表示一個(gè)可能的狀態(tài)轉(zhuǎn)換,邊上的權(quán)值是轉(zhuǎn)移概率。

例如:某個(gè)時(shí)刻t的狀態(tài)St是m2,則下一個(gè)時(shí)刻St+1=m3的概率是0.6,用數(shù)學(xué)符號(hào)表示是P(St+1=m3|St=m2)=0.6。

把這個(gè)馬爾可夫鏈想象成一臺(tái)機(jī)器,它隨機(jī)選擇一個(gè)狀態(tài)作為初始狀態(tài),然后按照上述規(guī)則隨機(jī)選擇后續(xù)狀態(tài)。

結(jié)果可能如下:

  • S1=m1S2=m2 ??S3=m3 ?S4=m4
  • S1=m2 ?S2=m4 ???
  • S1=m3 ?S2=m3 ??S3=m4 ?
  • ……

這樣經(jīng)過一段時(shí)間的運(yùn)轉(zhuǎn),就會(huì)產(chǎn)生一個(gè)狀態(tài)序列S1,S2,S3… St。我們可以數(shù)出mi出現(xiàn)的次數(shù),以及mi轉(zhuǎn)換到mj的轉(zhuǎn)移概率。基于馬爾可夫假設(shè),每一個(gè)狀態(tài)只與前一個(gè)狀態(tài)相關(guān),例如從m3?轉(zhuǎn)移到m4,不論在此之前是怎么進(jìn)入m3,這個(gè)概率都是0.3。

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

隱馬爾可夫模型是上述馬爾可夫鏈的一個(gè)擴(kuò)展:任一時(shí)刻t的狀態(tài)st是不可見的。所以觀察者沒法通過觀察到一個(gè)狀態(tài)序列s1,s2,s3,…sT-1來推測(cè)轉(zhuǎn)移概率等參數(shù)。但是,隱馬爾可夫在每個(gè)時(shí)刻t會(huì)輸出一個(gè)符號(hào)ot,而且ot和st相關(guān)而且僅和st相關(guān)。這個(gè)被稱為獨(dú)立輸出假設(shè)。

隱馬爾可夫模型結(jié)構(gòu)如下:

其中包含的狀態(tài)s1,s2,s3,s4是一個(gè)典型的馬爾可夫鏈。鮑姆把這種模型稱為“隱含”馬爾可夫模型。

那么,問題來了,什么是隱患狀態(tài)?

從馬爾可夫鏈中,我們看到的都是可見狀態(tài)啊。這個(gè)問題真的困擾了我很久,我找了大量的資料,發(fā)現(xiàn)還是這樣一個(gè)經(jīng)典例子能夠解釋得清楚,請(qǐng)看:

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

現(xiàn)在,我們開始擲骰子,得到如下結(jié)果:

看出來了吧?什么是隱含狀態(tài)?擲出來的數(shù)字是可見的,但是每次取哪個(gè)骰子,我們是不是不知道?

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

現(xiàn)在,我們以擲骰子為例,來總結(jié)一下隱患馬爾可夫模型得幾個(gè)構(gòu)成要素:

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

二、隱含馬爾可夫模型能解決什么問題?

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

  1. 給定一個(gè)模型,如何計(jì)算某個(gè)特定的輸出序列的概率。(概率計(jì)算問題)
  2. 給定一個(gè)模型和某個(gè)特定的輸出序列,如何找到最可能產(chǎn)生這個(gè)輸出的狀態(tài)序列。(解碼,預(yù)測(cè)問題)
  3. 給定足夠的觀測(cè)數(shù)據(jù),如何估計(jì)隱馬爾可夫模型的參數(shù)。(非監(jiān)督學(xué)習(xí)方法)

目前來說,第二種問題最常用,【中文分詞】【語音識(shí)別】【新詞發(fā)現(xiàn)】【詞性標(biāo)注】都有它的一席之地。

隱含馬爾可夫模型的應(yīng)用

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

接下來請(qǐng)看一下典型的通信系統(tǒng)是什么樣子的,想必“隱馬爾可夫模型有什么用”這個(gè)問題便不攻自破了。

  1. 發(fā)送者(人或者機(jī)器)發(fā)送信息時(shí),需要采用一種能在媒體中(比如空氣、電線)傳播的信號(hào),比如語音或者電話線的調(diào)制信號(hào),這個(gè)過程就是廣義上的編碼。
  2. 然后通過媒體傳播到接收方,這個(gè)過程是信道傳輸。
  3. 在接收方,接收者(人或者機(jī)器)根據(jù)事先約定好的方法,將這些信號(hào)還原成發(fā)送者的信息,這個(gè)過程是廣義上的解碼

其中S1,S2,S3,…表示信息源發(fā)出的信號(hào),比如手機(jī)發(fā)送的信號(hào)。O1,O2,O3,…是接收器(比如另一部手機(jī))接收到的信號(hào)。通信中的解碼就是根據(jù)接收到的信號(hào)O1,O2,O3,…,還原出發(fā)送的信號(hào)S1,S2,S3,…。

這跟自然語言處理又有什么關(guān)系?不妨換個(gè)角度來考慮這個(gè)問題,所謂的語音識(shí)別,就是聽者(機(jī)器)去猜測(cè)說話者要表達(dá)的意思。這就像通信系統(tǒng)中,接收端根據(jù)收到的信號(hào)去還原出發(fā)送端發(fā)出的信號(hào)。

在通信中,如何根據(jù)接收端的觀測(cè)信號(hào)O1,O2,O3,…來推測(cè)信號(hào)源發(fā)送的信息S1,S2,S3,…呢?只需要從所有的源信息中找到最可能產(chǎn)生出觀測(cè)信號(hào)的那一個(gè)信息。

同樣,很多自然語言處理的應(yīng)用也可以這樣理解。在從漢語到英語的翻譯中,說話者講的是漢語,但是信道傳播編碼的方式是英語,如果利用計(jì)算機(jī),根據(jù)接收到的英語信息,推測(cè)說話者的漢語意思,就是機(jī)器翻譯。

同樣,如果根據(jù)帶有拼寫錯(cuò)誤的語句推測(cè)說話者想表達(dá)的正確意思,那就是自動(dòng)糾錯(cuò)。這樣,幾乎所有的自然語言處理問題都可以等價(jià)成通信的解碼問題。

 

本文由 @CARRIE 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 看不懂,好難啊…

    來自江蘇 回復(fù)
    1. 我們算法也說很難 ?? 作為產(chǎn)品知道這個(gè)算法大概在哪些領(lǐng)域有應(yīng)用就行

      來自北京 回復(fù)