白白說算法:相親中的馬爾科夫模型
按照未來互聯(lián)網(wǎng)的發(fā)展趨勢以及日趨激烈的人才競爭中,產(chǎn)品經(jīng)理也須掌握基礎(chǔ)的技術(shù)算法。因此,本文以相親為例,介紹了什么是馬爾科夫模型。
大家好,我是白白,第一時刻來講講算法系列。
產(chǎn)品經(jīng)理是否需要懂技術(shù),對于這個問題互聯(lián)網(wǎng)圈看法各不相同。
白白看來,隨著未來互聯(lián)網(wǎng)的發(fā)展,按照正常的產(chǎn)品經(jīng)理職業(yè)發(fā)展路徑,還是需要了解一些技術(shù)的內(nèi)容。產(chǎn)品經(jīng)理需要了解技術(shù)的基本框架,但不一定需要了解所有技術(shù)細節(jié)。人工智能領(lǐng)域,產(chǎn)品經(jīng)理需要了解算法的基本原理,以及如何將實際問題轉(zhuǎn)化為算法問題。
白白作為一名AI產(chǎn)品經(jīng)理,準備持續(xù)寫一寫算法的內(nèi)容,爭取用最簡單的語言告訴大家每種算法的邏輯。
一、馬爾科夫模型
有一天白白去相親,見了2個人,上午一個下午一個。
兩個小姐姐都不錯,這下白白突然不知道應該選哪個(其實兩個妹子都沒看上我),后來有個算法的同事過來支招,畢竟是結(jié)婚過日子么,那還是要考慮充分。
有一種算法的含義是每種狀態(tài),只與之前的一個或多個狀態(tài)有關(guān),也就是說我們可以根據(jù)小姐姐之前的狀態(tài)再綜合評價。
白白思考了10秒,覺得好像挺有道理,畢竟現(xiàn)在看著還不錯,萬一隱藏了什么呢?
所以還是要看看小姐姐的上一個狀態(tài)。從人生的角度來講,女孩的上一個狀態(tài),也就是她媽媽了。這種每個狀態(tài)由之前的1個或多個狀態(tài)決定的模型,我們稱為馬爾科夫模型。
馬爾科夫模型中很多關(guān)系使用概率描述的,比如女孩的媽媽很白,那么女兒也很白的概率是90%,女孩媽媽是性格好,女兒也性格好的概率為70%。下圖展示了母親和女兒性格之間的概率關(guān)系。
由上圖可列出表格:
馬爾科夫模型有三個要素:
- 狀態(tài):性格好、性格差
- 初始向量:在系統(tǒng)定義時間為0時,狀態(tài)出現(xiàn)的概率。比如從女兒媽媽出現(xiàn)的時間算起認為是系統(tǒng)的0時,那么她媽媽性格好或性格差的的概率就是初始向量。
- 狀態(tài)轉(zhuǎn)移矩陣:上圖列出的表格就是狀態(tài)轉(zhuǎn)移概率,用于描述狀態(tài)之間的轉(zhuǎn)換。
在實際問題中,有關(guān)序列的問題很多都可以用馬爾科夫模型來求解,例如股票的量化分析、新聞摘要提取、用戶行為預測等。
二、隱馬爾可夫鏈
我們即使知道馬爾科夫模型的3個要素,還是無法做出良好判定。因為我們觀察到的狀態(tài)中,很可能還包含有隱藏狀態(tài)。比如我們看到小姐姐和她媽媽確實都不錯,但是或許隱藏著小姐姐沒準已經(jīng)有男朋友了,她現(xiàn)在是在找備胎。
來換個陽光的例子,假如小姐姐打了你一巴掌,打人只是表象,真實的隱藏狀態(tài)是她的心情。打人不一定表示她不開心,打人這個現(xiàn)象對于她是否開心,也有相應的概率。所以對于模型而言,必須要考慮多種情況才能對狀態(tài)有完整的描述。
針對以上的情況,還有一種與馬爾科夫模型很像的模型,稱為隱馬爾科夫鏈。
在隱馬爾可夫模型中有兩條鏈,一條稱為可見狀態(tài)鏈,一條稱為隱藏狀態(tài)鏈。每個狀態(tài)之間依然是一種序列的關(guān)系。
如下圖中,X表示女孩的實際的某個狀態(tài),但是我們看不到,這就是隱藏狀態(tài)鏈。O表示女孩的性格情況,我們只能觀察的O這個狀態(tài),這就是可見狀態(tài)鏈。
1. 隱馬爾可夫模型主要解決的問題
隱馬爾可夫主要圍繞以下三類問題:
- 給定一個模型,求某個觀察序列O的概率
- 給定模型和觀察序列O,求可能性最大的X序列
- 對于給定的觀察序列O,調(diào)整隱馬爾可夫模型的參數(shù),使得觀測序列O出現(xiàn)的概率最大
其中第二類問題是我們最常見的,在語音識別、文本分析等領(lǐng)域有著廣泛應用。簡單來講,就是通過我們看到的可見狀態(tài)鏈來求解隱藏狀態(tài)鏈的相關(guān)活動。
當和姑娘相處了一段時間之后,會摸清楚她大概的品性,這就是初始概率。比如大部分時間是開心的,或者開心與不開心各占一半。
隱馬爾科夫鏈模型有四個要素:狀態(tài)、初始向量、狀態(tài)轉(zhuǎn)移矩陣、輸出矩陣。
前三個與馬爾科夫模型幾乎沒有區(qū)別,輸出矩陣指的是由隱藏狀態(tài)到可見狀態(tài)的輸出概率。
例如小姐姐心情不好,可能打人的概率,可能購物的概率等,這些都是輸出概率。我們可以建立隱馬爾可夫模型,通過小姐姐的表現(xiàn)計算她是否開心。
建立隱馬爾可夫模型:心情有2個狀態(tài)(不開心、開心),但是我們無法直接觀察到心情(心情狀態(tài)對我們是隱藏的),我們只能觀察到小姐姐的行為(撒嬌、購物、打人),我們認為小姐姐的心情與上一時刻的心情有關(guān),即這個系統(tǒng)構(gòu)成隱馬爾可夫鏈。
我們已知妹子的長期的一個心情分布概率(初始情況):P={開心:0.6,不開心:0.4}
轉(zhuǎn)換概率分布為:
在相應的心情下,妹子進行的活動的輸出概率分布為:
計算第一時刻的心情情況:
- P(第一時刻開心)=P(撒嬌|開心)*P(開心|初始情況)=0.5*0.6=0.30
- P(第一時刻不開心)=P(撒嬌|不開心)*P(不開心|初始情況)=0.1*0.4=0.04
第一時刻開心的概率比較大,于是我們可以認為第一時刻是開心。
假設知道妹子第二時刻在妹子在購物,計算第二時刻的心情情況:
- P(第一時刻不開心,第二時刻不開心)=P(不開心|第一時刻)*P(不開心->不開心)*P(購物|不開心)=0.04*0.6*0.3=0.0072
- P(第一時刻不開心,第二時刻開心)=P(不開心|第一時刻)*P(不開心->開心)*P(購物|開心)=0.04*0.4*0.4=0.0064
- P(第一時刻開心,第二時刻開心)=P(開心|第一時刻)*P(開心->開心)*P(購物|開心)=0.30*0.7*0.4=0.084
- P(第一時刻開心,第二時刻不開心)=P(開心|第一時刻)*P(開心->不開心)*P(購物|不開心)=0.30*0.3*0.3=0.027
可以看到第二時刻最可能的是開心。
假設知道第三時刻妹子把你給打了,我們來算算各種情況的概率:
- P(第二時刻不開心,第三時刻不開心)=P(不開心|第二時刻)*P(不開心->不開心)*P(打人|不開心) =0.027*0.6*0.6=0.00972
- P(第二時刻不開心,第三時刻開心)=P(不開心|第二時刻)*P(不開心->開心)*P(打人|開心) =0.027*0.4*0.1=0.00108
- P(第二時刻開心,第三時刻開心)=P(開心|第二時刻)*P(開心->開心)*P(打人|開心) =0.084*0.7*0.1=0.00588
- P(第二時刻開心,第三時刻不開心)=P(開心|第二時刻)*P(開心->不開心)*P(打人|不開心) =0.084*0.3*0.6=0.01512
我們可以認為,第三時刻的心情是不開心。
通過上面三個時刻的計算,我們可以得出隱藏狀態(tài)的序列:開心->開心->不開心。
這就是隱馬爾可夫鏈模型的簡單介紹。
#專欄作家#
白白,人人都是產(chǎn)品經(jīng)理專欄作家。醫(yī)藥行業(yè)資深產(chǎn)品專家,負責人工智能行業(yè)類產(chǎn)品綜合架構(gòu)與技術(shù)開發(fā)。在行業(yè)云產(chǎn)品架構(gòu),藥物設計AI輔助、醫(yī)療知識圖譜等領(lǐng)域有深入研究。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議
你媽媽跟女兒的例子,表格弄得一臉懵逼,首列應該是媽媽性格好和媽媽性格差,首行應該是女兒性格好的概率和女兒性格差的概率吧
在我回家計算完之后,發(fā)現(xiàn)妹子把我好友刪了。
樣本數(shù)量不夠,建議多備點 ??