Deep learning chapter16
深度學習引用了很多能指導研究者更好地設計和描述他們的算法的建模機制( Deep Learning draws upon many modelling formalisms that researchers can use to guide their design effects and describe their algorithms)。比如 結構化概率模型。結構化概率模型是很多前沿深度學習領域的一個重要組成部分。這一章會具體地介紹結構化概率模型,而且這一章是自我包含的,讀者不需要閱讀前面地章節也能讀懂這一章。
結構化概率模型是一種描述概率分布的方式,它使用圖來表示變量之間的關系,由于模型通常使用圖來表示的,因此也被稱為圖模型。
圖模型研究領域非常龐大,而且已經發展出了很多的模型,訓練算法和推理算法(inference algorithm)。我們在本章將會介紹一些圖模型的基本背景和一些核心概念,特別是一些在深度學習領域有非常大作用的概念。
在本章中,我們首先介紹構建大規模概率模型的挑戰。之后,介紹如何用圖描述概率分布的結構。雖然圖結構能幫助我們很好地構建概率模型,但它也有自身的問題。其中一個困難就是在構建圖時,如何決定變量之間是否有之間的關聯?簡單來說就是對于一個給定的問題,如果決定這個問題最優的圖結構。 16.5小節給出了如何通過學習變量之間的依賴關系構建圖結構的兩種方法。最后在16.7節中討論了深度學習中重點關注的概率圖模型方法。
16.1 無結構建模的挑戰 (The Challenge of Unstructured Modeling)
深度學習的目標是為了解決人工智能所面臨的挑戰,這意味著深度學習需要理解現實世界中多維數據中的豐富結構,比如,我們希望AI算法能理解自然圖片,能理解音頻等數據。
分類算法雖然能夠將這些豐富的數據作為輸入,之后給出一個類別標簽,但是分類算法在學習過程中丟棄了數據的豐富的結構,最后只給出了一個樣本label。概率模型可以做分類任務,但其實概率模型還可以做到更多。
一個使用自然圖片做sampling task的例子見圖16.1。
估計一個含有成千上萬個分量的隨機變量\(x\)的概率分布是非常有挑戰性的任務。假設\(x\)的分量取值只有兩種:0和1,這是最簡單的情況,但也是非常困難的(overwhelming)。對于一個32*32大小的RGB圖像,一共有2的3072次方個可能的像素組合。這個數字是當前估計的宇宙粒子數的10的800次方倍。
在一般情況下,當我們對一個含有n個分量的隨機向量x的概率分布進行建模時,假設每個分量都有k中取值,那么P(x)的最一般的表示方法是構建一個查找表(look up table),對每一個可能的\(x\)取值都有一個參數,因此一共有\(k^n\)個參數。這種方法幾乎是不可能的,因為以下幾個原因:
基于查表的方法的問題在于我們顯示地對變量的各個分量之間的關系(也就是分量的各個取值的組合)進行建模,但其實,實際中的任務通常變量與變量之間并不是直接相關的。
16.2 使用圖作為模型的結構
結構概率模型使用圖表示隨機變量之間的關系。圖中每個節點表示一個隨機變量,每一條邊表示相鄰兩個隨機變量有之間的關系。使用圖來對概率分布進行建模有很多種方法,在接下來的章節中我們介紹其中最有用的幾種方法,圖模型可以被分為兩大類:基于有向圖的模型和基于無向圖的模型。
16.2.1 有向圖模型
有向圖模型是結構概率模型的一種表示方式,也有人稱其為 置信網絡(belief network)和貝葉斯網絡(Bayesian network)。
有向圖中的邊是有方向的。箭頭的方向表示某些變量的概率分布依賴于其他變量,也可以看作是條件概率。
假設現在有一個接力比賽,有三個人,每一棒的先后順序為 Alice,Bob和Carol,假設三人結束的時刻分別為t0,t1,t2. 那么t1的值應當依賴t0,t2的值直接依賴t1,間接依賴t0,這個關系可以用如圖16.2的有向圖表示。
關于變量X的有向圖模型是定義在一個有向圖\(g\)上,每個頂點表示一個隨機變量的分量,而且局部條件概率分布為\(p(x_i|P_{g}(x_i))\),其中\(p_{g}(x_i)\)表示節點\(x_i\)的父節點。那么最終關于變量\(X\)的概率分布為:
\[ p(X) = \prod_iP(x_i|P_{g}(x_i)) \]
在接力比賽中,這個公式可以寫成:p(t0,t1,t2) = p(t0)p(t1|t0)p(t2|t1).
16.2.2 無向圖模型
有向圖模型給了我們一種方式去描述結構化的概率模型,另一種描述方式是無向圖模型,也被稱為馬爾科夫隨機場(MRF)和馬爾科夫網絡。無向圖中的邊是無向的。
有向圖的應用場景一般是我們知道變量之間的因果關系,但在現實中有時候不希望變量之間有明顯的方向,變量之間并沒有明顯的因果關系,可能是相互影響的,這時候我們還是用無向圖來建模比較合適。
無向圖的概率密度地冠以方式如下:假設無向圖表示為\(G\), \(G\)中可以分為多個集團(clique,每個集團中所有的點都兩兩連接,是一個全連接圖),集團用\(C\)表示,那么集團勢能(clique potential)\(\phi(C)\)度量了在這個集團中各個變量各種可能的聯合狀態的親和力(affinity)(measures the affinity of the variables in that clique for being in each of their possible joint states). 這個因子有一個非負的約束。無向圖中所有的集團定義了一個沒有歸一化的概率密度分布:
\[ \tilde{p}(x) = \prod_{C\in G}\phi(C) \]
只要無向圖中的集團大小較小,這個未歸一化的概率密度分布就能很好處理。從公式中可以看出,親和力大的集團的概率分布值會較大。但是與貝葉斯網絡不同的是,上式不能保證最終獲得的是一個有效地概率分布(可能不滿足積分為1的特點)。
配分函數 (The Partition Function)
雖然之前介紹的未歸一化的概率密度函數是能保證處處非負的,但是并不保證積分和為1. 為了滿足這個條件,通常需要對概率分布做歸一化:
\[ p(x) = \frac{1}{Z} \tilde{p}(x) \]
其中 \(Z = \int \tilde{p}(x)dx\)
當 函數\(\phi(\cdot)\)固定時,Z可以看作是一個常數,但當函數\(\phi(\cdot)\)包含參數時,Z也是關于這些參數的函數。但通常情況下都把Z當作一個常數看待,Z也被稱為配分函數,這是一個從統計物理中借鑒來的詞。
由于Z是由p(x)在X空間中的所有狀態值積分得到的,因此它的計算非常棘手。為了解決這個問題,通常選擇的\(\phi(\cdot)\)函數一定要有利于高效地計算出\(Z\). 在深度學習中,Z的計算是非常棘手的(intractable),由于精準地計算Z有點不可能,因此我們轉而采取近似的方法。
當我們在設計無向圖模型的時候,是可能設計出一個使得Z不存在的勢能函數\(\phi(\cdot)\)的。當模型中的變量是連續值,而且概率p(x)在X空間的積分發散,這種情況Z就不存在。比如假設x是一個標量,其對應的勢能函數為\(\phi(x) = x^2\),那么\(Z = \int x^2dx\),由于Z是一直發散的,因此在這個勢能函數下,該無向圖沒有對應的概率分布函數。
有向圖和無向圖之間最大的差別是有向圖在一開始就定義好了概率密度函數,而無向圖的概率密度函數需要先定義勢能函數\(\phi(x)\),之后再變化為概率分布。即使定義好了函數\(\phi(x)\),最后的概率分布也與\(x\)的取值范圍緊密相關。
基于能量的模型
關于無向圖模型的很多研究都基于一個假設:\(\forall x,\tilde{p}(x)\). 一種簡單的方法是采用基于能量的函數(energy-based function,EBM):
\[ \tilde{p}(x) = exp(-E(x)) \]
\(E(X)\)表示能量函數,因為指數函數非負的特點,對于所有的能量函數都不會導致概率為0,因此能量函數可以任意選取。如果不采用能量函數,而是通過學習來獲得勢函數\(\phi(x)\),那么再優化時需要添加約束條件(非零),相反地,如果直接優化能量函數,學習能量函數是一個無約束地優化問題。
任何采用上述的能量函數的概率分布都可以稱為 Boltzmann distribution, 因此,很多基于能量函數的模型都被稱為 Boltzmann machines. 關于什么樣的模型能被稱為基于能量的模型和Boltzmann machine, 并沒有廣為接的準則。 Boltzmann machine 最開始是用來對二元變量建模的,但現在很多模型都引入了實值變量。最開始Boltzmann machine 既可以指含有隱變量的模型也可以指不含隱變量的模型,但現在Boltzmann machine 通常值含有隱變量的模型,而不含隱變量的模型稱為馬爾科夫隨機場(Markov random field) 或者是 對數線性模型(log-linear models).
無向圖中的集團(clique)對應著未歸一化的概率分布函數的因子(factor)。 由于$ exp(a)exp(b) = exp(a+b)$, 無向圖中的集團對應能量函數的各個項。 換句話說,基于能量的模型是一種特殊的Markov network: 指數函數使得能量函數的每一項都對應著無向圖中不同集團的factor。圖16.5展示了如何按照能量函數的格式來理解這個無向圖。 我們可以將能量函數模型中的能量函數的各個項看作是 "product of experts", 能量函數中的每一項都可以看作是一個專家,這個專家對最終的概率分布做了一個小小的約束,最終很多項組合成一個對高維空間概率分布的約束。
基于能量的模型定義中的負號并不是從函數的角度考慮才設置的,因為負號明明可以正好到能量函數中,其實是因為能量函數的概率來自于統計物理領域。這個概念與配分函數一樣都是來源于別的學科,保留負號是為了與別的學科相兼容。
很多基于概率模型的算法都不需要計算\(p_{model}(x)\),只要計算 \(log\tilde{p}(x)\)就行了。對于包含隱變量\(h\)的能量模型來說,算法通常計算的是 free energy:
\[ F(x) = -log\sum^hexp(-E(X,h)) \]
在本書中,我們選擇的是更一般的形式:\(log\tilde{p}(x)\)。
16.2.5 分割 和 D-分割 (separation and D-separation)
圖模型中的邊表示變量之間是否直接相關,我們經常需要知道哪些變量是不直接相關的。 更正式地說法是我們希望知道給定一個變量的子集,哪些變量是條件獨立于其他變量的。
在一個無向圖中辨別條件獨立是比較簡單的。 在這種情況下,條件獨立的相關變量子集稱為一個分割,假設給定子集S,子集A與子集B是條件獨立的,那么子集A,B,S分別是一個分割。假設兩個隨機變量a和b之間的路徑只包含unobserved variables,那么a和b并沒有separated, 如果a和b之間不存在路徑或者是所有相連的路徑都存在一個observed variable, 那么a和b就是separated。 我們把只包含unobserved variables的路徑稱為active的路徑,而把包含observed variable的路徑稱為inactive. 圖16.6和16.7說明了這一點。
相似的想法也可以應用到有向圖中,不過在有向圖中變成了 D-separation, D的意思是dependence,在有向圖中,當給定一個子集S,子集A與另一子集B是條件獨立的,那么就稱當給定S時,A與B是d-separated。 有向圖中定義什么樣的路徑是activte的,什么樣的路徑是inactivte的比在無向圖中復雜,具體定義見圖16.8,圖16.9也給出了一個例子。
16.2.6 有向圖和無向圖之間的相互轉換
這一小節話比較多,我覺得說得比較啰嗦,其實它要表達的就是有向圖和無向圖之間沒有優劣之分,選擇有向還是無向要看具體的任務。至于有向圖和無向圖之間的轉化方法也不難,但是舉的例子說的話比較多,寫起來收獲不大,等以后用到了這個地方再看吧。
因子圖 (Factor Graphs)
因子圖是展示無向圖模型的另一種方式,目的是為了消除標準無向圖形式的二義性。在無向圖模型中,每個勢函數對應無向圖中一個子集,但是并不是每一個子集都需要有一個勢函數與之對應。因子圖顯式地展示了所有存在的勢函數。如圖16.13所示
轉載于:https://www.cnblogs.com/mata123/p/7787395.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Deep learning chapter16的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python脚本批量生成数据
- 下一篇: 十、Hadoop学习笔记————Hive