(Markov Random Field)馬爾科夫隨機場,本質上是一種機率無向圖模型 node
下面從機率圖模型提及,主要參考PR&ML 第八章 Graphical Model (圖模型) 算法
定義:A graph comprises nodes (also called vertices) connected by links (also known as edges or arcs ). express
In a probilistic graphical model each node represents a random variable or group of random variables ,and th links express probabilistic relationships between these variables. 網絡
分類:機率圖模型大致分爲兩種,第一種是有向圖,又叫貝葉斯網絡,連接節點之間的邊是有方向的,用來描述變量之間的因果關係(左側);另外一種是無向圖,又叫馬爾科夫隨機場,邊是沒有方向的,用來描述變量之間的軟約束(右側)。 less
1.Bayesian network dom
用機率圖表示聯合機率分佈密度 函數
起點對應條件變量,如p(c|a,b)就會有兩個起點一個終點。略微複雜一點以下圖: ui
因爲變量之間若是採用全鏈接會使得參數個數隨着變量個數成冪次增長。因此書中討論了幾種在設計貝葉斯網絡時減小模型參數的方法,第一種是獨立性假設,即根據實際問題對某些變量提出獨立性假設以減小連接邊數;第二種是採用鏈式鏈接,即每一個節點只有一個子節點一個父節點;第三種是權值共享,相似於cnn中底層的作法。 spa
2 condition independence條件獨立 設計
定義式:
下面來討論如何經過圖結構直接判斷變量之間的條件獨立性
三個例子,一段總結
例一:結點c被稱爲關於(從a通過c到達b)這個路徑的"尾到尾"(tail-to-tail)鏈接,由於結點與兩個箭頭的尾部相連
注意圖中c是可觀測變量
記做
例二:結點c被稱爲關於從結點a到結點b的路徑"頭到尾"(head-to-tail)。
例三:結點c關於從a到b的路徑是"頭到頭"(head-to-head),由於它鏈接了兩個箭頭的頭。
注意這裏當c爲觀測條件時不能獲得的形式,因此
一個總結:In summary ,a tail-to-tail node or a head-to-tail node leaves a path unblocked unless it is observed in which case it blocks the path .By contrast, a head-to-head node blocks a path if it is unobserved ,but once the node ,and /or at least one of its descendants ,is observed the path becomes unblocked .參考譯文(總而言之,TT結點或者HT結點造成的路徑無堵,除非該結點被觀察到(這會堵住路徑)。相反,HH結點在沒被觀察到時會堵住路徑,不過一旦該結點或其至少一個子結點被觀察到的話,路徑又變成無堵的了~)
一個小概念 D-separation:這個D-separaton的目的是經過有向無環圖尋找一個特定的條件依賴表述 。針對節點(變量)集合,若是全部從A通過C到達B的路徑都被阻隔,那麼咱們說C把A從B中d-separation.即
3.Markov Random Fields
一個馬爾科夫隨機場(Markov random field),也被稱爲馬爾科夫網絡(Markov network)或者無向圖模型(undirected graphical model)(Kindermann and Snell, 1980),包含一組結點,每一個結點都對應着一個變量或一組變量。連接是無向的,即不含有箭頭。
這裏一樣來討論他的獨立性,集合A到集合B的全部路徑都經過集合C中的一個或多個節點,那麼全部這樣的路徑都被阻隔,所以或者說,除掉集合C以後A,B就沒有鏈接路徑了。
注意,只要有一條路徑沒有經過C,那麼這種性質就不存在。
定義團塊(clique):對這個團塊的全部子集的節點都是全鏈接的。
那麼整個圖的聯合分佈由各個團塊組成,
這裏爲每個團塊定義了一個勢函數,注意若是這個無向圖不是由有向圖轉化而來,那麼這裏的勢函數能夠不知足機率性質。可是,因爲p(x)要知足機率性質,因此勢函數仍是要大於零的。Z是歸一化因子。一般取這個分佈叫作Boltzmann distribution(有時間要查查他的性質)。而這裏最大的優點就是勢函數能夠經過選取而具備必定的實際意義,至關於一種類似度的度量,因此爲算法的設計增長了靈活性。
例子:圖像去噪
這個例子能夠有不少更好的方法實現,這裏只是爲了說明勢函數的用法而已。
給一幅二值圖像加入噪聲,加入噪聲以後的圖像是咱們的觀測值Y,而實際圖像是隱變量X,如今咱們就要經過Y推斷X,
因爲噪聲等級比較小,所以咱們知道xi和yi之間有着強烈的相關性。咱們還知道圖像中相鄰像素xi和xj的相關性很強。這種先驗知識可使用馬爾科夫隨機場模型進行描述,它的無向圖以下:
勢函數定義爲:
這裏只有兩種團塊,第一種是xi和yi,第二種是xi和相鄰的xj。咱們分別給以不一樣係數用來調節其在勢函數中的權重,因爲最後的機率計算要取最大,因此這裏等價於取
最小。
具體代碼以下:
%實現PRML P387 例子:使用mrf降噪 %輸入一個二值圖像並加入噪聲 close all; clear all; I=imread('Penguins.jpg'); I1=im2bw(I); subplot(2,2,1) imshow(I1); title('原圖像'); J = imnoise(I,'salt & pepper', 0.2); J1=im2bw(J); subplot(2,2,2) imshow(J1); title('噪聲圖') Y=ones(size(J1)); Y(J1==0)=-1; [m,n]=size(Y); X=Y;h=0;beta=3.5;eta=.1; while 1 tot=0 for i=2:1:m-1 for j=2:1:n-1 temp=X(i,j); X(i,j)=-1;%根據定義計算勢函數 E1=h*X(i,j)-beta*X(i,j)*(X(i-1,j)+X(i+1,j)+X(i,j-1)+X(i,j+1))-eta*X(i,j)*Y(i,j); X(i,j)=1; E2=h*X(i,j)-beta*X(i,j)*(X(i-1,j)+X(i+1,j)+X(i,j-1)+X(i,j+1))-eta*X(i,j)*Y(i,j); if E1<E2 X(i,j)=-1; else X(i,j)=1; end if temp~=X(i,j) tot=tot+1; end end end if tot<1 break; end end J2=X; J2(X==-1)=0; subplot(2,2,3) imshow(J2); title('mrf降噪結果')
結果以下: