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