日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理...

發布時間:2023/12/19 循环神经网络 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基於matlab的貝葉斯網絡工具箱BNT是kevin p.murphy基於matlab語言開發的關於貝葉斯網絡學習的開源軟件包,提供了許多貝葉斯網絡學習的底層基礎函數庫,支持多種類型的節點(概率分布)、精確推理和近似推理、參數學習及結構學習、靜態模型和動態模型。

貝葉斯網絡表示:BNT中使用矩陣方式表示貝葉斯網絡,即若節點i到j有一條弧,則對應矩陣中(i,j)值為1,否則為0。

上圖是一個草地潮濕原因模型。我們使用matlab畫出建立好的貝葉斯網絡,可以求出單個節點后驗概率和多個節點后驗概率。

matlab程序如下:

第一步,建立貝葉斯網絡,使用matlab得到上述網絡結構。

%建立貝葉斯網絡結構

N = 4; %四個節點 分別是cloudy,sprinkler,rain,wetgrass

dag = zeros(N,N);

C = 1; S = 2; R = 3; W = 4;

dag(C,[R S]) = 1; %節點之間的連接關系

dag(R,W) = 1;

dag(S,W) = 1;

discrete_nodes = 1:N; %離散節點

node_sizes = 2*ones(1,N);%節點狀態數

bnet =mk_bnet(dag,node_sizes,'names',{'cloudy','sprinkler','rain','wetgrass'},'discrete',discrete_nodes);

bnet.CPD{C} = tabular_CPD(bnet,C,[0.5 0.5]);

bnet.CPD{R} = tabular_CPD(bnet,R,[0.8 0.2 0.2 0.8]);

bnet.CPD{S} = tabular_CPD(bnet,S,[0.5 0.9 0.5 0.1]);

bnet.CPD{W} = tabular_CPD(bnet,W,[1 0.1 0.1 0.01 0 0.9 0.9 0.99]);

%畫出建立好的貝葉斯網絡

figure

draw_graph(dag)

我們可以對貝葉斯網絡進行推斷。我們使用聯合樹引擎,它是所有精確推斷引擎的根本。它可以按如下步驟調用:

engine = jtree_inf_engine(bnet);

接下來求解邊緣分布假設我們要計算灑水器導致草地是濕潤的概率。

證據的構成是W=2,enter_evidenc 執行一個雙通道的信息傳遞模式。第一次返回的變量包括修正的結合著證據的引擎,第二次返回的變量包括證據的對數似然。

按如下方式計算p=P(S=2|W=2):

matlab程序如下:

evidence = cell(1,N);

evidence{W} = 2;

[engine, loglik] = enter_evidence(engine, evidence);

marg = marginal_nodes(engine, S);

marg.T

p = marg.T(2);

得到的結果為:

ans =

0.5702

0.4298

我們可以看到 p = 0.4298

現在我們添加下雨的證據並觀察它有什么不同。

matlab程序如下:

evidence{R} = 2;

[engine, loglik] = enter_evidence(engine, evidence);

marg = marginal_nodes(engine, S);

marg.T

p = marg.T(2);

ans =

0.8055

0.1945

得到的結果為:

p = P(S=2|W=2,R=2) = 0.1945,

它比上面的更低,說明下雨能解釋草地是濕的這個事實。

一個可觀察節點的邊緣分布,比如P(W|W=2)。一個可觀察的離散節點實際上只有一個值(能觀察到的那個)——所有其它的值將導致概率0。

matlab程序如下:

evidence = cell(1,N);

evidence{W} = 2;

engine = enter_evidence(engine, evidence);

m = marginal_nodes(engine, W);

m.T

結果

ans =

1.0000

如果我用以下程序:

m = marginal_nodes(engine, W, 1);

m.T

ans =

0

1.0000

這可以看出 P(W=1|W=2) = 0和P(W=2|W=2) = 1.

以按下面的例子在一組節點上計算聯合概率。

evidence = cell(1,N);

[engine, ll] = enter_evidence(engine, evidence);

m = marginal_nodes(engine, [S R W]);

m.T

m是一個結構. 'T'是一個包含著指定節點聯合概率分布的多維數組。(在這個例子中是三維數組)

ans(:,:,1) =

0.2900 ? ?0.0410

0.0210 ? ?0.0009

ans(:,:,2) =

0 ? ?0.3690

0.1890 ? ?0.0891

我們可以看到P(S=1,R=1,W=2) = 0, 在下雨和灑水器條件都為否的情況下,草不可能是濕的。

現在我們再次添加下雨的證據並觀察它有什么不同。

evidence{R} = 2;

[engine, ll] = enter_evidence(engine, evidence);

m = marginal_nodes(engine, [S R W])

m.T

m =

domain: [2 3 4]

T: [2x1x2 double]

mu: []

Sigma: []

ans(:,:,1) =

0.0820

0.0018

ans(:,:,2) =

0.7380

0.1782

因為R=1和R=0是不能同時成立的,所以T(i,j,k)=P(S=i,R=j,W=k|evidence)對於任意的i,k都有T(i,1,k)=0。

BNT建立了有效的離散節點大小(例子中為2*1*2)而不是有許多0的龐大的表格。

如果要得到2*2*2的表格,用以下方法。

m = marginal_nodes(engine, [S R W], 1)

m.T

m =

domain: [2 3 4]

T: [2x2x2 double]

mu: []

sigma: []

ans(:,:,1) =

0 ? ?0.0820

0 ? ?0.0018

ans(:,:,2) =

0 ? ?0.7380

0 ? ?0.1782

需要注意的是,聯合概率並不是總能計算出來,這取決於使用的是哪種推理引擎。

總結

以上是生活随笔為你收集整理的matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。