引言python
機器學習中的許多常見問題是彼此獨立數據點的分類。例如,給定圖像,預測它是包含貓仍是狗,或者給出手寫字符的圖像,預測它是0到9中的哪一個數字。然而,事實證實,許多問題不適合上述框架。例如,給定一個句子「我喜歡機器學習」,用它的詞性(名詞,代詞,動詞,形容詞等)標記每一個單詞,這個任務沒法經過獨立處理每一個單詞來解決 ,因爲「學習」能夠是名詞或動詞。對於更復雜的文本處理,例如從一種語言翻譯成另外一種語言,文本翻譯等,這項任務更重要。git
如何使用標準分類模型來處理這些問題是一個挑戰。一個用於此類問題的強大框架是機率圖形模型(probabilistic graphical models ,PGM)。在本文中,我將介紹該框架的一些基本內容。github
在討論如何將機率圖模型應用於機器學習問題以前,咱們須要瞭解PGM框架。 機率圖模型(或簡稱圖模型)由圖形結構組成, 圖的每一個節點與隨機變量相關聯,而且圖中的邊用於解釋隨機變量之間的關係。算法
根據圖形是有向仍是無向,咱們能夠將圖形模式分爲兩類 :編程
貝葉斯網絡:定向圖形模型網絡
貝葉斯網絡的典型例子是所謂的「學生網絡」,它看起來像這樣:app
此圖表描述了在大學課程中註冊的學生的設置。 圖中有5個隨機變量:框架
Difficulty (課程的難度): 取值0(低難度)和1(高難度)
Intelligence(智力水平): 取值0(低)和1(高)
Grade(學生的上課成績) : 取值1(好成績),2(平均成績)和3(成績差)
SAT (SAT考試成績): 取0(低分)和1(高分)
Letter(完成課程後學生從教授那裏獲得推薦信的質量) : 取0(不是好信)和1(好信)
圖中的邊包含變量的依賴關係。學生的「成績」取決於課程的「難度」和學生的「智力」。反過來,「成績」決定了學生是否從教授那裏獲得了一封好的推薦信。此外,除了影響「成績」以外,學生的「智力」還影響他們的「SAT」分數。值得注意的是,箭頭的方向告訴咱們因果關係 :「智力」影響「SAT」分數,但「SAT」分數不影響「智力」。機器學習
最後,咱們能夠看到每一個節點關聯的表,這些被稱爲條件機率分佈(conditional probability distributions ,CPD)。函數
條件機率分佈(CPD)
「Difficulty」和「Intelligence」的CPD至關簡單,由於這些變量不依賴於任何其餘變量。 這些表給出了變量的機率,取值0或1。 能夠注意到,每一個表中的值必須總和爲1。
對於「SAT」的CPD,每行對應於其父節點(「 Intelligence」)可能的取值,每列對應於「SAT」能夠採用的值。 每一個單元格具備條件機率$p(SAT = s | Intelligence = i)$,也就是說,假設「Intelligence」的值是$i$,「SAT」的值是$s$的機率是多少。例如,咱們能夠看到$p(SAT =s^1| Intelligence =i^1)$是0.8,也就是說,若是學生的智力很高,那麼SAT得分高的機率也是0.8。 另外一方面,$p(SAT =s^0| Intelligence =i^1)$,若是學生的智力高,則SAT得分低的機率爲0.2。
每行中值的總和爲1.這是有道理的,由於鑑於Intelligence =i¹,SAT分數能夠是s⁰或s¹,所以兩個機率必須加起來爲1.一樣,「Letter」的CPD 條件機率$p(Letter = l | Grade = g)$。 由於「等級」能夠取三個值,因此咱們在此表中有三行。
根據上述知識,「Grade」的CPD易於理解。 由於它有兩個父節點,條件機率將是p的形式$p(Grade=g | Difficulty=d, SAT=s)$,也就是說,在「Difficulty」的值爲 「g'和」SAT「的值爲「s」的條件下,「Grade」爲g的機率是多少。
貝葉斯網絡的基本要求是圖必須是有向無環圖(directed acyclic graph,DAG)。
馬爾可夫網絡:無向圖形模型
爲了簡潔起見,咱們直接看抽象圖,邊表示變量之間的相互做用。 咱們看到,雖然A和B直接相互影響,但A和C沒有。
潛在的函數
就像咱們有貝葉斯網絡的CPD同樣,咱們也用表格來整合馬爾可夫網絡中節點之間的關係。 可是,這些表格和CPD之間存在兩個重要差別。
首先,這些值不須要總和爲1,也就是說,表並無定義機率分佈,它只告訴咱們具備某些值的可能。 其次,沒有條件。 它與相關的變量的聯合分佈成比例,而不是CPD中的條件分佈。
結果表稱爲「因子」或「潛在函數」,並使用希臘符號φ表示。 例如,咱們可使用如下函數來捕獲三個變量A,B和C之間的關係,若是A和B是不一樣的,則C可能爲1 ,若是A和B相同,則C可能爲0:
一般,咱們爲圖中的每一個最大團定義一個潛在的函數。
圖形結構和表格表達了隨機變量上的聯合機率分佈。
咱們可能遇到的一個問題是,爲何咱們須要有向圖和無向圖?緣由在於,對於某些問題,將它們表示爲有向圖更爲天然,例如上面的學生網絡,其中很容易描述變量之間的因果關係 :學生的智力影響SAT分數,可是SAT分數不會影響學生的智力。
對於其餘類型的問題,好比圖像,咱們但願將每一個像素表示爲一個節點,而且咱們知道相鄰像素相互影響,但像素之間沒有因果關係;相反,它們多是對稱的。所以,在這種狀況下,咱們使用無向圖形模型。
問題
到目前爲止,咱們一直在討論圖形和隨機變量和表格,你可能會想到這一切的重點是什麼?咱們究竟想作什麼?機器學習在哪裏 - 數據,培訓,預測等?本節將解決這些問題。
讓咱們回到學生網絡。假設咱們有圖形結構,咱們能夠根據咱們對世界的瞭解建立圖形結構(在機器學習中稱爲「領域知識」)。但咱們沒有CPD表,只有它們的大小。咱們確實有一些數據 :對於大學裏的十個不一樣的班級,咱們能夠衡量他們的難度。
此外,咱們有關於每一個課程中每一個學生的數據 - 他們的智力,他們的SAT成績是什麼,他們獲得什麼成績,以及他們是否收到了教授的好信。根據這些數據,咱們能夠估算CPD的參數。例如,數據可能代表智力較高的學生一般會得到良好的SAT成績,咱們也許能夠從中學習$p(SAT = s^1 | Intelligence = i^1)$很高。這是學習階段。咱們很快就會看到咱們如何在貝葉斯網絡和馬爾可夫網絡中進行這種參數估計。
如今,對於新數據點,您將觀察到一些變量,這些變量並非完整的。例如,在下圖中,你將瞭解課程的難度和學生的SAT分數,而且您想要估計學生得到好成績的機率。
雖然咱們沒有直接向咱們提供該信息的CPD,但咱們能夠看到學生的高SAT分數代表該學生多是聰明的,所以,若是難度較高,則成績良好的機率很高。該過程很低,如上圖中的紅色箭頭所示。咱們可能還想同時估計多個變量的機率,好比學生得到好成績的機率和好的信件是什麼?
具備已知值的變量稱爲「觀察變量」,而未觀察到值的變量稱爲「隱藏變量」或「潛在變量」。傳統上,觀察變量用灰色節點表示,而潛在變量用白色節點表示,如上面的圖像。咱們可能有興趣找到一些或全部潛在變量的值。
回答這些問題相似於機器學習的其餘領域的預測 - 在圖形模型中,這個過程被稱爲「推理」。
雖然咱們使用貝葉斯網絡來描述上面的術語,但它也適用於馬爾可夫網絡。在咱們進入學習和推理算法以前,讓咱們將咱們剛纔看到的想法形式化 - 給定一些節點的價值,咱們能夠得到其餘節點的信息?
條件獨立
到目前爲止,咱們一直在討論的圖形結構實際上捕獲了有關變量的重要信息。具體來講,它們定義了變量之間的一組條件獨立性,即形式的語句 - 「若是觀察到A,則B獨立於C」。讓咱們看一些例子。
在學生網絡中,假設知道學生的SAT成績很高。你對她的成績有什麼見解?正如咱們以前看到的那樣,SAT分數高代表學生是聰明的,所以,你會指望學生取得一個好成績。若是學生的SAT成績低,該怎麼辦?在這種狀況下,你不會指望學生取得一個好成績。
如今,除了她的SAT成績外,你還知道學生很聰明。若是SAT成績很高,那麼你會指望得分很高。若是SAT成績很低怎麼辦?你仍然指望一個好成績,由於你知道學生是聰明的,你會認爲她只是在SAT上表現不佳。所以,若是咱們看到學生的智力,知道SAT分數並不能告訴咱們什麼。把這做爲一個有條件的獨立聲明,咱們會說 - 「若是觀察到智力,那麼SAT和成績是獨立的。」
咱們從圖中這些節點鏈接的方式得到了這種條件獨立信息。若是它們的鏈接方式不一樣,咱們會獲得不一樣的條件獨立信息。
讓咱們看另外一個例子。
若是你知道這個學生很聰明。你對這門課程的難度有什麼見解?簡單,對吧?如今,若是我告訴你學生在課程上成績很差你會怎麼想?這代表課程很難,由於聰明的學生成績都變現的很差。所以,咱們能夠給出咱們的條件獨立聲明以下 - 「若是未觀察到等級,那麼智力和難度是獨立的。」
由於這說明了受條件約束的兩個節點之間的獨立性,因此它們被稱爲條件獨立性。請注意,這兩個示例具備相反的語義 :
這種差別是由於節點的鏈接方式,即箭頭的方向。
在馬爾可夫網絡中,咱們可使用相似的方法,但因爲沒有方向邊(箭頭),條件獨立語句相對簡單 - 若是節點A和B之間沒有路徑,那麼路徑上的全部節點都是未被觀察到的,而後A和B是獨立的。換句話說,若是存在從A到B的至少一條路徑,其中全部中間節點都未被觀察到,則A和B不是獨立的。
貝葉斯網絡的應用:Monty Hall Problem
主人向你展現了三扇關閉的門,其中一扇門後面有一輛車,而其餘門後面則是羊。 你能夠選擇一扇門。 而後,主機打開剩餘的一扇門,並顯示它不是汽車。 如今,你能夠選擇將門從最初選擇的門切換到主機未打開的門。 你換了嗎?
主持人彷佛沒有透露任何信息,你或許會認爲換與不換的贏得車的機率都是$1/2$,然而, 事實證實,這種直覺並不徹底正確。 讓咱們使用 圖模型來理解這一點。
讓咱們從定義一些變量開始:
D,F和H取值1,2或3,I取0或1.D和I是未觀察到的,F是能夠觀察到的. 在主持人打開其中一扇門以前,H是未被觀察到的。 所以,咱們爲咱們的問題得到如下貝葉斯網絡:
注意箭頭的方向:D和F是獨立的,主持人選擇的門H也取決於D和F.到目前爲止,你對D一無所知。(這是 相似於學生網絡中的結構,在那裏瞭解學生的智慧並無告訴你關於課程難度的任何信息。)
如今,主人拿起一扇門H並打開它。 因此,如今觀察到H.
觀察H並無告訴咱們關於個人任何事情,也不肯定咱們是否選擇了正確的門。 可是,它確實告訴咱們一些關於D的事情! (再次,與學生網絡類比,若是你知道學生是聰明的,而且成績很低,它會告訴你關於課程難度的一些信息。)
讓咱們用數字來看。 變量的CPD表以下(這是在沒有觀察到變量的狀況下)。
D和F的表格很簡單 :咱們以相同的機率選擇其中一扇門。
I表格:當D和F相同時I = 1,而當D和F不一樣時I = 0。
H的表格:若是D和F相等,則主持人以相同的機率從其餘兩個門中選擇一個門,而若是D和F不一樣,則主持人選擇第三個門。
如今,讓咱們假設咱們選擇了一扇門,即如今觀察到F,好比說F = 1。 給定F,I和D的條件機率是多少?
咱們能夠獲得:
到目前爲止,咱們選擇正確門的可能性是$1/3$。
如今,主人打開除F以外的其中一扇門,因此咱們觀察H.假設H = 2。 讓咱們計算給定F和H的I和D的新條件機率。
機率分佈:
所以,當咱們一無所知 : 咱們的第一選擇仍然是正確的機率$1/3$,這就是咱們的直覺告訴咱們的。 可是,咱們如今知道汽車在門3後面的機率爲2/3,而不是1/3。
所以,若是咱們切換,咱們獲得的車機率爲2/3; 若是咱們不這樣作,咱們會以機率1/3得到汽車。
咱們能夠在不使用圖形模型的狀況下獲得相同的答案,但圖形模型爲咱們提供了一個能夠很好地擴展到更大問題的框架。
小結
至此,咱們研究了圖模型中的一些基本術語,包括貝葉斯網絡,馬爾可夫網絡,條件機率分佈,潛在函數和條件獨立性。 咱們還研究了Monty Hall問題的圖模型應用。
下邊,我將介紹參數估計和推理,並給出另外一個應用案例。
參數估計
貝葉斯網絡
估計貝葉斯網絡的CPD表中的數字僅等於計算該事件在咱們的訓練數據中發生的次數。也就是說,爲了估計$p(SAT = s^1 | Intelligence = i^1)$,咱們只計算$SAT = s^1$和$Intelligence = i^1$的數據點的機率,這些點是離散的,很容易計算。
馬爾可夫網絡
遺憾的是,對於馬爾可夫網絡,上述計數方法沒有統計學證實(所以會致使次優參數)。所以,咱們須要使用更復雜的技術。大多數技術背後的基本思想是梯度降低 :咱們定義描述機率分佈的參數,而後使用梯度降低來找到這些參數的值,以最大化觀測數據的可能性。
最後,既然咱們有模型的參數,咱們想在新數據上使用它們來進行推理與驗證!
推理
機率圖模型中的大部分文獻都側重於推理。 緣由有兩方面:
咱們能夠經過推理解決幾個問題:
在下文中,我將介紹一些用於回答這些問題的流行算法,包括精確算法和近似算法。 全部這些算法都適用於貝葉斯網絡和馬爾可夫網絡。
變量消除
使用條件機率的定義,咱們能夠將後驗分佈寫爲:
讓咱們看看如何使用一個簡單的例子來計算上面的分子和分母。 考慮具備三個變量的網絡,聯合分佈定義以下:
假設咱們想要計算$p(A | B = 1)$,這意味着咱們想要計算$p(A = 0 | B = 1)$和$p(A = 1 | B = 1)$的值,它們應該總和爲1。 使用上面的等式,咱們能夠寫成:
分子是$A = 0$和$B = 1$的機率。咱們不關心C的值。因此咱們將C的全部值相加,因爲 $p(A = 0,B) = 1,C = 0)$和$p(A = 0,B = 1,C = 1)$是相互排斥的事件,所以它們的並集$p(A = 0,B = 1)$只是各個機率的總和。
咱們添加第3行和第4行來獲得$p(A = 0,B = 1)= 0.15$。相似地,添加行7和8給出$p(A = 1,B = 1)= 0.40$。此外,咱們能夠經過對包含$B = 14$的全部行(即,行3,4,7和8)求和來計算分母,以獲得$p(B = 1)= 0.55$。咱們能夠計算:
$$p(A = 0 | B = 1)= 0.15 / 0.55 = 0.27$$
$$p(A = 1 | B = 1)= 0.40 / 0.55 = 0.73$$
若是你仔細研究上面的計算,你會注意到咱們作了一些重複的計算 - 添加第3和第4行,以及第7和第8行兩次。計算$p(B = 1)$的更有效方法是簡單地計算$p(A = 0,B = 1)$和$p(A = 1,B = 1)$。這是變量消除的基本思想。
一般,當你有不少變量時,你不只可使用分子的值來計算分母,並且若是仔細觀察,分子自己將包含重複的計算。您可使用動態編程來有效地使用預先計算的值。
咱們一次對一個變量求和,從而消除它,因此求出多個變量的過程至關於一次一個地消除這些變量。所以,名稱「變量消除」。
擴展上述過程以解決邊際推斷或MAP推理問題也很簡單。相似地,很容易歸納上述想法以將其應用於馬爾可夫網絡。
變量消除的時間複雜度取決於圖形結構以及消除變量的順序。在最壞的狀況下,它時間複雜度呈指數遞增。
信仰傳播
咱們剛剛看到的VE算法只給出了一個最終分佈。 假設咱們想要找到全部變量的邊際分佈。 咱們能夠作更聰明的事情,而不是屢次運行變量消除。
假設你有一個圖形結構。 要計算邊際,須要將聯合分佈與全部其餘變量相加,這至關於彙總整個圖形中的信息。 這是從整個圖中聚合信息的另外一種方法 - 每一個節點查看其鄰居,並在本地近似變量的分佈。
而後,每對相鄰節點彼此發送「消息」,其中消息包含本地分佈。 如今,每一個節點查看它接收的消息,並聚合它們以更新其變量的機率分佈。
在上圖中,C聚合來自其鄰居A和B的信息,並向D發送消息。而後,D將此消息與來自E和F的信息聚合在一塊兒。
這種方法的優勢是,若是保存在每一個節點上發送的消息,則消息的一個正向傳遞和一個反向傳遞將爲全部節點提供有關全部其餘節點的信息。
若是圖形不包含循環,則此過程在前向和後向傳遞以後收斂。若是圖形包含循環,則此過程可能會或可能不會收斂,但它一般可用於得到近似答案。
近似推斷
因爲精確推斷對於大型圖形模型而言可能很是耗時,所以已經爲圖形模型開發了許多近似推理算法,其中大多數算法屬於如下兩類之一:
抽樣方法
這些算法使用抽樣估計機率。舉一個簡單的例子,考慮如下狀況 - 給出一個硬幣,你如何肯定擲硬幣時得到頭部的機率?最簡單的事情就是將硬幣翻轉100次,而後找出你獲得頭部的投擲比例。
這是一種基於抽樣的算法來估計頭部的機率。對於機率圖形模型中的更復雜問題,可使用相似的過程。基於採樣的算法能夠進一步分爲兩類。在第一個中,樣本彼此獨立,如上面的硬幣投擲示例中所示。這些算法稱爲蒙特卡羅方法。
對於許多變量的問題,生成高質量的獨立樣本很困難,所以,咱們生成相關樣本,即每一個新樣本是隨機的,但接近最後一個樣本。這種算法稱爲馬爾可夫鏈蒙特卡羅(MCMC)方法,由於樣本造成「馬爾可夫鏈」。一旦咱們有樣本,咱們能夠用它們來回答各類推理問題
變分方法
變分方法不是使用採樣,而是嘗試分析地近似所需的分佈。 假設你寫出用於計算利息分佈的表達式 - 邊際機率分佈或後驗機率分佈。
一般,這些表達式中的積分在計算上很難準確評估。 近似這些表達式的一種好方法是求解替表明達式,並以某種方式確保此替換表達式接近原始表達式。 這是變分方法背後的基本思想。
當咱們嘗試估計複雜機率分佈p_complex時,咱們定義一組單獨的機率分佈P_simple,它們更容易使用,而後從P_simple中找到最接近p_complex的機率分佈p_approx。
應用:圖像去噪
假設你有如下圖片:
如今假設它被隨機噪聲破壞了,因此你的嘈雜圖像看起來以下:
目標是去除圖像噪聲。讓咱們看看咱們如何使用機率圖模型來作到這一點。
第一步是考慮咱們觀察到的和未觀察到的變量是什麼,以及咱們如何將它們鏈接起來造成圖形。讓咱們將噪聲圖像中的每一個像素定義爲觀察到的隨機變量,並將實況圖像中的每一個像素定義爲未觀察到的變量。所以,若是圖像是M×N,則存在MN個觀測變量和MN個未觀測變量。讓咱們將觀察到的變量表示爲$X_{ij}$,將未觀察到的變量表示爲$Y_{ij}$。每一個變量取值+1和-1(分別對應於黑色和白色像素)。給定觀察到的變量,咱們但願找到未觀察到的變量的最可能值。這對應於MAP推斷。
如今,讓咱們使用一些領域知識來構建圖結構。顯然,噪聲圖像中位置$(i,j)$處的觀測變量取決於實際圖像中位置$(i,j)$處的未觀測變量。這是由於大部分時間它們是相同的。
對於原始圖像,相鄰像素一般具備相同的值 -在顏色變化的邊界處不是這樣的,但在單色區域內,此屬性成立。所以,若是它們是相鄰像素,咱們鏈接$Y_{ij}$和$Y_{kl}$。
所以,咱們的圖形結構以下所示:
白色節點表示未觀測到的變量$Y_{ij}$,灰色節點表示觀測變量$X_{ij}$。 每一個$X_{ij}$鏈接到相應的$Y_{ij}$,每一個$Y_{ij}$鏈接到它的臨近節點。
這是馬爾可夫網絡,由於圖像的像素之間沒有因果關係,所以,在這裏定義貝葉斯網絡中的箭頭方向是不合適的。
咱們的MAP推理問題能夠用數學方法,以下:
咱們使用了一些在最大對數似然計算中常見的標準簡化技術。 咱們將使用X和Y(沒有下標)分別表示全部$X_{ij}$和$Y_{ij}$值的集合。
如今,咱們須要根據圖形結構定義聯合分佈$P(X,Y)$。 假設$P(X,Y)$由兩種因子組成:$\phi(X_{ij},Y_{ij})$和$\phi(Y_{ij},Y_{kl})$,對應於圖中的兩種邊。 接下來,咱們定義以下因素:
$\phi(X_{ij},Y_{ij})= exp({w_e* X_{ij} ,Y_{ij})$,其中$w_e$是大於零的參數。
當$X_{ij}$和$Y_{ij}$相同時,該因子取大值,當$X_{ij}$和$Y_{ij}$不一樣時取小值。
$\phi(Y_{ij},Y_{kl})= exp(w_s*Y_{ij} ,Y_{kl})$,其中$w_s$是大於零的參數,如前所述。該因子有利於$Y_{ij}$和$Y_{kl}$的相同值。
所以,咱們的聯合分發由下式給出:
其中第二乘積中的$(i,j)$和$(k,l)$是相鄰像素,Z是歸一化常數。
將其代入咱們的MAP推理方程給出:
使用參數估計技術從地面實況和噪聲圖像對得到w_e$和$w_s$的值。這個過程在數學上是至關複雜的,所以,咱們不會在這裏深刻研究它。咱們假設咱們已經得到了如下這些參數的值 :$ w_e = 8$和$w_s = 10$。
這個例子的主要焦點是推理。鑑於這些參數,咱們想要解決上面的MAP推理問題。咱們可使用置信傳播的變體來作到這一點,但事實證實,對於具備這種特定結構的圖,有一種更簡單的算法稱爲迭代條件模式(ICM)。
基本思想是在每一步中,選擇一個節點$Y_{ij}$,查看$Y_{ij} = -1$和$Y_{ij} = 1$的MAP推理表達式的值,並選擇具備更高值的節點。重複此過程必定數量的迭代或直到收斂一般合理地工做。
去除以後的圖像:
固然,你能夠在圖形模型和外部使用更多花哨的技術來生成更好的東西,可是從這個例子中能夠看出,帶有簡單推理算法的簡單馬爾可夫網絡已經爲你提供了至關不錯的結果。python代碼
總結:
咱們研究了機率圖模型中的一些核心思想。圖模型提供了一種可解釋的方式來模擬許多真實世界的任務,其中存在依賴關係。使用圖形模型爲咱們提供了一種以原則方式處理此類任務的方法。