深度贝叶斯神经网络(Deep Bayesian Neural Networks)实现方法
深度貝葉斯神經網絡(Deep Bayesian Neural Networks)實現方法
本文內容摘自: https://stefano-cosentino.medium.com/deep-bayesian-neural-networks-952763a9537
1. 目的是什么?
任何深度網絡都有參數,通常以權重 (w1,w2,...)(w_1, w_2, ...)(w1?,w2?,...) 和偏差 (b1,b2,...)(b_1, b_2, ...)(b1?,b2?,...)的形式存在。傳統的方法(非貝葉斯)是通過最大似然估計(maximum likelihood estimation)僅學習這些參數的最優值。這些值都是標量(scalars),如 w1=0.8w_1=0.8w1?=0.8 或 b1=3.1b_1=3.1b1?=3.1。
而,貝葉斯方法對每個參數相關的分布(distributions)感興趣。例如,在訓練貝葉斯網絡收斂后,上述的兩個參數可能可以由以下兩條高斯曲線(Gaussian curves)描述。
擁有一個分布而不是單一的值有很多好處。首先,可以從分布中多次取樣,查看對模型預測的影響。例如,經過多次取樣,模型給出一致的預測,那么我們可以說網絡對其做出的預測是自信的(confident)。
2. 難點是什么?
估計這些參數的分布是不容易的。這通常稱為后驗密度(posterior densities),并使用貝葉斯公式進行估計。可以表示為:
p(w∣x,y)=p(x,y∣w)p(w)p(x,y)=p(x,y∣w)p(w)∫p(x,y∣w)p(w)dwp(w|x,y) = \frac{p(x,y|w)p(w)}{p(x,y)} =\frac{p(x,y|w)p(w)}{\int p(x,y|w)p(w)dw} p(w∣x,y)=p(x,y)p(x,y∣w)p(w)?=∫p(x,y∣w)p(w)dwp(x,y∣w)p(w)?
(貝葉斯公式。xxx 和 yyy 是輸入和輸出。分母中的積分需要對模型參數 www 所有可能的值進行積分----這使計算變得非常困難。)難點是分母----也稱為模型證據(model evidence)。它需要對所有可能的參數值(即所有權重和偏差空間)進行積分,而這在實際中是做不到的。
做為替代,可以使用以下的偽數字方法,去近似積分的解。
- 用 MCMC 近似積分的方法
- 使用黑盒子變分推理(使用 edward 包)
- 使用 MC dropout
2.1 使用 MCMC 近似積分
由于計算貝葉斯公式的積分的解很難,可以通過使用 MCMC(馬爾科夫鏈蒙特卡洛) 來近似積分的解。MCMC背后的原理真的很酷,建議大家閱讀這個博客,通過代碼和示例來理解 MCMC 背后的原理。撇開數學,這種方法是三個方法中最慢和最不吸引人的。
- 優點:理論上,MCMC最終可以獲得最優的結果,其近似值接近于后驗。
- 缺點:在實踐中,它需要很長的時間來收斂,如果它曾經能收斂的話。
2.2 使用變分推理
變分推理(variational inference)是一種估計密度函數的方法,通過選擇一個我們已知的分布(例如高斯),并逐步改變其參數,直到它看起來像我們想要計算的那個分布,即后驗。改變參數不再需要計算復雜的微積分,這是一個優化過程,導數通常比積分更容易計算。我們要優化的由我們自己"捏造"的分布稱為變分分布(variational distribution)。
- 優點:它比普通的MCMC方法快,而且通過使用edwar這樣的函數包可以在幾分鐘內構建和運行貝葉斯網絡。
- 缺點:對于非常深的貝葉斯網絡來說,它可能會變得很慢,而且性能并不保證總是最佳的。
2.3 使用 MC dropout
Monte Carlo dropout (蒙特卡洛 dropout) 是2016年提出的一個理論1,它通過使用一種稱為 droput 的正則化方法提供了貝葉斯解釋。
- 變分推理是一種貝葉斯方法,通過使用任意的分布,即前面介紹的變分分布來估計后驗;
- 而,dropout 則是神經網絡的一種正則化方法,在訓練期間,部分神經元被隨機打開或關閉,以防止網絡依賴于特定的神經元。
MC dropout 的關鍵思想是:dropout 可以用來進行變分推理,其中變分分布來自于伯努利分布。MC 指的是 dropout 的采樣以"Monte Carlo " 的方式進行。
伯努利分布 (Bernoulli distribution),又名 0?10-10?1 分布,是一種離散型概率分布。若伯努利試驗成功,則伯努利隨機變量取值為 111;若試驗失敗,則取值為 000。
在實踐中,通過 MC dropout 可以將傳統網絡變成貝葉斯網絡(在訓練和驗證期間,通過對每一層使用 dropout);這相當于從伯努利分布中取樣和度量模型的確信度(certainty)(多次取樣預測的一致性)。也可以用 其他2 變分分布進行實驗。
- 優點:將現有的深度網變成貝葉斯網是容易的。比其他技術要快,而且不需要推理框架。
- 缺點:對于計算要求高的(如實時)應用來說,在測試階段的多次取樣和預測可能過于昂貴。
https://arxiv.org/abs/1506.02142 ??
https://arxiv.org/abs/1611.01639 ??
總結
以上是生活随笔為你收集整理的深度贝叶斯神经网络(Deep Bayesian Neural Networks)实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svn server启动报错:The H
- 下一篇: 物联公司网页设计制作 简单静态HTML网