賭場抓老千只是鬧著玩兒,語音識別才是它的真本事

分類:營銷 時間:2016-10-25

1. 賭場風云(背景介紹)

最近一個賭場的老板發現生意不暢,于是派出手下去賭場張望。經探子回報,有位大叔在賭場中總能贏到錢,玩得一手好 骰子 ,幾乎是戰無不勝。而且每次玩骰子的時候周圍都有幾個保鏢站在身邊,讓人不明就里,只能看到每次開局,骰子飛出,沉穩落地。老板根據多年的經驗,推測這位不善之客使用的正是江湖失傳多年的quot;偷換骰子大法”(編者注: 偷換骰子大法,用兜里自帶的骰子偷偷換掉均勻的骰子 )。老板是個冷靜的人,看這位大叔也不是善者,不想輕易得罪他,又不想讓他壞了規矩。正愁上心頭,這時候進來一位名叫 HMM 帥哥,告訴老板他有一個很好的解決方案。

不用近其身,只要在遠處裝個攝像頭,把每局的骰子的點數都記錄下來。

然后 HMM 帥哥將會運用其強大的數學內力,用這些數據推導出

1. 該大叔是不是在出千?

2. 如果是在出千,那么他用了幾個作弊的骰子? 還有當前是不是在用作弊的骰子。

3. 這幾個作弊骰子出現各點的概率是多少?

天吶,老板一聽,這位叫 HMM 的甚至都不用近身,就能算出是不是在作弊,甚至都能算出別人作弊的骰子是什么樣的。那么,只要再當他作弊時,派人圍捕他,當場驗證骰子就能讓他啞口無言。

2. HMM 是何許人也?

在讓 HMM 開展調查活動之前,該賭場老板也對 HMM 作了一番調查。

HMM(Hidden Markov Model), 也稱隱性馬爾可夫模型,是一個概率模型,用來描述一個系統 隱性狀態 的轉移和 隱性狀態 的表現概率。

系統的隱性狀態指的就是一些外界不便觀察(或觀察不到)的狀態, 比如在當前的例子里面, 系統的狀態指的是大叔使用骰子的狀態,即

{正常骰子, 作弊骰子 1, 作弊骰子 2,...}

隱性狀態的表現也就是, 可以觀察到的,由隱性狀態產生的外在表現特點。這里就是說, 骰子擲出的點數.

{1,2,3,4,5,6}

HMM 模型將會描述,系統 隱性狀態的轉移概率 。也就是大叔切換骰子的概率,下圖是一個例子,這時候大叔切換骰子的可能性被描述得淋漓盡致。

很幸運的,這么復雜的概率轉移圖,竟然能用簡單的矩陣表達, 其中 a_{ij}代表的是從 i 狀態到 j 狀態發生的概率

當然同時也會有, 隱性狀態表現轉移 概率。也就是骰子出現各點的概率分布, (e.g. 作弊骰子 1 能有 90% 的機會擲到六,作弊骰子 2 有 85% 的機會擲到'小’). 給個圖如下,

隱性狀態的表現分布概率也可以用矩陣表示出來,

把這兩個東西總結起來,就是整個 HMM 模型。

這個模型描述了隱性狀態的轉換的概率,同時也描述了每個狀態外在表現的概率的分布。總之,HMM 模型就能夠描述扔骰子大叔作弊的頻率(骰子更換的概率),和大叔用的骰子的概率分布。有了大叔的 HMM 模型,就能把大叔看透,讓他完全在陽光下現形。

3. HMM 能干什么!

總結起來 HMM 能處理三個問題,

3.1 解碼(Decoding)

解碼就是需要從一連串的骰子中,看出來哪一些骰子是用了作弊的骰子,哪些是用的正常的骰子。

比如上圖中,給出一串骰子序列(3,6,1,2..)和大叔的 HMM 模型, 我們想要計算哪一些骰子的結果(隱性狀態表現)可能對是哪種骰子的結果(隱性狀態).

3.2 學習(Learning)

學習就是,從一連串的骰子中,學習到大叔切換骰子的概率,當然也有這些骰子的點數的分布概率。這是 HMM 最為 恐怖 也最為 復雜 的招數!!

3.3 估計(Evaluation)

估計說的是,在我們 已經知道 了該大叔的 HMM 模型的情況下,估測某串骰子出現的可能性概率。比如說,在我們已經知道大叔的 HMM 模型的情況下,我們就能直接估測到大叔扔到 10 個 6 或者 8 個 1 的概率。

4. HMM 是怎么做到的?

4.1 估計

估計是最容易的一招,在完全知道了大叔的 HMM 模型的情況下,我們很容易就能對其做出估計。

現在我們有了大叔的狀態轉移概率矩陣 A,B 就能夠進行估計。比如我們想知道這位大叔下一局連續擲出 10 個 6 的概率是多少? 如下

這表示的是,在一開始隱性狀態(s0)為 1,也就是一開始拿著的是 正常的骰子 的情況下,這位大叔連續擲出 10 個 6 的概率。

現在問題難就難在,我們雖然知道了 HMM 的轉換概率,和觀察到的狀態 V{1:T}, 但是我們卻不知道實際的隱性的狀態變化。

好吧,我們不知道隱性狀態的變化,那好吧,我們就先 假設 一個 隱性狀態序列 , 假設大叔前 5 個用的是正常骰子, 后 5 個用的是作弊骰子 1.

好了,那么我們可以計算,在這種隱性序列假設下擲出 10 個 6 的概率.

這個概率其實就是,隱性狀態表現概率 B 的乘積.

但是問題又出現了,剛才那個隱性狀態序列是我假設的,而實際的序列我不知道,這該怎么辦。好辦,把 所有可能出現 的隱狀態序列組合全都試一遍就可以了。于是,

R 就是所有可能的隱性狀態序列的集合。的嗯,現在問題好像解決了,我們已經能夠通過嘗試所有組合來獲得出現的概率值,并且可以通過 A,B 矩陣來計算出現的總概率。

但是問題又出現了,可能的集合太大了, 比如有三種骰子,有 10 次選擇機會, 那么總共的組合會有 3^10 次...這個量級 O(c^T)太大了,當問題再大一點時候,組合的數目就會大得超出了計算的可能。所以我們需要一種更有效的計算 P(V(1:T)概率的方法。

比如說如下圖的算法可以將計算 P(V1:T)的計算復雜度降低至 O(cT).

有了這個方程,我們就能從 t=0 的情況往前推導,一直推導出 P(V1:T)的概率。下面讓我們算一算,大叔擲出 3,2,1 這個骰子序列的可能性有多大(假設初始狀態為 1, 也就是大叔前一次拿著的是正常的骰子)?

4.2 解碼(Decoding)

解碼的過程就是在給出一串序列的情況下和已知 HMM 模型的情況下,找到最可能的隱性狀態序列。

用數學公式表示就是, (V 是 Visible 可見序列, w 是隱性狀態序列, A,B 是 HMM 狀態轉移概率矩陣)

(公式太多,請具體看我博客中的推導 機器學習 --- 4. 大內密探 HMM(隱馬爾可夫)圍捕賭場老千

然后又可以使用 估計(4.1) 中的 前向推導法 ,計算出最大的 P(w(1:T), V(1:T)).

在完成前向推導法之后,再使用 后向追蹤法 (Back Tracking),對求解出能令這個 P(w(1:T), V(1:T))最大的隱性序列.這個算法被稱為維特比算法(Viterbi Algorithm).

4.3 學習(Learning)

學習是在給出 HMM 的結構的情況下(比如說假設已經知道該大叔有 3 只骰子,每只骰子有 6 面),計算出最有可能的模型參數.

(公式太多,請具體看我博客中的推導 機器學習 --- 4. 大內密探 HMM(隱馬爾可夫)圍捕賭場老千

5. HMM 的應用

以上舉的例子是用 HMM 對擲骰子進行建模與分析。當然還有很多 HMM 經典的應用,能根據不同的應用需求,對問題進行建模。

但是使用 HMM 進行建模的問題,必須滿足以下條件,

1. 隱性狀態的轉移 必須滿足馬爾可夫性。(狀態轉移的馬爾可夫性:一個狀態只與前一個狀態有關)

2. 隱性狀態必須能夠大概被估計。

在滿足條件的情況下,確定問題中的 隱性狀態是什么 ,隱性狀態的 表現 可能又有哪些.

HMM 適用于的問題在于,真正的狀態(隱態)難以被估計,而狀態與狀態之間又存在聯系。

5.1 語音識別

語音識別問題就是將一段 語音信號 轉換為 文字序列 的過程. 在個問題里面

隱性狀態就是: 語音信號對應的文字序列

而顯性的狀態就是: 語音信號.

HMM 模型的學習(Learning): 語音識別的模型學習和上文中通過觀察骰子序列建立起一個最有可能的模型 不同 . 語音識別的 HMM 模型學習有兩個步驟:

1. 統計文字的發音概率,建立隱性表現概率矩陣B

2. 統計字詞之間的轉換概率(這個步驟并不需要考慮到語音,可以直接統計字詞之間的轉移概率即可)

語音模型的估計(Evaluation): 計算quot;是十四”,quot;四十四quot;等等的概率,比較得出最有可能出現的文字序列.

5.2 手寫識別

這是一個和語音差不多,只不過手寫識別的過程是將字的圖像當成了顯性序列.

5.3 中文分詞

“總所周知,在漢語中,詞與詞之間不存在分隔符(英文中,詞與詞之間用空格分隔,這是天然的分詞標記),詞本身也缺乏明顯的形態標記,因此,中文信息處理的特有問題就是如何將漢語的字串分割為合理的詞語序。例如,英文句子:you should go to kindergarten now 天然的空格已然將詞分好,只需要去除其中的介詞“to”即可;而“你現在應該去幼兒園了”這句表達同樣意思的話沒有明顯的分隔符,中文分詞的目的是,得到“你 / 現在 / 應該 / 去 / 幼兒園 / 了”。那么如何進行分詞呢?主流的方法有三種:第 1 類是基于語言學知識的規則方法,如:各種形態的最大匹配、最少切分方法;第 2 類是基于大規模語料庫的機器學習方法,這是目前應用比較廣泛、效果較好的解決方案.用到的統計模型有 N 元語言模型、信道—噪聲模型、最大期望、HMM 等。第 3 類也是實際的分詞系統中用到的,即規則與統計等多類方法的綜合。”[1] 使用 HMM 進行中文分詞.

5.4 HMM 實現拼音輸入法

拼音輸入法,是一個估測拼音字母對應想要輸入的文字(隱性狀態)的過程(比如, ‘pingyin’ -gt; 拼音)

使用 HMM 實現簡單拼音輸入法

參考:

http://ai.stanford.edu/~serafim/CS262_2007/notes/lecture5.pdf


Tags: 語音識別 馬爾科夫模型

文章來源:http://daily.zhihu.com/story/8916915


ads
ads

相關文章
ads

相關文章

ad