貝葉斯神經網路(系列)第一篇

weixin_34128411發表於2019-03-04
13894005-eb44873ae1c542e6

本文為 AI 研習社編譯的技術部落格,原標題 :

Bayesian Neural Network Series Post 1: Need for Bayesian Neural Networks

作者 | Kumar ShridharFollow

翻譯 | mashagua            

校對 | 醬番梨        稽核 | 約翰遜·李加薪       整理 | 立魚王

原文連結:

https://medium.com/neuralspace/bayesian-neural-network-series-post-1-need-for-bayesian-networks-e209e66b70b2


13894005-6dc359b615ee4cdd
圖1:點估計作為權重的神經網路 vs 概率分佈作為權重的神經網路。

這篇文章是貝葉斯卷積網路八個系列中的第一篇文章。  這些部落格的大致結構如下:

貝葉斯網路的應用場景

為了更好的理解貝葉斯網路所需要的背景知識

一些在貝葉斯神經網路方面最新的成果

基於變分推理的貝葉斯卷積神經網路

利用PyTorch 建立你自己的貝葉斯卷積神經網路

貝葉斯神經網路的不確定性估計

貝葉斯神經網路中的模型修剪

在其他領域的應用(超級解析度,GAN等...)

讓我們通過本篇部落格理解貝葉斯神經網路的需求場景來開始這個系列。

 問題陳述

深度神經網路(DNNs)是通過學習示例來學習執行任務,而無需事先了解任務的連線系統。它們可以輕鬆擴充套件到數百萬個資料點,並且可以通過隨機梯度下降進行優化。

卷積神經網路(CNN)是DNNs的一個變體,已經在影象分類領域超越了人類的準確性。由於CNNs可以擬合各種非線性資料點,因此它們需要大量的訓練資料。這會導致CNN和一般的神經網路經常在每類具有少量的訓練樣例上造成過擬合。神經網路模型可以在訓練集上擬合的很好,但是不能很好的預測未曾出現的資料。這種情況經常會造成神經網路無法正確評估訓練資料中的不確定性,從而導致對正確的類別,預測或行動的過度自信的決定。

如果部落格的這部分對你來說有點超前,那麼建議你從這裡重新回顧一下深度學習的基本知識。

為了理解這部分,讓我們考慮一個貓狗影象的二分類訓練任務。現在,當一個豹子的圖片出現在測試集中,理想情況下模型應該預測它既不是狗也不是貓(狗的概率為50%,貓類概率為50%)。但是,由於輸出層的softmax函式可以獲得概率分數,它會調整一個類輸出概率分數並最大化另一個類,從而導致一個類的置信度過高。這是點估計神經網路的主要問題之一。

注意到點估計應用在神經網路,其中權重由單個節點表示。另一方面,一個貝葉斯神經網路的權重是由它的分佈表示,可見圖一。

但是我們真的需要貝葉斯神經網路嗎?在工程實踐中我們用各種正則化技巧去控制過擬合,比如,提前終止迭代,權重衰減,L1或者L2正則化以及最近流行的並且經驗上非常有效的技術,丟棄一些神經網路的節點。

如果我們通過對模型進行正則化可以解決決策置信度過高並且防止模型過擬合,那麼問題仍然存在:為什麼我們需要貝葉斯神經網路?  

簡言之,答案是:當前神經網路架構中缺少預測中的不確定性度量,但貝葉斯神經網路將其納入其中。

 發展現狀

深度神經網路已經成功的應用在很多領域,包括一些非常敏感的領域,像醫療,安防,欺詐性交易等等。這些領域嚴重依賴模型預測的準確度,並且甚至一個過度自信的決策可以導致大問題。並且,這些領域的資料集非常不平衡(百萬分之一的欺詐交易,接近5%的癌症陽性,不足百分之一的垃圾郵件),這種情況會導致模型在取樣的類別上發生過擬合現象。

從概率論的角度來說,使用點估計作為基於任何分類的權重是不合理的。另一方面,貝葉斯神經網路在過擬合現象上更加魯棒,並且能很好的從小的資料集當中學習。貝葉斯方法通過其引數以概率分佈的形式進一步提供不確定性估計(見圖1)。同時,通過使用先驗概率分佈來整合引數,在訓練期間在許多模型上計算平均值,這給網路提供正則化效果,從而防止過度擬合。

 貝葉斯神經網路的實用性

貝葉斯神經網路通過引數進行後驗推斷從而防止過擬合在理論上來說是一個有吸引力的方法  ,然而,之前從未成功地對CNN的核心(也稱為濾波器)進行分佈建模,可能是因為在實際應用中常用的大量引數和極大模型。

即使是一個數量非常少的引數集,利用貝葉斯神經網路進行推斷後驗估計也是一個非常困難的任務。通常使用模型後驗的近似值,變分推理是一種流行的方法。在這裡,人們將使用簡單的變分分佈(例如高斯分佈)對後驗進行建模,並嘗試使分佈的引數儘可能接近真實的後驗。這個通過最小化簡單的變分分佈和真實後驗分佈的Kullback-Leibler差異來完成。許多人過去都採用過這種方法來處理標準神經網路模型。

但是用變分方法來估計貝葉斯網路中的後驗估計計算量非常大。使用高斯近似分佈會大大增加模型引數的數量,而不會大幅增加模型容量。例如, Blundell et al. (2015),使用貝葉斯神經網路後驗近似的高斯分佈,並且模型引數的數量加倍,但報告與使用丟棄部分節點的傳統方法有著相同的預測效能。這使得該方法在實踐中不適合與CNN一起使用,因為引數數量的增加代價太大

 接下來我們該怎麼做?

有很多種方法構建貝葉斯神經網路(在第三篇部落格中我們會考慮到很多種)。然而,在這個系列中,我們將專注於使用Backprop的Bayes方法構建貝葉斯CNN。關於神經網路權重的貝葉斯精確推斷是難以處理的,因為引數的數量非常大,並且神經網路的功能形式不適合精確積分。因此我們將會把難以處理的真實後驗估計概率分佈p(w|D)用帶有變分的概率分佈q_θ(w|D)去做近似,它符合高斯分佈μ∈ℝ^ d和σ∈ℝ^ d的性質,表示為N(θ |μ,σ²),其中d是定義概率分佈的引數總數。。這些高斯變分後驗分佈的形狀由它們的方差 σ²決定,表達了一種對於每個模型引數估計的不確定性。

由Graves(2011)提出的上述的圖形直覺。

13894005-f3be2e175fcb801f

如果你不能準確的理解我們之前的篇章段落,沒關係。在下一篇部落格中我們將會介紹理解貝葉斯神經網路所用到的所有基礎知識。

 接下來的幾周我們期望做的事情:

我們將看到Backprop方法如何將Bayes有效地應用於CNN。我們將介紹應用兩個卷積運算的想法,一個用於均值,一個用於方差。

我們將會看到模型如何從多個簡單的模型平均中學習到更為豐富的表現形式和預測結果。

我們將看到,貝葉斯CNN的所提出的通用且可靠的變分推理方法可以應用於各種CNN架構,而不受其效能的任何限制。我們將在PyTorch中對模型進行編碼,並將結果與點估計網路進行比較。

我們將估計貝葉斯神經網路中的任意和認知不確定性。更進一步,我們將憑經驗證明不確定性如何降低,使得網路做出的決策隨著訓練準確性的提高而變得置信度更高。

我們將會學習到我們的方法通常使模型的引數增加兩倍,並且我們可以通過一個關於梯度的無偏的蒙特卡洛模擬方法訓練一個無窮集合。

我們將L1範數應用於訓練的模型引數並修剪非零值的數量。另外我們會用一個預訓練好的模型去微調模型從而達到減少模型引數而不改變模型準確度的目的。

最後,我們將會應用貝葉斯CNN應用到影象超解析度和生成對抗網路等任務,我們將結果與相應領域中的其他重要架構進行比較。

想要繼續檢視該篇文章相關連結和參考文獻?

點選【貝葉斯神經網路(系列)第一篇】或長按下方地址:

https://ai.yanxishe.com/page/TextTranslation/1465

AI研習社今日推薦:

卡耐基梅隆大學 2019 春季《神經網路自然語言處理》是CMU語言技術學院和計算機學院聯合開課,主要內容是教學生如何用神經網路做自然語言處理。神經網路對於語言建模任務而言,可以稱得上是提供了一種強大的新工具,與此同時,神經網路能夠改進諸多工中的最新技術,將過去不容易解決的問題變得輕鬆簡單。

加入小組免費觀看視訊:https://ai.yanxishe.com/page/groupDetail/33

13894005-4e89448051656915.jpg

相關文章