1. 程式人生 > >前向演算法(Forward Algorithm)

前向演算法(Forward Algorithm)

本文直接舉例項說明ForwardAlgorithm (前向演算法)

由馬爾科夫模型MM可知:對於一個系統,由一個狀態轉至另一個狀態的轉換過程中,存在著轉移概率,並且這種轉移概率可以依據其緊接的前一種狀態推算出來,與該系統的原始狀態和此次轉移前的馬爾可夫過程無關。

隱馬爾可夫模型(HiddenMarkov modelsHMM)是馬爾可夫鏈的一種,它的狀態不能直接觀察到,但能通過觀測向量序列觀察到,每個觀測向量都是通過某些概率密度分佈表現為各種狀態,每一個觀測向量是由一個具有相應概率密度分佈的狀態序列產生。

假設連續觀察3天的海藻溼度為(Dry,Damp, Soggy),求出該觀察序列的概率。

天氣只有三類(Sunny,Cloudy, Rainy),而且海藻溼度和天氣有一定的關係。

已知:

1.      隱藏的狀態:Sunny, Cloudy, Rainy;海藻溼度有四類{Dry,Dryish, Damp, Soggy }

2.      觀察狀態序列:{ Dry, Damp, Soggy };

3.      初始狀態序列:Sunny(0.63), Cloudy(0.17),Rainy(0.20);

4.      狀態轉移矩陣:

Sunny

Cloudy

Rainy

Sunny

0.5

0.375

0.125

Cloudy

0.25

0.125

0.625

Rainy

0.25

0.375

0.375

Cloudy(昨天)->Sunny(今天)的概率是0.25;

Sunny(昨天)->Rainy(今天)的概率是0.125.

5.      混淆矩陣(海藻溼度與天氣的相關性):

Dry

Dryish

Damp

Soggy

Sunny

0.6

0.2

0.15

0.05

Cloudy

0.25

0.25

0.25

0.25

Rainy

0.05

0.10

0.35

0.50

觀察到海藻溼度Dry,則當天Sunny的概率是0.6;Cloudy的概率是0.25;而當天Rainy的概率是0.05.

How to calculate the probability of this observation list?

即統計P(observation|Sunny, Sunny, Sunny)+P(observation| Sunny, Sunny, Cloudy)+ P(observation| Sunny,Sunny, Rainy)+ P(observation| Sunny, Cloudy, Sunny) + P(observation| Sunny, Cloudy,Cloudy) + P(observation| Sunny, Cloudy, Rainy) + …

總共的可能性有3^3種。

實際由於馬爾科夫模型,我們得知其實第二天的狀況只取決於第一天,第三天的天氣已經與第一天的天氣沒有關係了。

我們可以先求P(Day1-Sunny),P(Day1-Cloudy), P(Day1-Rainy),Day1的海藻溼度是Dry.

P(Day1-Sunny) = 0.63*0.6;

P(Day1-Cloudy)=0.17*0.25;

P(Day1-Rain)=0.20*0.05;

繼續求P(Day2-Sunny), P(Day2-Cloudy),P(Day2-Rainy), Day2的海藻溼度是Damp.

P(Day2-Suny)= (P(Day1-Sunny)*0.5 + P(Day1-Cloudy)*0.25 +P(Day1-Rainy)*0.25)* 0.15

P(Day2-Cloudy) = (P(Day1-Sunny)*0.375+ P(Day1-Cloudy)*0.125 + P(Day1-Rainy)*0.625) * 0.25

P(Day2-Rainy) =(P(Day1-Sunny)*0.125+ P(Day1-Cloudy)*0.625 + P(Day1-Rainy)*0.375)* 0.35

同理繼續求第三日的各天氣概率,Day3的海藻溼度是Soggy.

P(Day3-Suny)= (P(Day2-Sunny)*0.5 + P(Day1-Cloudy)*0.25 +P(Day1-Rainy)*0.25)* 0.05

P(Day3-Cloudy) = (P(Day2-Sunny)*0.375+ P(Day1-Cloudy)*0.125 + P(Day1-Rainy)*0.625) * 0.25

P(Day3-Rainy) =(P(Day2-Sunny)*0.125+ P(Day1-Cloudy)*0.625 + P(Day1-Rainy)*0.375)* 0.50

推出:

P(observation list) =P(Day3-Sunny)+P(Day3-Cloudy)+P(Day3-Rainy) = 0.030319

參考:

相關推薦

演算法(Forward Algorithm)

本文直接舉例項說明ForwardAlgorithm (前向演算法) 由馬爾科夫模型MM可知:對於一個系統,由一個狀態轉至另一個狀態的轉換過程中,存在著轉移概率,並且這種轉移概率可以依據其緊接的前一種狀態推算出來,與該系統的原始狀態和此次轉移前的馬爾可夫過程無關。 隱馬爾可夫

演算法Forward Algorithm)(四)

首先需要說明的是,本節不是這個系列的翻譯,而是作為前向演算法這一章的補充,希望能從實踐的角度來說明前向演算法。除了用程式來解讀hmm的前向演算法外,還希望將原文所舉例子的問題拿出來和大家探討。  文中所舉的程式來自於UMDHMM這個C語言版本的HMM工具包,具體見《幾種不同程

演算法Forward Algorithm)(二)

計算觀察序列的概率(Finding the probability of an observed sequence) 2b.計算t=1時的區域性概率’s  我們按如下公式計算區域性概率:  t ( j )= Pr( 觀察狀態 | 隱藏狀態j ) x Pr(t時刻所有指向j狀態

HMM學習最佳範例五:演算法5

  在HMM這個翻譯系列的原文中,作者舉了一個前向演算法的互動例子,這也是這個系列中比較出彩的地方,但是,在具體執行這個例子的時候,卻發現其似乎有點問題。   先說一下如何使用這個互動例子,執行時需要瀏覽器支援java,我用的是firefox。首先在Set按鈕前面的對話方

HMM演算法,維位元演算法,後演算法演算法程式碼

typedef struct { int N; /* 隱藏狀態數目;Q={1,2,…,N} */ int M; /* 觀察符號數目; V={1,2,…,M}*/ double **A; /* 狀態轉移矩陣A[1..N][1..N]. a[i][j] 是從t時刻狀態i到t+1

分步演算法(forward stagewise algorithm)

演算法: 輸入:訓練資料集 T={(x1,y1),(x2,y2),⋯,(xN,yN)};損失函式 L(y,f(x)) ;基函式集 {b(x;γ)}; 輸出:加法模型 f(x) . (1) 初

【轉載】傳播算法(Forward propagation)與反向傳播算法(Back propagation)

應用 思想 size 之路 基礎 pro 中間 nbsp sdn 原文鏈接:https://blog.csdn.net/bitcarmanlee/article/details/78819025 雖然學深度學習有一段時間了,但是對於一些算法的具體實現還是模糊不清,用了很久也

UPC-9519 New Game 星+Dijkstra演算法

題目傳送門 AC程式碼:(其實我也看不懂= =) #include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; const int maxn=1e6+7; struct Edge{ int ne

Tensorflow實戰-傳播演算法

本文介紹最簡單的全連線網路結構的前向傳播演算法 之所以稱之為全連線神經網路,是因為相鄰兩層之間任意兩個節點之間都有連線 以一個簡單的判斷零件是否合格的三層全連線神經網路作為例子 記x=[x1,x2],w1=,w2= 通過矩陣乘法表示如下: a = tf.matmul(

隱馬爾科夫模型(演算法、鮑姆-韋爾奇演算法、維特比演算法)

 概率圖模型是一類用圖來表達變數相關關係的概率模型。它以圖為表示工具,最常見的是用一個結點表示一個或一組隨機變數,結點之間的變表是變數間的概率相關關係。根據邊的性質不同,可以將概率圖模型分為兩類:一類是使用有向無環圖表示變數間的依賴關係,稱為有向圖模型或貝葉斯網;另一類是使用無向圖表示變數間的相關關係,稱為無

ML之LS&OLS:LS&OLS演算法的簡介、論文、演算法的改進(最佳子集選擇法、逐步迴歸法)、程式碼實現等詳細攻略

ML之LS&OLS:LS&OLS演算法的簡介、論文、演算法的改進(最佳子集選擇法、前向逐步迴歸法)、程式碼實現等詳細攻略   LS&OLS演算法的簡介   OLS是在大約200 年前(1806年)由高斯(Gauss)和法國數學家阿德里安-

分步演算法與提升樹模型

本篇部落格主要來說明前向分步演算法以及通過前向分步演算法構造的提升樹模型。 首先,我們假設某一模型公式具有如下形式: 其中我們稱為基函式,為此基函式的係數,而為基函式的相關引數,我們稱這樣的模型為加法模型;我們通過使用這樣一個模型來進行迴歸於分類任務。 然而,這樣一個模型改如何來構

迴圈神經網路(RNN)模型與反向傳播演算法

    在前面我們講到了DNN,以及DNN的特例CNN的模型和前向反向傳播演算法,這些演算法都是前向反饋的,模型的輸出和模型本身沒有關聯關係。今天我們就討論另一類輸出和模型間有反饋的神經網路:迴圈神經網路(Recurrent Neural Networks ,以下簡稱RNN),它廣泛的用於自然語言處理中的語音

LSTM模型與反向傳播演算法

    在迴圈神經網路(RNN)模型與前向反向傳播演算法中,我們總結了對RNN模型做了總結。由於RNN也有梯度消失的問題,因此很難處理長序列的資料,大牛們對RNN做了改進,得到了RNN的特例LSTM(Long Short-Term Memory),它可以避免常規RNN的梯度消失,因此在工業界得到了廣泛的應用。

神經網路和 BP 演算法詳解 --- 之 DNN

前向神經網路和 BP 演算法詳解 一、神經網路的概念詳解 1.1、人工神經網路的基礎單元 — > 感知機 1.1.1、感知機模型講解 首先我們需要明確一點就是,針對於擁有核函式的 SVM 或者多隱層 + 啟用函式的多層神

乾貨 | 深度學習之卷積神經網路(CNN)的傳播演算法詳解

微信公眾號 關鍵字全網搜尋最新排名 【機器學習演算法】:排名第一 【機器學習】:排名第一 【Python】:排名第三 【演算法】:排名第四 前言 在(乾貨 | 深度學習之卷積神經網路(CNN)的模型結構)中,我們對CNN的模型結構做了總結,這裡我們就在CNN的模型基礎上,看看CNN的前向傳播演算法是什麼樣

提升方法:分步演算法與提升樹

這篇內容為《統計學習方法》的學習筆記,也看過其他書和培訓班的視訊ppt等,但是感覺都是離不開《統計學習方法》這本書,還是這本書讀起來乾淨利落(雖然有很少的地方有點暈)。 接下來首先介紹加法模型和前向分步演算法,接著介紹提升樹,最後補充梯度提升方法。 1、加法模型和前向分步演算法

深度神經網路(DNN)模型與傳播演算法

    深度神經網路(Deep Neural Networks, 以下簡稱DNN)是深度學習的基礎,而要理解DNN,首先我們要理解DNN模型,下面我們就對DNN的模型與前向傳播演算法做一個總結。 1. 從感知機到神經網路     在感知機原理小結中,我們介紹過感知機的模型,它是一個有若干輸入和一個輸出的模型,

-後演算法例項

已知HMM模型引數:轉移概率矩陣A:0.50.20.30.30.50.20.20.30.5混淆矩陣B:0.50.50.40.60.70.3初始概率:π=(0.2 , 0.4 , 0.4)求解:三次取球顏色為(紅、白、紅)的概率P(O|λ)提示:盒子相當於三種隱狀態,兩種顏色的

隱馬爾科夫模型(HMMs)之五:維特比演算法演算法

維特比演算法(Viterbi Algorithm) 找到可能性最大的隱藏序列 通常我們都有一個特定的HMM,然後根據一個可觀察序列去找到最可能生成這個可觀察序列的隱藏序列。 1.窮舉搜尋 我們可以在下圖中看到每個狀態和觀察的關係。 通過計算所有可能的隱藏序列的概率,