前向演算法Python實現

來源:互聯網
上載者:User

標籤:sum   python實現   是什麼   處理   領域   code   自然語言   前向演算法   圖片   

前言

這裡的前向演算法與神經網路裡的前向傳播演算法沒有任何聯絡。。。這裡的前向演算法是自然語言處理領域隱馬爾可夫模型第一個基本問題的演算法。

前向演算法是什嗎?

這裡用一個海藻的例子來描述前向演算法是什麼。網上有關於前向演算法的嚴格數學推導,不過感覺還是海藻的例子比較好一些。網上的例子有很多都是有問題的,在本文中也都進行了相應的修正。
狀態轉移矩陣

相關性矩陣

初始狀態序列:Sunny(0.63),Cloudy(0.17),Rainy(0.20)
我們想要求一個觀察序列{Dry, Damp, Soggy}的機率。
具體怎麼求這個機率,數學上有嚴格的推導流程,這裡不再進行闡述,這裡僅針對前向演算法進行闡述。

前向演算法的Python實現

前向演算法的問題儘管看起來和維特比演算法解決的問題不太一樣,但是套路實際上是完全相同的。
首先可以利用numpy將資料加入到python代碼中

import numpy as np# 前向演算法tran = np.array([[0.5, 0.375, 0.125],                 [0.25, 0.125, 0.625],                 [0.25, 0.375, 0.375]])laun = np.array([[0.6, 0.2, 0.15, 0.05],                 [0.25, 0.25, 0.25, 0.25],                 [0.05, 0.1, 0.35, 0.5]])init = np.array([0.63, 0.17, 0.2])look = np.array([0, 2, 3])  # 觀測序列kind = [‘Sunny‘, ‘Cloudy‘, ‘Rainy‘]

P(第一天海藻狀態為0&晴天)=P(海藻狀態為0|晴天)P(晴天|初始狀態)
這樣的話,便可以把第一天海藻狀態為0的情況下,晴天、多雲、雨天的機率都算出來。
P(第二天海藻狀態為2&晴天)=(P(第一天海藻狀態為0|晴天)
P(今天晴天|前一天為晴天)+P(第一天海藻狀態為0|雨天)P(今天晴天|前一天為雨天)+P(第一天海藻狀態為0|陰天)P(今天晴天|前一天為陰天))*P(海藻為2|晴天)
這個算是用python代碼寫下來的話如下所示:

dp[j] = sum(np.array([a * b for a, b in zip(temp, tran[:,j])]))*laun[j,look[i]]

完整代碼如下:

dp = np.array([a * b for a, b in zip(init, laun[:, look[0]])])for i in range(1,3):    temp = np.copy(dp)    for j in range(3):        dp[j] = sum(np.array([a * b for a, b in zip(temp, tran[:,j])]))*laun[j,look[i]]print(sum(dp))

可以發現,這段代碼與維特比演算法的代碼基本完全相同,只不過最後利用的方式不同,維特比演算法是求出了最大的dp值,然後就得到了對應的最大可能的隱藏序列。而求和的話,則可以得到對應的標記序列的出現可能性。

前向演算法Python實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.