0
本文作者: AI研習(xí)社-譯站 | 2018-07-31 14:09 |
雷鋒網(wǎng)按:本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題為 Improving learning through efficient imformation propagation in Deep Neural Networks , 作者為 Mirco Milletarì 。
翻譯 | 李鋒 整理 | 余杭
目前,前饋神經(jīng)網(wǎng)絡(luò) (FFN) 已經(jīng)得到了廣泛的應(yīng)用,尤其是在圖像和語音識別上功能突出。盡管取得了這些經(jīng)驗(yàn)上的成功,但對底層設(shè)計(jì)理論的理解仍然有限。在 FFN 中找到準(zhǔn)確的層數(shù)和單元數(shù)需要反復(fù)試驗(yàn),而不是一個非常明確的科學(xué)問題。同樣的道理也適用于設(shè)計(jì)新穎的架構(gòu)或?qū)ΜF(xiàn)有的架構(gòu)進(jìn)行優(yōu)化。理解 FFN 的工作原理以及何時使用 FFN 是一個明確的任務(wù),近期這項(xiàng)任務(wù)得到了科學(xué)界的廣泛關(guān)注。
在這篇論文(目前同行評審)中,我們考慮了這個問題的特定方面,即信息如何通過網(wǎng)絡(luò)來進(jìn)行處理和傳播以及信息如何與「激活函數(shù)」的選擇聯(lián)系在一起。在文章中,我將嘗試使讀者明白,像 sigmoid, tanh 等等激活函數(shù)不能用于 FNN 的隱層中,因?yàn)樗麄儠?dǎo)致嚴(yán)重的不一致性,最終減緩或阻止學(xué)習(xí),最著名的是在回溯過程中梯度消失的問題。利用概率模型,我們證明了激活需要滿足 a(x)=x sigmoid(beta x) 的形式,正如 Ramachandran 等人此前提出的,通過強(qiáng)化學(xué)習(xí)訓(xùn)練大規(guī)模的搜索算法。這種看似無害的差異在神經(jīng)網(wǎng)絡(luò)如何處理和傳播信息隱藏了更深的含義,即是在上述提及的論文中被忽視的。
好在 a(x) 不受著名的梯度消失的問題的影響,因?yàn)楹笳咄ㄟ^簡單的向前操作存在著一系列的錯誤。Hayou 等人在最近的一篇論文中也得出了同樣的結(jié)論,文中從隨機(jī)神經(jīng)網(wǎng)絡(luò)的角度研究了這個問題。
我將在文中講述相關(guān)數(shù)學(xué)的一個類比和簡單的維度論證。
信息通過隨機(jī)門傳送
思考一下概述的過程:我們想要將信息從一端傳送到另一端。我們不能直接看到門,但我們知道消息在給定內(nèi)容的情況下傳輸 (s=1) 或不傳輸 (s=0)。例如,門可以執(zhí)行信息的第一次篩選來查看是否是垃圾郵件。由于我們不知道決策過程的細(xì)節(jié),我們只能得到 s={0,1} 的概率。
一個類似神經(jīng)元的門。 下標(biāo)為 n 的輸入信號 X 進(jìn)入系統(tǒng),與偏置量線性組合為 h。s 是突觸結(jié)點(diǎn)的狀態(tài):它負(fù)責(zé)轉(zhuǎn)換信號 s=1 還是 s=0。由于狀態(tài)依賴于輸入的特定表示形式,所以應(yīng)該將其視為一個隨機(jī)變量。
最終,我們對接收信息感興趣,閱讀信息內(nèi)容并且將部分內(nèi)容轉(zhuǎn)發(fā)給別人。門轉(zhuǎn)送信息的概率由 sigmoid 的激活值決定(如果我們用 s={-1,1} 編碼,那就是 tanh),然而這不是信息本身而是信息是否是垃圾郵件的信任問題。如果我們只是想要知道是否是垃圾郵件,這是可行的,但我們想要準(zhǔn)確知道信息的內(nèi)容,這還遠(yuǎn)遠(yuǎn)不夠。想象下你的門衛(wèi)告訴你:「順便告訴你,今天你收到了十封信件,其中 4 封是垃圾信件,我已經(jīng)扔了。但剩余的 6 封可能是重要的……」這段話的用處有多大呢?
現(xiàn)在考慮一個更復(fù)雜的垃圾郵件過濾系統(tǒng)。我們認(rèn)為這是必要的,因?yàn)槔]件非常微妙,一個單獨(dú)的門不能勝任分類垃圾郵件的工作。我們以有序的方式安排這些端口,那么一個端口的輸出就是另外一個端口的輸入。假設(shè)每個端口都設(shè)置了 sigmoid 函數(shù):唯一能通過網(wǎng)絡(luò)傳輸?shù)氖敲總€端口對信息是否是垃圾郵件的信任,而不是信息本身。的確,有一類算法類似于我剛才描述的信念傳播 (BP)。如果每一層只有一個門,那么很明顯,這個方法不會奏效:接收門不能判定出原始信息是否被正確地分類成垃圾信息有兩個原因:第一,門不能讀取原始信息,第二,它的未來決策只是基于一個意見。一種解決方式是收集更多的意見,即在同一層增加更多的門:現(xiàn)在我們可以通過監(jiān)聽多種意見來猜測出正確的解決方案。另一種解決方式是通過一定概率來將消息傳送給下一層。很明顯,這種方式要更有效得多,因?yàn)槊總€門都可以考慮到來自前一層的意見和消息本身,從而直接判定消息是否是垃圾郵件。
你可能會因此以下幾個方面爭論:在監(jiān)督學(xué)習(xí)框架中,我們在訓(xùn)練階段給出答案。即使我們只給出一個置信水平,我們?nèi)匀豢梢酝ㄟ^迭代的方式來達(dá)到目的。這里有兩個注意事項(xiàng):第一,這可能是一個緩慢的過程,第二,這種方法存在一個基本的數(shù)學(xué)問題。我很快將會給出解釋,但我首先要說的是,當(dāng)使用 ReLu 時不存在上述問題;事實(shí)上這個函數(shù)傳遞的不是概率而是消息本身!ReLu 的問題是,只有門完全確定信息不是垃圾郵件時才會傳送;這意味著我們可能會拒絕接收一個實(shí)際上很重要的消息,因?yàn)槲覀儗ψ畛醯臎Q定過于自信。
那么如何使線性整流函數(shù)(ReLu)更靈活呢?這里我將使用一個快捷方式(可以在論文中找到正式的推導(dǎo)),將 ReLu 改寫為:
其中,最后一個函數(shù)是單位階躍函數(shù),僅當(dāng) x> 0 時取值不為零。在物理學(xué)中,該函數(shù)與 S 型函數(shù)(稱為費(fèi)米-狄拉克分布)有關(guān)
其中 β 是與系統(tǒng)噪聲相關(guān)的因素,而在物理學(xué)中它與溫度成反比(溫度就像噪聲一樣?。_@種激活類似于通過系統(tǒng)傳播的信息流。它不僅傳輸正確的數(shù)量,而且還額外提供了我們需要的靈活性。如果你想知道如何驗(yàn)證這些斷言,請查看下面的技術(shù)細(xì)節(jié)。
確保維度正確
最后來看另一個支持上面討論的信息流圖的簡單論證。你可能記得物理課上有很多數(shù)量都附帶了一個物理「維度」。在下文中,我將像物理學(xué)家常做的一樣使用術(shù)語「維度」,用以指稱用來衡量一定數(shù)量的單位。事實(shí)上,說我喝了一個水并沒有多大意義;通常我們需要增加「升」或「杯」等單位。前者是標(biāo)準(zhǔn)度量,而后者總是可以涉及前者,例如,一杯水約為 240 毫升(或更多,這取決于杯子的大?。。?。
我們輸入進(jìn)神經(jīng)網(wǎng)絡(luò)的不同特征也具有維度,例如,公寓的大?。ㄆ椒矫祝?,價(jià)格(美元/歐元等),像素的亮度(坎德拉)等等……在數(shù)字世界中,我們可以使用標(biāo)準(zhǔn)信息單位:比特。確保計(jì)算結(jié)果維度正確通常是首先要檢查的。這一基本步驟似乎經(jīng)常被忽視。考慮我們感興趣的情況,一個帶有S形激活函數(shù)的前饋神經(jīng)網(wǎng)絡(luò);這在下面以簡化的形式展現(xiàn)。 想象一下,所有輸入X都是以比特為單位測量的,那么第一層中的每個單元接收具有比特維度的輸入。
「嬰兒網(wǎng)絡(luò)」,以顯示維度不匹配。
這些量的線性組合仍然具有比特維數(shù)。我們現(xiàn)在將 h 輸入 S 型「非線性」函數(shù),這實(shí)際上是一個概率(見上圖),因此必須是無維度的。因此,我們需要引入維數(shù) [1/比特] 的常數(shù),使得 a=sigmoid(β h)是無維度的。這個常數(shù)在機(jī)器學(xué)習(xí)應(yīng)用中經(jīng)常被設(shè)置,大家?guī)缀跬浟怂拇嬖冢∪绻愣稽c(diǎn)統(tǒng)計(jì)力學(xué),你會發(fā)現(xiàn)β是溫度的倒數(shù)(以玻爾茲曼常數(shù)為單位),但這里它只是一個噪聲的度量(參考之前的討論)。
我們現(xiàn)在進(jìn)入第二層;如果遵循深度學(xué)習(xí)的標(biāo)準(zhǔn)過程,我們將 S 型激活函數(shù)輸入進(jìn)新單位,即 m1 是 a1 和 a2 的線性組合。如果你到目前為止沒有走神,現(xiàn)在應(yīng)該會發(fā)現(xiàn)這個問題:新的輸入(a)是無量綱的!采用線性組合,你仍然可以獲得無量綱數(shù)量(m1)?,F(xiàn)在出現(xiàn)了真正的問題:S 型函數(shù)仍然需要無量綱,這意味著比例常數(shù) β 也需要無量綱!因此,在一層中,我們以位為單位測量信息和噪音,并且之后的層中所有內(nèi)容都是無量綱的!這種維度不一致是出現(xiàn)問題的信號!在論文中我們說明了這個簡單的錯誤導(dǎo)致了梯度消失的問題!不言而喻,ReLu 和 ESP 都不會遇到這個問題,因此不會有梯度消失!然而,ReLu 遇到了我們之前討論的問題,另見下面的技術(shù)說明以獲得更好的解釋。
我希望你明白的是,如果我們想要通過深度神經(jīng)網(wǎng)絡(luò)獲得快速可靠的結(jié)果,還有許多簡單的細(xì)節(jié)需要修改。像這里描述的小錯誤會導(dǎo)致網(wǎng)絡(luò)復(fù)雜度增加,最終導(dǎo)致性能變差。建立神經(jīng)網(wǎng)絡(luò)要遵循明確的設(shè)計(jì)原則而不是試錯,就可以降低復(fù)雜度,并能幫助我們更好理解系統(tǒng)是如何以及何時工作的。
如果你對數(shù)學(xué)與細(xì)節(jié)感興趣,請查看這里。另外,你也可以在我的 GitHub 頁面上找到代碼和運(yùn)行結(jié)果。
技術(shù)說明:我在這里補(bǔ)充一些細(xì)節(jié),你可以忽略這一部分!
要證明上述理論,需要研究海森矩陣的特征值分布,即損失函數(shù)的二階導(dǎo)數(shù)矩陣;你可以將它視為損失流形局部曲率的度量。這讓我們深入了解學(xué)習(xí)的過程。海森矩陣特征值顯示了不動點(diǎn)是極小值(全為正值)極大值(全為負(fù)值)還是馬鞍形(有正有負(fù))。最后一個選項(xiàng)對應(yīng)于零特征值,因此為零行列式。如果- Z -表示所有層中的權(quán)重( W ),偏差( b ),和噪音( β )集。海森矩陣:
其中拉丁字母指標(biāo)在層上運(yùn)行,而希臘字母指標(biāo)在張量 z 的不同分組上運(yùn)行。進(jìn)一步定義一個不動點(diǎn)的(均一化)指數(shù),定義為 海森矩陣的負(fù)特征值的數(shù)量(分?jǐn)?shù))。
其中 I()是指標(biāo)函數(shù), λ 是第 j 個特征值。這意味著最小值具有索引值 0 ,而最大值具有索引值 1。我們還引入第二個索引以跟蹤零特征值的分?jǐn)?shù)。我們可以將零特征值描繪成來自小曲率區(qū)域(頂峰)或彎曲; 本質(zhì)上是通過檢查高階導(dǎo)數(shù)確定的,但這超出了本文的范圍。索引簡單地定義為:
在此分析之后,我們發(fā)現(xiàn) ReLu 總是在學(xué)習(xí)過程中被排除在梯度下降之外的方向。此外,當(dāng)尋找成本函數(shù)的靜止點(diǎn)時,ReLu(雙曲正切函數(shù)和 S 型函數(shù))通常不能找到那些與 ESP 相反的經(jīng)驗(yàn)誤差最小化的點(diǎn);經(jīng)驗(yàn)誤差只是標(biāo)記數(shù)據(jù)集中的值與我們的預(yù)測之間的差異。
號外號外~
一個專注于
AI技術(shù)發(fā)展和AI工程師成長的求知求職社區(qū)
誕生啦!
歡迎大家訪問以下鏈接或者掃碼體驗(yàn)
https://club.leiphone.com/page/home
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。