白白說算法:相親中的馬爾科夫模型

3 評論 4852 瀏覽 10 收藏 11 分鐘

按照未來互聯網的發展趨勢以及日趨激烈的人才競爭中,產品經理也須掌握基礎的技術算法。因此,本文以相親為例,介紹了什么是馬爾科夫模型。

大家好,我是白白,第一時刻來講講算法系列。

產品經理是否需要懂技術,對于這個問題互聯網圈看法各不相同。

白白看來,隨著未來互聯網的發展,按照正常的產品經理職業發展路徑,還是需要了解一些技術的內容。產品經理需要了解技術的基本框架,但不一定需要了解所有技術細節。人工智能領域,產品經理需要了解算法的基本原理,以及如何將實際問題轉化為算法問題。

白白作為一名AI產品經理,準備持續寫一寫算法的內容,爭取用最簡單的語言告訴大家每種算法的邏輯。

一、馬爾科夫模型

有一天白白去相親,見了2個人,上午一個下午一個。

兩個小姐姐都不錯,這下白白突然不知道應該選哪個(其實兩個妹子都沒看上我),后來有個算法的同事過來支招,畢竟是結婚過日子么,那還是要考慮充分。

有一種算法的含義是每種狀態,只與之前的一個或多個狀態有關,也就是說我們可以根據小姐姐之前的狀態再綜合評價。

白白思考了10秒,覺得好像挺有道理,畢竟現在看著還不錯,萬一隱藏了什么呢?

所以還是要看看小姐姐的上一個狀態。從人生的角度來講,女孩的上一個狀態,也就是她媽媽了。這種每個狀態由之前的1個或多個狀態決定的模型,我們稱為馬爾科夫模型。

馬爾科夫模型中很多關系使用概率描述的,比如女孩的媽媽很白,那么女兒也很白的概率是90%,女孩媽媽是性格好,女兒也性格好的概率為70%。下圖展示了母親和女兒性格之間的概率關系。

由上圖可列出表格:

馬爾科夫模型有三個要素:

  1. 狀態:性格好、性格差
  2. 初始向量:在系統定義時間為0時,狀態出現的概率。比如從女兒媽媽出現的時間算起認為是系統的0時,那么她媽媽性格好或性格差的的概率就是初始向量。
  3. 狀態轉移矩陣:上圖列出的表格就是狀態轉移概率,用于描述狀態之間的轉換。

在實際問題中,有關序列的問題很多都可以用馬爾科夫模型來求解,例如股票的量化分析、新聞摘要提取、用戶行為預測等。

二、隱馬爾可夫鏈

我們即使知道馬爾科夫模型的3個要素,還是無法做出良好判定。因為我們觀察到的狀態中,很可能還包含有隱藏狀態。比如我們看到小姐姐和她媽媽確實都不錯,但是或許隱藏著小姐姐沒準已經有男朋友了,她現在是在找備胎。

來換個陽光的例子,假如小姐姐打了你一巴掌,打人只是表象,真實的隱藏狀態是她的心情。打人不一定表示她不開心,打人這個現象對于她是否開心,也有相應的概率。所以對于模型而言,必須要考慮多種情況才能對狀態有完整的描述。

針對以上的情況,還有一種與馬爾科夫模型很像的模型,稱為隱馬爾科夫鏈。

在隱馬爾可夫模型中有兩條鏈,一條稱為可見狀態鏈,一條稱為隱藏狀態鏈。每個狀態之間依然是一種序列的關系。

如下圖中,X表示女孩的實際的某個狀態,但是我們看不到,這就是隱藏狀態鏈。O表示女孩的性格情況,我們只能觀察的O這個狀態,這就是可見狀態鏈。

1. 隱馬爾可夫模型主要解決的問題

隱馬爾可夫主要圍繞以下三類問題:

  1. 給定一個模型,求某個觀察序列O的概率
  2. 給定模型和觀察序列O,求可能性最大的X序列
  3. 對于給定的觀察序列O,調整隱馬爾可夫模型的參數,使得觀測序列O出現的概率最大

其中第二類問題是我們最常見的,在語音識別、文本分析等領域有著廣泛應用。簡單來講,就是通過我們看到的可見狀態鏈來求解隱藏狀態鏈的相關活動。

當和姑娘相處了一段時間之后,會摸清楚她大概的品性,這就是初始概率。比如大部分時間是開心的,或者開心與不開心各占一半。

隱馬爾科夫鏈模型有四個要素:狀態、初始向量、狀態轉移矩陣、輸出矩陣。

前三個與馬爾科夫模型幾乎沒有區別,輸出矩陣指的是由隱藏狀態到可見狀態的輸出概率。

例如小姐姐心情不好,可能打人的概率,可能購物的概率等,這些都是輸出概率。我們可以建立隱馬爾可夫模型,通過小姐姐的表現計算她是否開心。

建立隱馬爾可夫模型:心情有2個狀態(不開心、開心),但是我們無法直接觀察到心情(心情狀態對我們是隱藏的),我們只能觀察到小姐姐的行為(撒嬌、購物、打人),我們認為小姐姐的心情與上一時刻的心情有關,即這個系統構成隱馬爾可夫鏈。

我們已知妹子的長期的一個心情分布概率(初始情況):P={開心:0.6,不開心:0.4}

轉換概率分布為:

在相應的心情下,妹子進行的活動的輸出概率分布為:

計算第一時刻的心情情況:

  • 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

我們可以認為,第三時刻的心情是不開心。

通過上面三個時刻的計算,我們可以得出隱藏狀態的序列:開心->開心->不開心。

這就是隱馬爾可夫鏈模型的簡單介紹。

#專欄作家#

白白,人人都是產品經理專欄作家。醫藥行業資深產品專家,負責人工智能行業類產品綜合架構與技術開發。在行業云產品架構,藥物設計AI輔助、醫療知識圖譜等領域有深入研究。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 你媽媽跟女兒的例子,表格弄得一臉懵逼,首列應該是媽媽性格好和媽媽性格差,首行應該是女兒性格好的概率和女兒性格差的概率吧

    來自廣東 回復
  2. 在我回家計算完之后,發現妹子把我好友刪了。

    來自廣東 回復
    1. 樣本數量不夠,建議多備點 ??

      來自廣東 回復