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