貝葉斯神經網路(系列):第二篇
打開今日頭條,查看更多圖片本文為 AI 研習社編譯的技術博客,原標題 :
Bayesian Neural Network Series Post 2: Background Knowledge
作者 | Kumar Shridhar
翻譯 | 微白o
校對 | 醬番梨 審核 | 約翰遜·李加薪 整理 | 立魚王
原文鏈接:
https://medium.com/neuralspace/bayesian-neural-network-series-post-2-background-knowledge-fdec6ac62d43
這是貝葉斯卷積網路系列八篇中的第二篇文章。
如需查看第一篇文章,請點擊:貝葉斯神經網路(系列)第一篇
讓我們將貝葉斯神經網路分解成貝葉斯和神經網路來開始。
貝葉斯推斷是概率論和統計學機器學習中的重要組成部分。 它是基於由著名統計學家托馬斯貝葉斯給出的貝葉斯定理。 在貝葉斯推斷中,隨著更多證據或信息的出現,假設概率得到更新。
另一方面,神經網路可以被認為是模仿人類大腦的端到端系統或一組演算法(不是每個人都相信,但它是基礎),並試圖在數據集中學習複雜的表示來輸出結果。
神經網路神經網路上已有非常好的教程。 我會試著簡要介紹一下神經網路與大腦的類比,並著重解釋我們以後要研究的概率論機器學習部分。
大腦的類比
感知器是由著名心理學家羅森布拉特(Rosenblatt)設想的描述神經元如何在我們的大腦中發揮作用的數學模型。 根據羅森布拉特的說法,神經元採用一組二進位輸入(附近的神經元),將每個輸入乘以連續值權重(每個附近神經元的突觸強度),並且如果 sum足夠大,則將這些加權輸入的總和閾值輸出為1,否則為0(同理神經元要麼有效,要麼無效)。
生物激勵神經網路(源地址:http://cs231n.github.io/neural-networks-1/)
人工神經網路
受到生物神經系統的啟發,人工神經網路(ANN)的結構被設計成像人腦一樣處理信息。 大量深度互連的處理單元(神經元)協同工作使神經網路能夠解決複雜的問題。 就像人類通過實例學習一樣,神經網路也是如此。 在生物系統中學習涉及對突觸連接的調整,其類似於神經網路中的權重更新。
神經網路由三層組成:輸入層為模型提供數據,隱藏層學習如何表示,輸出層輸出結果或預測。 神經網路可以被認為是一種端到端的系統,其可以在非常複雜的、不能由人教給機器的數據中找到一種特有的模式。
兩個隱藏層的神經網路
卷積神經網路休伯爾(Hubel)和威塞爾(Wiesel)在他們的層次模型中提到了一個神經網路,它在視覺皮層中有一個層次結構。 LGB(外側膝狀體)組成簡單細胞,然後組成複雜細胞,繼而形成低級超複合細胞,最終形成高級超複合細胞。
此外,低階超複雜細胞和高階超複雜細胞之間的網路在結構上類似於簡單細胞和複雜細胞之間的網路。 在該層次結構中,較高級的細胞通常傾向於選擇性地響應激勵模式的更複雜的特徵,低級細胞則傾向於簡單特徵。還有,較高階段的細胞具有較大的感受野,並且對激勵模式的位置變化不敏感。
與層次模型類似,神經網路起始層學習較簡單的特徵,如邊緣,後續的神經層學習複雜的特徵,如顏色,紋理等。此外,較高級的神經元具有較大的感受野,其構建在初始層上。然而,與多層感知器不同,其中來自同一層的所有神經元與下一層中的所有神經元連接,權重共享是卷積神經網路最主要的部分。示例:不像之前的做法,對於輸入圖像的每個像素(權重是28x 28),每個神經元都有不同的權重。現在神經元只有一個小的權重集(5 * 5),其應用於一大堆小的、相同大小的圖像的子集中。第一層後的神經層都是以相似的方式工作,採用在之前隱藏層中找到的「局部」特徵,而不是像素圖像。並且連續地看到圖像的較大部分,因為它們組合了關於圖像的越來越多的子集信息。最後,最後一層對輸出集進行了正確的預測。
如果數學上還不清楚的話,那麼很顯然上面的解釋非常有用:如果沒有這樣的約束,神經網路將必須為圖像的每個部分消耗大量時間學習完全相同的簡單事物(例如檢測邊緣,角落等)。 但是由於存在約束,只有一個神經元需要學習每個簡單的特徵,並且總體上權重要少得多,它可以做得非常快! 此外,由於這些特徵的位置(精確到像素)無關緊要,神經元基本上可以跳過圖像的相鄰子集———即子採樣,現在稱為池化類型———當應用權重時,進一步減少了訓練時間。 增加這兩種類型的層——— 卷積層和池化層,是卷積神經網路(CNN / ConvNets)與普通舊的神經網路的主要區別。
機器學習的概率論方法為了簡要敘述機器學習的概率論方法,我們把它分成概率論和機器學習分別討論。
機器學習只是開發一些演算法,在給定某些數據的情況下執行某些任務。 它包括從非結構化數據中查找模式來對電子郵件分類,從語言理解到自動駕駛汽車。 基於觀察到的數據,通過機器學習方法進行一些推斷。 訓練模型從觀察到的數據(訓練數據)中學習一些模式和假設,並對未觀察到的數據(測試數據)進行推斷。由於每個推理都帶有預測置信度,因此得出結論。 然而,由於多種原因,模型的預測可能不準確:輸入雜訊,雜訊靈敏度,測量誤差,非最佳超參數設置等。
機器學習中的概率模型表明,所有形式的不確定性都不是真正結果,而更像是概率,因此我們可以用概率論的知識來回答所有問題。 概率分布用於模擬學習,不確定性和未觀察到的狀態。 在觀察數據之前定義先驗概率分布,一旦觀察到數據就開始學習,並且數據分布變為後驗分布。 貝葉斯學習的基礎就是用概率論的知識從數據中學習。
不確定性在貝葉斯學習中起著重要作用,來仔細研究不確定性的類型:
貝葉斯學習方法中的不確定性
(神經)網路中的不確定性是衡量模型預測的準確程度的指標。 在貝葉斯模型中,存在兩種主要的不確定性類型:偶然不確定性和認知不確定性。
偶然不確定性衡量了觀測中固有的雜訊。 這種類型的不確定性存在於數據收集方法中,比如伴隨數據集的均勻的感測器雜訊或運動雜訊。 即使收集更多數據,也不能減少不確定性。
認知不確定性是模型本身造成的不確定性。 給定更多數據可以減少這種不確定性,並且通常稱為模型不確定性。偶然不確定性可以進一步分為同方差不確定性,不同輸入下不變的不確定性,以及取決於模型輸入的異方差不確定性,其中一些輸入可能具有比其他輸入更多的雜訊輸出。 異方差的不確定性尤為重要,它可以防止模型的輸出過於優化。
可以通過在模型參數或模型輸出上加入概率分布來估計不確定性。 通過在模型的權重上加入先驗分布,然後嘗試捕獲這些權重在給定數據的情況下變化多少來對認知不確定性建模。 另一方面,偶然不確定性,是通過在模型的輸出上加入分布來建模的。
現在,我們對概率機器學習基礎,貝葉斯學習和神經網路有了一個很好的認識。 將貝葉斯方法和神經網路結合看起來是一個不錯的想法,但在實踐中,訓練貝葉斯神經網路是很難的。 訓練神經網路最流行的方法是反向傳播,我們用它來訓練貝葉斯神經網路。 我們來詳細介紹一下這些方法。
反向傳播魯姆哈特在1986年提出了神經網路中的反向傳播,它是訓練神經網路最常用的方法。 反向傳播是一種根據網路權重計算梯度下降的技術。 它分兩個階段運行:首先,輸入特徵通過網路的正向傳播,以計算函數輸出,從而計算與參數相關的損失。 其次,訓練損失對權重的導數從輸出層傳回輸入層。這些已計算的導數還用於更新網路的權重。 這是一個連續的過程,權重在每次迭代中不斷更新。
儘管反向傳播很受歡迎,但是在基於反向傳播的隨機優化中存在許多超參數,其需要特定的調整,例如學習率,動量,權重衰減等。找到最優值所需的時間與數據大小成比例。 對於使用反向傳播訓練的網路,僅在網路中實現權重的點估計。 結果,這些網路得出了過度的預測結果,並沒有考慮參數的不確定性。 缺乏不確定性方法會使(神經)網路過擬合併需要正則化。
神經網路的貝葉斯方法提供了反向傳播方法的缺點,貝葉斯方法自然地解釋了參數估計中的不確定性,並且可以將這種不確定性加入到預測中。
此外,對參數值取均值而不是僅選擇單點估計值使得模型對過擬合具有魯棒性。
過去已經提出了幾種用於貝葉斯神經網路學習的方法:拉普拉斯近似,MC丟失和變分推理。 我們使用反向傳播的貝葉斯來完成的工作,接下來進行說明。
反向傳播的貝葉斯
貝葉斯反向傳播演算法石油Blundell等人提出的,用於學習神經網路權重的概率分布。 整個方法可歸納如下:
該方法不是訓練單個網路,而是訓練網路集合,其中每個網路的權重來自共享的學習概率分布。 與其他集合方法不同,該方法通常僅使參數的數量加倍,然後使用無偏的蒙特卡羅梯度估計來訓練無窮集合。
通常,對神經網路權重的精確貝葉斯推斷是難以處理的,因為參數的數量非常大,並且神經網路的函數形式不適合精確積分。 相反,我們採用變分近似而不是蒙特卡羅方法來找到似然貝葉斯後驗分布。
好了,至此我們已經說通了。 那再深入一點,因為這個方法構成了我們方法的基礎,將在後面的博客中進行解釋。 我們首先需要理解為什麼分布變得難以處理以及需要近似它。 讓我們從貝葉斯定理開始:
貝葉斯定理
如上所述,根據貝葉斯定理,我們試圖在給定一些數據x的情況下找到模型參數θ的概率。 這被稱為後驗,我們想計算它。 現在分子的P(θ)是我們的先驗(在看到數據之前的估計)和P(x |θ)這是可能性並且顯示數據分布。 這兩個值都很容易計算。 分母P(x)是證據,它顯示數據x是否是從模型生成的。 現在,事情有點棘手了, 我們只能通過整合所有可能的模型值來計算:
可見,這個積分使得整個過程難以處理,解決它的唯一方法是近似它。 因此,我們將使用變分推理來近似函數形式。
還有其他方法可用於近似積分,而流行的方法是馬爾可夫鏈蒙特卡羅和蒙特卡洛丟棄法。
變分推論
假設我們有所有的密度函數,並且想估計它。 我們首先選擇一個分布(可以是高斯分布,因為它最常用),一直修改到非常接近我們想要的函數,即後驗概率。 我們希望儘可能接近真正的分布,其是難以直接處理的,我們可以通過最小化兩者之間的相對熵來完成。
因此,我們有一個函數P(w|D)(上面得到的後驗概率),我們想用另一個分布q(w|D)用一些變分參數θ來近似它。
注意到此處的符號已更改,以使其與費利克斯 · 勞曼伯格概率深度學習保持一致:反向傳播的貝葉斯理論可以很好地解釋它。
相對熵使問題成為優化問題,並可以最小化為:
一張圖很好地展示如何近似難處理的後驗概率
來源:https://medium.com/neuralspace/probabilistic-deep-learning-bayes-by-backprop-c4a3de0d9743
但這不是結束。 如果我們解決相對熵,由於存在積分函數,又出現了一個難以處理的方程:
源地址:https://arxiv.org/abs/1806.05978
現在我們已經無法近似一個近似函數了。 因此,我們可以從近似函數q(w|D)中進行採樣,因為從近似函數q(w|D)中採樣權重要比難處理的真後驗函數p(w | D)容易。 在這樣做時,我們得到如下所述的易處理函數:
這些採樣權重w,被用在神經網路的反向傳播中去學習後驗分布。
現在,正如我們所看到的,可以通過反向傳播方法訓練貝葉斯神經網路,並且貝葉斯神經網路能自動合併正則化。 我們將在接下來的博客中學習使用變分推理方法的貝葉斯卷積神經網路。 我們在卷積中使用兩個操作(更多細節在即將發布的博客中或在此處閱讀),因此與基於CNN的點估計相比,貝葉斯卷積神經網路的參數數量翻倍。 因此,為了減少網路參數,我們精簡了神經網路架構,讓我們看看它是如何完成的。
反模型權重剪枝模型剪枝減少了深度神經網路中各種連接矩陣的稀疏性,從而減少了模型中有價值的參數的數量。模型剪枝的整個想法是減少參數的數量而不會損失模型的準確性。 這減少了使用正則化的大型參數化模型的使用,並促進了密集連接的較小模型的使用。 最近的一些工作表明,網路可以實現模型尺寸的大幅減少,同時精度也相差無幾。模型剪枝在降低計算成本,推理時間和能量效率方面具有幾個優點。 得到的剪枝模型通常具有稀疏連接矩陣。 使用這些稀疏模型的有效推斷需要有能載入稀疏矩陣並且/或者執行稀疏矩陣向量運算的專用硬體。 但是,使用新的剪枝模型可以減少總體內存使用量。
有幾種方法可以實現剪枝模型,最常用的方法是將低貢獻權重映射到零並減少整體非零值權重的數量。 這可以通過訓練大型稀疏模型並進一步修剪來實現,這使其與訓練小型密集模型相當。
通過應用L_0(L-zero)範數可以形式化為大多數特徵賦予權重零和僅向重要特徵分配非零權重,因為它對所有非零權重應用恆定懲罰。L_0範數可以被認為是特徵選擇器範數,其僅將非零值分配給重要的特徵。 然而,L_0範數是非凸的,因此,不可微分使得它成為NP-hard問題並且只能在P = NP時有效地求解。L_0範數的替代是L_1範數,其等於絕對權重值的總和。 L_1範數是凸的,因此是可微分的,可以用作L_0範數的近似值。 L_1範數通過令大量係數等於零而充當稀疏促進正則化器,是一個很好的特徵選擇器。
這篇博客只是為了提供以後的博客中使用的術語和概念的背景知識,如果我遺漏了什麼,請告訴我。
如果您想提前閱讀,請查看論文工作或論文。
PyTorch中的實現點擊閱讀原文可獲得。
如需查看第一篇文章,請點擊:貝葉斯神經網路(系列)第一篇
想要繼續查看該篇文章相關鏈接和參考文獻?
點擊【貝葉斯神經網路(系列):第二篇】或長按下方地址:
https://ai.yanxishe.com/page/TextTranslation/1466
AI研習社今日推薦:雷鋒網雷鋒網雷鋒網
卡耐基梅隆大學 2019 春季《神經網路自然語言處理》是CMU語言技術學院和計算機學院聯合開課,主要內容是教學生如何用神經網路做自然語言處理。神經網路對於語言建模任務而言,可以稱得上是提供了一種強大的新工具,與此同時,神經網路能夠改進諸多任務中的最新技術,將過去不容易解決的問題變得輕鬆簡單。
加入小組免費觀看視頻:https://ai.yanxishe.com/page/groupDetail/33
※飛利浦、微軟打造3D全息增強現實手術室,助力圖像引導微創療法
※「AI肺病診斷」玩家眾多,假陽性率高企受行業質疑
TAG:雷鋒網 |