A. 怎麼通俗易懂地解釋貝葉斯網路和它的應用
我們首先呢下載貝葉斯網路工具箱再個呢解壓壓縮包然後將工具箱中bnt文件夾復制到matlab工具箱文件夾中(D:Program FilesMATLABR2014a oolbox)最後是打開matlab2014a,貝葉斯網路是處理不確定信息做有效的表示方法之一。其關鍵的特徵之一是提供了把整個概率分布分解成幾個局部分布的方法,網路的拓撲結構表明如何從局部的概率分布獲得完全的聯合概率分布。 貝葉斯網路適合於對領域知識具有一定了解的情況,至少對變數間的依賴關系較清楚。否則直接從數據中學習貝葉斯網路結構復雜性極高(隨節點的增加成指數級增長)在這個網路meta分析中,研究者比較了多種非類固醇抗炎葯治療膝、 髖關節骨性關節炎疼痛的療效,那兩個大點就是樣本量最大的兩個不同的葯物組(變數)。當然,偉大的貝葉斯統計怎麼會僅僅局限於對文獻數據的網路meta分析?教科書上說,貝葉斯網路,既形式上,一個貝葉斯網路就是一個有向無環圖,結點表示隨機變數,可以是可觀測量、隱含變數、未知參量或假設等;結點之間的郵箱邊表示條件依存關系,箭頭指向的結點依存於箭頭發出的結點(父節點),每個結點都與一個概率函數相關。看看!說明啥?長得多麼多麼像醫學中各個疾病與其危險因素的關系啊!多麼多麼像臨床診斷指南里一下症狀中幾條中滿足幾條考慮診斷的診斷軸啊!
B. 貝葉斯網路,看完這篇我終於理解了(附代碼)!
概率圖模型是用圖來表示變數概率依賴關系的理論,結合概率論與圖論的知識,利用圖來表示與模型有關的變數的聯合概率分布。由圖靈獎獲得者Pearl開發出來。
如果用一個詞來形容概率圖模型(Probabilistic Graphical Model)的話,那就是「優雅」。對於一個實際問題,我們希望能夠挖掘隱含在數據中的知識。概率圖模型構建了這樣一幅圖,用觀測結點表示觀測到的數據,用隱含結點表示潛在的知識,用邊來描述知識與數據的相互關系, 最後基於這樣的關系圖獲得一個概率分布 ,非常「優雅」地解決了問題。
概率圖中的節點分為隱含節點和觀測節點,邊分為有向邊和無向邊。從概率論的角度,節點對應於隨機變數,邊對應於隨機變數的依賴或相關關系,其中 有向邊表示單向的依賴,無向邊表示相互依賴關系 。
概率圖模型分為 貝葉斯網路(Bayesian Network)和馬爾可夫網路(Markov Network) 兩大類。貝葉斯網路可以用一個有向圖結構表示,馬爾可夫網路可以表 示成一個無向圖的網路結構。更詳細地說,概率圖模型包括了樸素貝葉斯模型、最大熵模型、隱馬爾可夫模型、條件隨機場、主題模型等,在機器學習的諸多場景中都有著廣泛的應用。
長久以來,人們對一件事情發生或不發生的概率,只有固定的0和1,即要麼發生,要麼不發生,從來不會去考慮某件事情發生的概率有多大,不發生的概率又是多大。而且概率雖然未知,但最起碼是一個確定的值。比如如果問那時的人們一個問題:「有一個袋子,裡面裝著若干個白球和黑球,請問從袋子中取得白球的概率是多少?」他們會想都不用想,會立馬告訴你,取出白球的概率就是1/2,要麼取到白球,要麼取不到白球,即θ只能有一個值,而且不論你取了多少次,取得白球的 概率θ始終都是1/2 ,即不隨觀察結果X 的變化而變化。
這種 頻率派 的觀點長期統治著人們的觀念,直到後來一個名叫Thomas Bayes的人物出現。
托馬斯·貝葉斯Thomas Bayes(1702-1763)在世時,並不為當時的人們所熟知,很少發表論文或出版著作,與當時學術界的人溝通交流也很少,用現在的話來說,貝葉斯就是活生生一民間學術「屌絲」,可這個「屌絲」最終發表了一篇名為「An essay towards solving a problem in the doctrine of chances」,翻譯過來則是:機遇理論中一個問題的解。你可能覺得我要說:這篇論文的發表隨機產生轟動效應,從而奠定貝葉斯在學術史上的地位。
這篇論文可以用上面的例子來說明,「有一個袋子,裡面裝著若干個白球和黑球,請問從袋子中取得白球的概率θ是多少?」貝葉斯認為取得白球的概率是個不確定的值,因為其中含有機遇的成分。比如,一個朋友創業,你明明知道創業的結果就兩種,即要麼成功要麼失敗,但你依然會忍不住去估計他創業成功的幾率有多大?你如果對他為人比較了解,而且有方法、思路清晰、有毅力、且能團結周圍的人,你會不由自主的估計他創業成功的幾率可能在80%以上。這種不同於最開始的「非黑即白、非0即1」的思考方式,便是 貝葉斯式的思考方式。
先簡單總結下頻率派與貝葉斯派各自不同的思考方式:
貝葉斯派既然把看做是一個隨機變數,所以要計算的分布,便得事先知道的無條件分布,即在有樣本之前(或觀察到X之前),有著怎樣的分布呢?
比如往檯球桌上扔一個球,這個球落會落在何處呢?如果是不偏不倚的把球拋出去,那麼此球落在檯球桌上的任一位置都有著相同的機會,即球落在檯球桌上某一位置的概率服從均勻分布。這種在實驗之前定下的屬於基本前提性質的分布稱為 先驗分布,或著無條件分布 。
其中,先驗信息一般來源於經驗跟歷史資料。比如林丹跟某選手對決,解說一般會根據林丹歷次比賽的成績對此次比賽的勝負做個大致的判斷。再比如,某工廠每天都要對產品進行質檢,以評估產品的不合格率θ,經過一段時間後便會積累大量的歷史資料,這些歷史資料便是先驗知識,有了這些先驗知識,便在決定對一個產品是否需要每天質檢時便有了依據,如果以往的歷史資料顯示,某產品的不合格率只有0.01%,便可視為信得過產品或免檢產品,只每月抽檢一兩次,從而省去大量的人力物力。
而 後驗分布 π(θ|X)一般也認為是在給定樣本X的情況下的θ條件分布,而使π(θ|X)達到最大的值θMD稱為 最大後驗估計 ,類似於經典統計學中的 極大似然估計 。
綜合起來看,則好比是人類剛開始時對大自然只有少得可憐的先驗知識,但隨著不斷觀察、實驗獲得更多的樣本、結果,使得人們對自然界的規律摸得越來越透徹。所以,貝葉斯方法既符合人們日常生活的思考方式,也符合人們認識自然的規律,經過不斷的發展,最終占據統計學領域的半壁江山,與經典統計學分庭抗禮。
條件概率 (又稱後驗概率)就是事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示為P(A|B),讀作「在B條件下A的概率」。
比如上圖,在同一個樣本空間Ω中的事件或者子集A與B,如果隨機從Ω中選出的一個元素屬於B,那麼這個隨機選擇的元素還屬於A的概率就定義為在B的前提下A的條件概率:
聯合概率:
邊緣概率(先驗概率):P(A)或者P(B)
貝葉斯網路(Bayesian network),又稱信念網路(Belief Network),或有向無環圖模型(directed acyclic graphical model),是一種概率圖模型,於1985年由Judea Pearl首先提出。它是一種模擬人類推理過程中因果關系的不確定性處理模型,其網路拓樸結構是一個有向無環圖(DAG)。
貝葉斯網路的有向無環圖中的節點表示隨機變數
它們可以是可觀察到的變數,或隱變數、未知參數等。認為有因果關系(或非條件獨立)的變數或命題則用箭頭來連接。若兩個節點間以一個單箭頭連接在一起,表示其中一個節點是「因(parents)」,另一個是「果(children)」,兩節點就會產生一個條件概率值。
例如,假設節點E直接影響到節點H,即E→H,則用從E指向H的箭頭建立結點E到結點H的有向弧(E,H),權值(即連接強度)用條件概率P(H|E)來表示,如下圖所示:
簡言之,把某個研究系統中涉及的隨機變數,根據是否條件獨立繪制在一個有向圖中,就形成了貝葉斯網路。其主要用來描述隨機變數之間的條件依賴,用圈表示隨機變數(random variables),用箭頭表示條件依賴(conditional dependencies)。
此外,對於任意的隨機變數,其聯合概率可由各自的局部條件概率分布相乘而得出:
1. head-to-head
依上圖,所以有:P(a,b,c) = P(a) P(b) P(c|a,b)成立,即在c未知的條件下,a、b被阻斷(blocked),是獨立的,稱之為head-to-head條件獨立。
2. tail-to-tail
考慮c未知,跟c已知這兩種情況:
3. head-to-tail
還是分c未知跟c已知這兩種情況:
wikipedia上是這樣定義因子圖的:將一個具有多變數的全局函數因子分解,得到幾個局部函數的乘積,以此為基礎得到的一個雙向圖叫做因子圖(Factor Graph)。
通俗來講,所謂因子圖就是對函數進行因子分解得到的 一種概率圖 。一般內含兩種節點:變數節點和函數節點。我們知道,一個全局函數通過因式分解能夠分解為多個局部函數的乘積,這些局部函數和對應的變數關系就體現在因子圖上。
舉個例子,現在有一個全局函數,其因式分解方程為:
其中fA,fB,fC,fD,fE為各函數,表示變數之間的關系,可以是條件概率也可以是其他關系。其對應的因子圖為:
在概率圖中,求某個變數的邊緣分布是常見的問題。這問題有很多求解方法,其中之一就是把貝葉斯網路或馬爾科夫隨機場轉換成因子圖,然後用sum-proct演算法求解。換言之,基於因子圖可以用 sum-proct 演算法 高效的求各個變數的邊緣分布。
詳細的sum-proct演算法過程,請查看博文: 從貝葉斯方法談到貝葉斯網路
樸素貝葉斯(Naive Bayesian)是經典的機器學習演算法之一,也是為數不多的基於概率論的分類演算法。樸素貝葉斯原理簡單,也很容易實現,多用於文本分類,比如垃圾郵件過濾。**樸素貝葉斯可以看做是貝葉斯網路的特殊情況:即該網路中無邊,各個節點都是獨立的。 **
樸素貝葉斯樸素在哪裡呢? —— 兩個假設 :
貝葉斯公式如下:
下面以一個例子來解釋樸素貝葉斯,給定數據如下:
現在給我們的問題是,如果一對男女朋友,男生想女生求婚,男生的四個特點分別是不帥,性格不好,身高矮,不上進,請你判斷一下女生是嫁還是不嫁?
這是一個典型的分類問題,轉為數學問題就是比較p(嫁|(不帥、性格不好、身高矮、不上進))與p(不嫁|(不帥、性格不好、身高矮、不上進))的概率,誰的概率大,我就能給出嫁或者不嫁的答案!這里我們聯繫到樸素貝葉斯公式:
我們需要求p(嫁|(不帥、性格不好、身高矮、不上進),這是我們不知道的,但是通過樸素貝葉斯公式可以轉化為好求的三個量,這三個變數都能通過統計的方法求得。
等等,為什麼這個成立呢?學過概率論的同學可能有感覺了,這個等式成立的條件需要特徵之間相互獨立吧!對的!這也就是為什麼樸素貝葉斯分類有樸素一詞的來源,樸素貝葉斯演算法是假設各個特徵之間相互獨立,那麼這個等式就成立了!
但是為什麼需要假設特徵之間相互獨立呢?
根據上面倆個原因,樸素貝葉斯法對條件概率分布做了條件獨立性的假設,由於這是一個較強的假設,樸素貝葉斯也由此得名!這一假設使得樸素貝葉斯法變得簡單,但有時會犧牲一定的分類准確率。
樸素貝葉斯優點 :
樸素貝葉斯缺點 :
理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為樸素貝葉斯模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。
樸素貝葉斯模型(Naive Bayesian Model)的 樸素(Naive)的含義是"很簡單很天真" 地假設樣本特徵彼此獨立. 這個假設現實中基本上不存在, 但特徵相關性很小的實際情況還是很多的, 所以這個模型仍然能夠工作得很好。
新聞分類 GitHub: 點擊進入
【 機器學習通俗易懂系列文章 】
從貝葉斯方法談到貝葉斯網路
C. 貝葉斯網路基本原理
貝葉斯網路又稱信念網路,是有向無環圖的網路拓撲結構和貝葉斯概率方法有機結合的模型表示,描述了各個數據項及其相互間的依賴關系。一個 BN 包括了一個拓撲結構模型和與之相關的一組條件概率參數。結構模型是一個有向無環圖,每個節點則表示一個隨機變數,是對於狀態、過程、事件等實體的某個特性的形象描述,其中的有向邊則表示隨機變
量之間的條件依賴關系。BN 中每個節點( 除根節點外) 都有一個給定其父節點情況下的條件概率分布。2. 1. 1 貝葉斯網路定理
BN 是一種概率網路,即基於概率推理的圖形化網路,這個概率網路的基礎是貝葉斯公式。我們先來看一看貝葉斯基本公式。
定義 2. 1 條件概率: 設 X、Y 是兩個事件,且 P( X) >0,稱
基於BN+GIS新技術的突水態勢研究
為在事件 X 發生的條件下事件 Y 發生的條件概率。
定義 2. 2 聯合概率: 設 X,Y 是兩個事件,且 P( X) >0,它們的聯合概率為:
基於BN+GIS新技術的突水態勢研究
定義2.3全概率公式:設試驗E的樣本空間為S,X為E的事件,Y1,Y2,…,Yn為E的一組事件,滿足:
基於BN+GIS新技術的突水態勢研究
定義2.4貝葉斯公式:根據定義2.1、定義2.2和定義2.3,很容易推得眾所周知的貝葉斯公式:
基於BN+GIS新技術的突水態勢研究
2. 1. 2 貝葉斯網路的拓撲結構
BN 是一個具有概率分布的有向無環圖( Directed Acyclic Graph) ,其中每個節點代表一個數據變數或者屬性,節點間的弧段代表數據變數( 屬性) 之間的概率依賴關系。一條弧段由一個數據變數( 屬性) X 指向另外一個數據變數( 屬性) Y,說明數據變數 X 的取值可以對數據變數 Y 的取值產生影響。既然是有向無環圖,因此 X,Y 間不構成有向迴路。在 BN 當中,連接兩個節點的一條弧 XY 中的弧頭節點( 直接的原因節點) X 叫做弧尾節點( 結果節點) Y 的雙親節點( Parents) ,Y 叫做 X 的孩子節點( Children) 。如果從節點 A 有一條有向通路指向 B,則稱節點 A 為節點 B 的祖先( Ancestor) ,同時稱節點 B 為節點 A 的後代( Descendent) 。
BN 能夠利用簡單明了的圖形表達方式定性地表示事件間復雜的概率關系和因果關系,在給定某些先驗信息後,還可以定量地表示這些因果概率關系。BN 的拓撲結構通常是根據具體的問題和研究對象來確定的。目前如何通過結構學習自動確定和優化網路的拓撲結構是 BN 的一個研究熱點。
2.1.3 條件獨立性假設
條件獨立性假設是BN進行定量推理的理論基礎,可以減少先驗概率的數目,從而大大地簡化推理和計算過程。
BN的條件獨立性假設的一個很重要的判據就是著名的分隔定理(D-Separation):
定義2.5阻塞:G=(V(G),E(G))為一個有向非循環圖,s是其中的一條鏈。當s包含3個連續的節點x,y,z,滿足以下3種情況之一,我們稱s被節點集合W(WV(G))阻塞:
(1)z∈W,s上存在弧x→z和z→y;
(2)z∈W,s上存在弧x←z和z→y;
(3)s上存在弧x→z和z←y,σ(z)∩W=,σ(z)表示z以及z的所有子孫節點的集合。
圖2.1 阻塞的3種情形
定義2.6阻塞集:兩個節點x和y間的所有路徑都被節點集合Z所阻塞,則稱集合Z為x,y兩個節點間的阻塞集。
定義2.7D-Separation:令X,Y和Z是一個有向無環圖G中3個不相交節點的子集,如果在集合X和Y中所有節點間的所有路徑都被集合Z所阻塞,則稱集合X,Y被Z集合(d-separation),表示為<X,Y|Z>G,也稱Z為X和Y的切割集。否則,稱在給定集合Z下集合X和Y的圖形依賴。
這個判據指出,如果Z隔離了X和Y時,那麼可以認為X與Y是關於Z條件獨立的,即:P(X|Y,Z)=P(X|Y)。
D. 貝葉斯神經網路
通過優化的標准神經網路訓練(從概率的角度來看)等同於權重的最大似然估計(MLE)。由於許多原因,這往往是不能令人滿意的 —— 使用 MLE 會忽略在適當的權重值中可能存在的任何不確定性,即無法正確評估訓練數據中的不確定性,從實際的角度來看,這種類型的訓練容易出現過擬合現象。
對此的一個解決方案是引入正則化(從貝葉斯的角度來看,這相當於在權重上引入先驗)。如果我們可以通過規范模型來解決過度自信決策和防止模型過度擬合的問題,那為什麼我們需要貝葉斯神經網路?答案是: 當前神經網路架構中缺少預測中的不確定性度量,但貝葉斯神經網路將其納入其中 。BNN 在特定環境中很重要,特別是當我們非常關心不確定性時,貝葉斯方法自然地解釋了參數估計中的不確定性,並且可以將這種不確定性傳播到預測中。
深度神經網路已成功應用於許多領域,包括非常敏感的領域,如醫療保健,安全性,欺詐性交易等等。這些領域在很大程度上依賴於模型的預測准確性,甚至一個過度自信的決策也可能導致一個大問題。此外,這些領域具有非常不平衡的數據集(百萬個交易中的一個是欺詐性交易,百分之五的癌症檢測結果是陽性,不到百分之一的電子郵件是垃圾郵件),容易導致該模型過度擬合。
從概率論的角度來看,使用單點估計權重以進行分類是不合理的。而貝葉斯神經網路對於過擬合更加魯棒,並且可以從小數據集中輕松學習。 貝葉斯方法將其參數以概率分布的形式表示以提供不確定性估計;同時,通過使用先驗概率分布的形式來表示參數,訓練期間在許多模型上計算平均值,這給網路提供了正則化效果,從而防止過度擬合 。
在標准神經網路中,權重由單個點表示。 而貝葉斯神經網路以分布形式表示權重,如下圖所示:
即使使用少量參數,在貝葉斯神經網路中推斷後驗模型也是一項艱巨的任務,因此通常使用後驗模型的近似值,變分推理是一種流行的方法。人們將使用簡單的變分分布(例如高斯分布)對後驗進行模擬,並嘗試調整分布的參數使其盡可能接近真實的後驗 —— 通過最小化這種簡單變分分布和真實後驗之間的 KL 散度來完成。
但是用於逼近 BNN 後驗的變分方法在計算上可能相當昂貴,因為使用近似分布會大大增加模型參數的數量,但不會大幅增加模型容量。例如,使用 BNN 後驗近似的高斯分布,模型參數的數量增加了一倍,但報告了與使用丟失的傳統方法相同的預測性能。 這使得該方法在實踐中不適合與 CNN 一起使用,因為參數數量的增加太昂貴。
關於神經網路權重的精確貝葉斯推斷是難以處理的,因為參數的數量非常大,並且神經網路的函數形式不適合精確積分。 因此,我們用變分概率分布 q θ (w | D) 逼近難以處理的真實後驗概率分布 p(w | D),它包括高斯分布的性質 μ∈ℝ d 和 σ∈ℝ d ,表示為 N(θ | μ,σ²),其中 d 是定義概率分布的參數總數。 這些高斯變分後驗概率分布的形狀由它們的方差 σ² 確定,表示每個模型參數的不確定性估計。
在觀察數據之前定義先驗概率分布,一旦觀察到數據(訓練數據),學習就發生並且分布變換為後驗分布。 利用概率論從數據中學習構成了貝葉斯學習的基礎。貝葉斯定理如下:
P(θ | x) 為後驗概率,也是我們想要計算的;P(θ) 為先驗概率,在訓練數據之前就是已知的;P(x | θ) 為可能性,顯示了數據分布;P(x) 為證據,我們只能通過對所有可能的模型值積分來計算其值:
這使得問題變得棘手,因此我們採用變分近似來找到近似貝葉斯後驗分布。
首先,我們的原始目標是,需要根據已有數據推斷需要的分布 p;當 p(下圖中黃色區域)不容易表達,不能直接求解時,可以嘗試用變分推斷的方法, 即,尋找容易表達和求解的分布 q(下圖中紅線和綠線構成的區域),當 q 和 p 的差距很小的時候,q 就可以作為 p 的近似分布,成為輸出結果了。例如,我們用 q θ (w | D) 來近似 p(w | D)。首先注意 q θ (w | D) 的表達,其中 w 是變數,θ 是後驗概率分布 q 的參數。所以在構造 q 的時候也分兩步:第一,概率分布的選擇;第二,參數的選擇。第一步,我們在選擇 q 的概率分布時,通常會直觀選擇 p 可能的概率分布,這樣能夠更好地保證 q 和 p 的相似程度。例如高斯混合模型中,原始假設 p 服從高斯分布,則構造的 q 依然服從高斯分布。之後,我們通過改變 θ,使得 q 不斷逼近 p。
我們希望盡可能接近真正的分布,這可以通過最小化兩者之間的 Kullback-Liebler(KL)散度來做到這一點。然而 KL 的表達式中依然有一部分不可求的後驗概率,這個問題仍然是棘手的,所以用到了 ELBO:
但是由於積分的存在,這個公式仍然難以解決。此時,我們可以從近似函數 q θ (w | D) 中進行采樣,因為從近似函數中采樣權值要比真正的後驗函數 p(w | D) 更容易。這樣得到容易計算的函數:
這些采樣權值 w 被用於神經網路的反向傳播,學習後驗分布。
貝葉斯建模中,存在兩種類型的不確定:偶然不確定性和認知不確定性。
可以通過在模型參數或模型輸出上放置概率分布來估計不確定性 。通過在模型的權重上放置先驗分布,然後嘗試捕獲這些權重在給定數據的情況下變化多少來模擬認知不確定性。另一方面,通過在模型的輸出上放置分布來模擬偶然不確定性。
傳統神經網路常使用反向傳播來訓練。對於 BNN,其自然地解釋了參數估計中的不確定性,並且可以將這種不確定性傳播到預測結果中;此外,對參數值進行取平均而不是僅選擇單點估計值使得模型不易出現過擬合。因此,對 BNN 參數的訓練也需要特殊的訓練方法,Bayes by Backprop 就是其中一種(它也是一種變分推斷)。
Bayes by Backprop 用來學習神經網路權重的概率分布。它是一種變分推理方法,用於學習神經網路權重 w ~ q θ (w | D) 的後驗分布,可以在反向傳播中對權重 w 進行采樣。整個方法可歸納如下:
由於參數數目較大,所以需要對模型權重進行適當的修剪。模型修剪減少了深度神經網路的各種連接矩陣中的稀疏性,從而減少了模型中有價值的參數的數量。模型修剪的整個想法是減少參數的數量而不會損失模型的准確性。最常用的修剪模型的方法是將低貢獻權重映射到零並減少整體非零值權重的數量,可以通過訓練大型稀疏模型並進一步修剪來實現。
(這部分內容摘自 一個例子搞清楚 先驗分布/後驗分布/似然估計 )
給定一些數據樣本 x,假定我們知道樣本是從某一種分布中隨機取出的,但我們不知道這個分布具體的參數 θ。
因為給定樣本 x 後, p(x) 會在 θ 空間上為一個定值,和 θ 的大小沒有關系,所以可以省略分母 p(x)。 可化簡為:
p(x) 相當於是一個歸一化項,整個公式就表示為: Posterior∝(Likelihood∗Prior)(後驗概率 正比於 先驗概率 ∗ 似然函數)
需要一提的是,對貝葉斯 CNN 而言,不僅在卷積層中將概率分布置於權重上,還要求在全連接層中將概率分布置於權重上。
假設權重的變分後驗概率分布 q θ (w ijhw | D) = N(μ ijhw ,α ijhw μ 2 ijhw )(其中,i 和 j 分別對應輸入和輸出層數,h 和 w 分別對應過濾器的高度和寬度),那麼卷積公式被重定義為:
其中,ε j ~ N(0,1),A i 為過濾器在第 i 層要卷積的部分,b j 為相應的第 j 層的激活值,∗ 為卷積操作,⊙ 為元素乘法(component-wise multiplication)。
對 CNN 的權重應用概率分布而非單點值,並且要在反向傳播時更新變分後驗概率分布 q θ (w | D),關鍵在於過濾器會執行兩次卷積操作(在單點預測的 CNN 中只執行一次卷積)。
從前面的公式我們看到,卷積操作的輸出 b 是期望 μ ijhw 和方差 α ijhw μ 2 ijhw 的函數,因此我們可以分別計算出 μ ijhw 和 α ijhw μ 2 ijhw 的值,從而可以得到一個高斯概率分布。方法就是執行兩次卷積操作:第一次,我們將 b 視為通過頻率推理更新的 CNN 的輸出,將單點估計值解釋為變分後驗概率分布的期望;第二次,我們將得到方差。通過這種方式,我們確保每個卷積操作只更新一個參數(第一次為 μ ijhw ,第二次為 α ijhw ),這與通過頻率推斷更新的 CNN 完全相同。
實際上,當我們執行第一次卷積操作,我們得到的是 q θ (w | D) 的最大後驗概率,而第二次卷積操作則是得出權重 w 偏離了最大後驗概率多少。另外,為了加速計算,確保方差 α ijhw μ 2 ijhw 為非零正數,並提到准確度,我們學習 logα ijhw 並使用 Softplus 激活函數。
在分類任務中,我們關注的是 P D (y* | x*);對於貝葉斯神經網路,其被表示為:
在 Bayes by Backprop 中,q θ (w | D) ~ N(w | μ, σ 2 ),而 θ = {μ, σ} 在數據集 D = {x i , y i } n i=1 的訓練中學習得到。由於分類問題多是離散的,因此:
其中,Σ c f(x c ∗ | w) = 1,C 為總類數。通過從 q θ (w | D) 取樣,可以獲得期望值的無偏估計:
T 為樣本數量。這個估計值允許我們評估預測值的不確定性,因此稱為預測方差,用 Var q 表示:
這個值可以進一步分為偶然不確定性和認知不確定性:
由於貝葉斯 CNN 中的權重都由期望和方差來表示其分布,因此,相較於單點估計 CNN,貝葉斯 CNN 的參數數量翻了一倍。為了使貝葉斯 CNN 參數數量等於傳統 CNN,可以使 BCNN 的過濾器數目減半。
另一種模型修剪的技術是對每層的權重使用 L1 歸一化。通過 L1 歸一化,我們使各模型層中的權重向量變得非常稀疏,即大部分矩陣元素變得接近零;同時,剩餘的非零元素則捕獲數據的最重要特徵。我們設置一個閾值,如果該值低於閾值,則使權重為零。通過只保留非零權重,可以減少模型的參數數量,而不會影響模型的整體性能。
看了一些國內的論文,將貝葉斯應用於 BP 神經網路優化,往往是利用貝葉斯定理尋找最優神經網路參數,以解決神經網路權值易陷入局部最優的問題,同時也能解決神經網路過擬合。其中心思想在於: 根據給定的先驗分布,利用貝葉斯定理考察神經網路參數的不確定性,從樣本數據中,獲得網路結構的後驗概率,那麼,使得該後驗概率最大化的網路參數即為所需的最優參數 (我認為這其實是 MAP 而非貝葉斯估計)。最優參數定義為:
為方便計算,對後驗概率取對數得到:
假設先驗概率分布 p(w) 滿足高斯分布:
則有:
上式中,似然函數部分對應於目標函數中的適應度函數,而先驗概率部分對應於正則項,因此我們可以通過確定先驗概率得到正則項,從而對神經網路的目標函數進行優化,進而有效控制網路規模,提高網路泛化能力。
後驗分布是人們在獲得樣本數據 D 之後對參數 w 的一種調整。 貝葉斯把上一步得到的後驗分布信息儲存起來,在將來做推測時,上一步的後驗信息就成為了先驗信息 ,這樣持續數次操作之後,樣本數據的預測結果會一直進行調整,最後對參數估計的結果精確度更高。
神經網路中最重要的兩個性能參數就是權值和閾值,而這兩個參數的分布情況受到了目標函數中超參數的控制,但一般的演算法不能確定超參數的取值。可以利用貝葉斯定理來求取目標函數的超參數,並且要求達到自主調節超參數取值的目標,並且通過持續的調整最後找到最優的取值,相應的確定 BP 神經網路的最優權值和閾值。