1
本文作者: AI科技評(píng)論 | 2016-06-17 21:58 |
國(guó)際機(jī)器學(xué)習(xí)大會(huì)(ICML)即將于6月19日-24日在紐約召開(kāi),眾多頂尖的科研人員與公司的人工智能實(shí)驗(yàn)室提交了最新研究論文。在此,雷鋒網(wǎng)為大家分享著名學(xué)者 Yoshua Bengio 與谷歌 DeepMind 研究科學(xué)家等人合作的研究論文。最近業(yè)界對(duì)于“閘門(mén)”架構(gòu)重新產(chǎn)生了興趣,這種架構(gòu)可以應(yīng)用在圖片或視頻自動(dòng)標(biāo)題生成等廣泛領(lǐng)域,雖然這項(xiàng)方法獲得了成功,但是還存在關(guān)鍵問(wèn)題。本片論文以引入噪音——看似違反直覺(jué)的“反人類(lèi)”方法——解決了傳統(tǒng)激活函數(shù)飽和效應(yīng)難以?xún)?yōu)化的問(wèn)題。
今年8月,谷歌 DeepMind CEO Demis Hassabis 也將參與雷鋒網(wǎng)舉辦的人工智能與機(jī)器人創(chuàng)新大會(huì)。
Yoshua Bengio:人工智能領(lǐng)域的知名學(xué)者,在神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)領(lǐng)域的重要貢獻(xiàn)廣為人知,目前在蒙特利爾大學(xué)任職。
Caglar Gulcehre:蒙特利爾大學(xué)LISA實(shí)驗(yàn)室博士生,導(dǎo)師為Yoshua Bengio,研究領(lǐng)域包括機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、自然語(yǔ)言處理、機(jī)器視覺(jué)等。
Misha Denil:谷歌 DeepMind 研究科學(xué)家,曾在牛津大學(xué)獲得博士學(xué)位。
Marcin Moczulski:牛津大學(xué)博士生。
《噪音激活函數(shù)》
摘要
神經(jīng)網(wǎng)絡(luò)中常見(jiàn)的非線性激活函數(shù)會(huì)為訓(xùn)練帶來(lái)困難,由于激活函數(shù)的飽和行為,可能會(huì)隱藏對(duì)于vanilla-SGD(只使用一階梯度)來(lái)說(shuō),不可見(jiàn)的依存性。一個(gè)很好的例子就是,一些閘門(mén)機(jī)制使用軟飽和激活函數(shù)來(lái)模擬數(shù)字邏輯電路的離散開(kāi)關(guān)。我們提出注入合適的噪音,從而讓梯度容易求導(dǎo),即便是激活函數(shù)的無(wú)噪音應(yīng)用會(huì)帶來(lái)零梯度。大噪音會(huì)主導(dǎo)無(wú)噪音梯度,并讓隨機(jī)梯度下降可以進(jìn)行更多探索。通過(guò)只在激活程序的問(wèn)題部分增加噪音,我們讓優(yōu)化過(guò)程可以探索激活程序中退化(飽和)部分和良好部分的邊界。我們還建立了聯(lián)接來(lái)模擬退火,當(dāng)噪音的數(shù)量退火下降,從而讓優(yōu)化硬目標(biāo)函數(shù)更容易些。通過(guò)實(shí)驗(yàn)我們發(fā)現(xiàn),用噪音變量替換飽和激活函數(shù)可以在很多情況下幫助優(yōu)化,在不同的數(shù)據(jù)庫(kù)和任務(wù)中產(chǎn)生頂尖的或者非常有競(jìng)爭(zhēng)力的結(jié)果,尤其是在訓(xùn)練看起來(lái)最為困難的時(shí)候,例如,當(dāng)必須通過(guò)課程學(xué)習(xí)來(lái)獲得好結(jié)果的時(shí)候。
1、簡(jiǎn)介
類(lèi)似ReLU和Maxout(Goodfellow等,2013)單元等分段線性激活函數(shù)的引入,對(duì)深度學(xué)習(xí)帶來(lái)了深遠(yuǎn)的影響,并且成為一種催化劑,讓更深的網(wǎng)絡(luò)訓(xùn)練成為可能。多虧了 ReLU,我們第一次看到了純監(jiān)督下的深度網(wǎng)絡(luò)可以進(jìn)行訓(xùn)練(Glorot等,2011),而使用 tanh 非線性函數(shù)只能訓(xùn)練較淺的網(wǎng)絡(luò)。關(guān)于最近興起的對(duì)于這類(lèi)分段線性激活函數(shù)(Glorot等,2011)的興趣,一個(gè)說(shuō)得通的理論是,因?yàn)樗鼈兪褂肧GD和反向傳播算法進(jìn)行優(yōu)化,比使用 sigmoid 和 tanh 等平滑激活函數(shù)進(jìn)行優(yōu)化更加容易。最近我們可以在計(jì)算機(jī)視覺(jué)領(lǐng)域中看到分段線性函數(shù)的成功案例,這個(gè)領(lǐng)域中 ReLU 已經(jīng)成為了卷積網(wǎng)絡(luò)的默認(rèn)之選。
我們提出了一種新技術(shù)來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò),當(dāng)其輸入很大時(shí)使用高度飽和的激活函數(shù)。主要的方法是在激活函數(shù)中的飽和狀態(tài)注入噪音,并學(xué)習(xí)噪音等級(jí)。使用這種方法讓我們發(fā)現(xiàn),我們可以訓(xùn)練帶有比之前更廣泛的激活函數(shù)家族的神經(jīng)網(wǎng)絡(luò)。在激活函數(shù)中加入噪音已經(jīng)在 ReLU 單元中有人考慮過(guò),并且在前饋網(wǎng)絡(luò)和 Boltzmann 機(jī)器中有過(guò)探索(Bengio等,2013;Nair & Hinton,2010)來(lái)鼓勵(lì)單元進(jìn)行更多探索,讓優(yōu)化更加容易。
在這之后,最近重現(xiàn)了一股對(duì)于更加制作精良的“閘門(mén)”架構(gòu)的興趣,例如LSTM(Hochreiter & Schmidhuber,1997)和GRU(Cho等,2014),以及對(duì)于包含神經(jīng)注意機(jī)制的興趣,這些機(jī)制已經(jīng)用在NTM(Graves等,2014)、記憶網(wǎng)絡(luò)(Weston等,2014)、自動(dòng)圖片標(biāo)題(Xu等,2015b)、視頻標(biāo)題生成(Yao等,2015)以及廣泛的應(yīng)用領(lǐng)域(LeCun等,2015)。這些研究中經(jīng)常出現(xiàn)的主線是對(duì)于軟飽和非線性的使用,例如signoid或者softmax函數(shù),來(lái)模擬數(shù)字邏輯電路的硬決策。雖然這項(xiàng)方法獲得了成功,但是還有兩項(xiàng)關(guān)鍵問(wèn)題:
1、由于非線性函數(shù)仍然飽和,就會(huì)有消亡的梯度信息從閘門(mén)流入的問(wèn)題;
2、由于非線性函數(shù)只會(huì)軟飽和,它們沒(méi)法讓我們實(shí)現(xiàn)硬決策。
雖然閘門(mén)經(jīng)常在軟飽和狀態(tài)運(yùn)作(Karpathy等,2015;Bahdanau等,2014;Hermann等,2015),架構(gòu)使得它們沒(méi)法完全處于開(kāi)放或關(guān)閉的狀態(tài)。我們采用了一種新的方法,來(lái)解決這兩項(xiàng)問(wèn)題。我們的方法通過(guò)使用硬飽和非線性函數(shù)來(lái)解決第二個(gè)問(wèn)題,這讓閘門(mén)可以在飽和的時(shí)候可以做出完全開(kāi)或關(guān)的決定。由于閘門(mén)可以是完全開(kāi)放或關(guān)閉的,軟閘門(mén)架構(gòu)的泄露性也不會(huì)導(dǎo)致信息丟失。
通過(guò)引入硬飽和非線性函數(shù),我們加劇了梯度流的問(wèn)題,由于在飽和狀態(tài)的梯度現(xiàn)在是精確的零,而非可以忽略的。然而,通過(guò)引入噪音到激活函數(shù)中,函數(shù)可以基于飽和量級(jí)而增長(zhǎng),我們鼓勵(lì)隨機(jī)探索。我們的研究基礎(chǔ)是,現(xiàn)有的對(duì)分段線性激活函數(shù)中注入噪音的方法研究(Bengio等,2013;Nair&Hinton,2010;Xu等,2015a)。
在測(cè)試的時(shí)候,激活函數(shù)里的噪音可以用其期望值代替。我們的實(shí)驗(yàn)顯示,結(jié)果產(chǎn)生的決定論網(wǎng)絡(luò)在許多類(lèi)型的任務(wù)中都優(yōu)于軟飽和網(wǎng)絡(luò),只要在現(xiàn)有的訓(xùn)練代碼中簡(jiǎn)單地直接替代非線性函數(shù),就能實(shí)現(xiàn)頂尖的運(yùn)行表現(xiàn)。
我們提出的技術(shù)解決優(yōu)化的難度,以及測(cè)試時(shí)針對(duì)閘門(mén)單元硬激活的難度,而且我們提出了一種進(jìn)行神經(jīng)網(wǎng)絡(luò)模擬退火的方法。
Hannun等(2014)和Le等(2015)使用了帶有 RNN 的 ReLU 激活函數(shù)。在這篇論文中我們成功證明了,使用帶有閘門(mén)循環(huán)神經(jīng)網(wǎng)絡(luò)(例如 LSTM 和 GRU)的分段線性激活函數(shù)是可行的。
2、激活函數(shù)飽和化
定義 2.1. (激活函數(shù))
激活函數(shù)是函數(shù) h : R → R,在幾乎所有地方都是可微的。
定義 2.2. (飽和)
一個(gè)具有導(dǎo)數(shù) h’(x) 的激活函數(shù) h(x) ,如果當(dāng) x→∞(resp. x → -∞)時(shí),其極限為0,則被稱(chēng)為右(resp. 左)飽和。如果一個(gè)激活函數(shù)既左飽和也右飽和,則被稱(chēng)為飽和(沒(méi)有資格)。
在循環(huán)神經(jīng)網(wǎng)絡(luò)中使用最常見(jiàn)的激活函數(shù)(例如 tanh 和 sigmoid)是飽和的。而且,它們是軟飽和,意味著他們至在極限實(shí)現(xiàn)飽和。
定義 2.3. (硬和軟飽和)
令 c 為一個(gè)常數(shù),使得 x > c 意味著 h’(x) = 0,而且當(dāng) x < c 意味著 h’(x) = 0,?x,則為左硬飽和。我們稱(chēng) h(·) 為硬飽和(沒(méi)有資格)如果它既左硬飽和、又右硬飽和。如果一個(gè)飽和激活函數(shù)只有在極限實(shí)現(xiàn)零梯度,我們稱(chēng)其為軟飽和。
我們可以使用一個(gè)關(guān)于0的一階泰勒展開(kāi),并將結(jié)果修剪到適合的范圍內(nèi),從而創(chuàng)建一個(gè)硬飽和版本的軟飽和函數(shù)。
舉個(gè)例子,圍繞0展開(kāi) tanh 和 sigmoid,x ≈ 0,我們分別獲得 tanh 和 sigmoid 的線性函數(shù) ut 和 us:
sigmoid (x) ≈ us (x) = 0.25x + 0.5 (1)
tanh (x) ≈ ut(x) = x. (2)
將線性近似結(jié)果修剪為:
hard - sigmoid (x) = max ( min ( us (x),1),0) (3)
hard - tanh (x) = max ( min ( ut (x),1),-1) (4)
這樣創(chuàng)建的目的是為了引入圍繞 0 的線性行為,讓梯度在單元不飽和的時(shí)候容易流入,同時(shí)在飽和狀態(tài)提供清晰的決策。
圖1:不同激活函數(shù)的導(dǎo)數(shù)圖。
硬 sigmoid 和硬 tanh 之所以能夠進(jìn)行清晰決策,是付出了飽和狀態(tài)正好 0 梯度的代價(jià)。這會(huì)在訓(xùn)練時(shí)帶來(lái)困難:激活前(在非線性前)一個(gè)很小但非無(wú)窮小的變化會(huì)幫助減少目標(biāo)函數(shù),導(dǎo)數(shù)則不會(huì)在梯度中反應(yīng)出來(lái)。
在論文的其余部分我們會(huì)使用 h(x) 來(lái)指代一個(gè)一般的激活函數(shù),使用 u(x) 來(lái)標(biāo)記其以關(guān)于 0 的一階泰勒展開(kāi)為基礎(chǔ)的線性化。當(dāng) x ≤ -2 或 x ≥ 2 時(shí),硬 sigmoid 飽和;當(dāng) x ≤ -1 或 x ≥ 1 時(shí),硬 tanh 飽和。我們用 xt 標(biāo)記閾值。閾值的絕對(duì)值針對(duì)硬 sigmoid 時(shí)為 xt = 2,針對(duì)硬 tanh 時(shí)為 xt = 1。
高度非平滑梯度下降軌跡可能將參數(shù)帶入一個(gè)狀態(tài),使得一個(gè)單元針對(duì)某一例子向著 0 梯度狀態(tài)激活,它可能很難從這兒脫離,單元可能會(huì)卡在 0 梯度狀態(tài)中。
當(dāng)單元飽和、梯度消失,算法可能得需要許多訓(xùn)練例子和許多計(jì)算才能恢復(fù)。
3、用噪音激活函數(shù)退火
我們來(lái)考慮一個(gè)噪音激活函數(shù) Θ(x, ζ ) ,其中我們已經(jīng)注入了 iid 噪音 ζ 來(lái)代替一個(gè)飽和非線性函數(shù),例如在之前部分介紹過(guò)的硬 sigmoid 和硬 tahn。在下一個(gè)部分,我們描述我們提出的噪音激活函數(shù),這個(gè)函數(shù)已經(jīng)在我們的實(shí)驗(yàn)中使用,但是這里我們希望考慮一個(gè)更大家族的此類(lèi)噪音激活函數(shù),使用一個(gè)隨機(jī)梯度下降(SGD)用于訓(xùn)練。
令 ζ 具有變量 δ2 和平均數(shù) 0。我們希望隨著我們慢慢為此噪音退火來(lái)描述發(fā)生的狀況,從大的噪音等級(jí) (δ → ∞)到根本沒(méi)有噪音 ( δ → 0)。
我們還將更進(jìn)一步,假設(shè) Θ 可以當(dāng)噪音等級(jí)變大時(shí),其關(guān)于 x 的導(dǎo)數(shù)為:
圖2:一個(gè)一維、非凸目標(biāo)函數(shù)的例子,其中一個(gè)簡(jiǎn)單的梯度下降會(huì)表現(xiàn)很差。有了大噪音 | ζ | → ∞, SGD可以脫離鞍點(diǎn)和作為探索結(jié)果的局部極小值。當(dāng)我們將噪音等級(jí)降火至 | ζ | → 0,SGD會(huì)最終匯聚到局部最小值 x* 之一。
在 0 噪音極限,我們修復(fù)一個(gè)決定論的非線性函數(shù) Θ(x , 0 ),在我們的試驗(yàn)中是一個(gè)分段線性函數(shù),這讓我們可以了解那種我們想要學(xué)習(xí)的復(fù)雜函數(shù)。正如圖2中所示,在大噪音極限可以獲得大梯度,因?yàn)橥ㄟ^(guò) Θ 進(jìn)行反向傳播會(huì)帶來(lái)大導(dǎo)數(shù)。因此,噪音淹沒(méi)了信號(hào):就例子來(lái)說(shuō),參數(shù)上梯度比 δ = 0. SGD 時(shí)要大得多,因此只看到噪音,而且可以在參數(shù)空間內(nèi)移動(dòng)到任何地方,不會(huì)“看見(jiàn)”任何趨勢(shì)。
退火也與信號(hào)噪音比有關(guān),其中 SNR 可以定義為噪音方差的比例 δsignal 和 δnoise, 。 如果 SNR → 0,模型將進(jìn)行純粹隨機(jī)的探索。當(dāng)我們退火時(shí) SNR 會(huì)增加,當(dāng) δnoise 趨近于0時(shí),訓(xùn)練中探索的唯一來(lái)源將是隨機(jī)梯度的蒙特卡洛模擬。
要讓例如模擬退火(Kirkpatrick等,1983)和延續(xù)方法(Allgower & Georg,1980)等方法能在優(yōu)化困難的非凸目標(biāo)函數(shù)的情境下有所幫助,這正是我們所需的。具有高噪音的 SGD 可以自由探索空間的所有部分。隨著噪音等級(jí)下降,它會(huì)更傾向于某些區(qū)域,其中信號(hào)足夠強(qiáng),可以被 SGD 所“看到”:當(dāng)SGD 步驟數(shù)量有限時(shí),噪音沒(méi)有算出平均數(shù),而且方差持續(xù)占據(jù)主導(dǎo)地位。然后,隨著噪音等級(jí)降低,SGD 花更多的時(shí)間在“總體更好”的參數(shù)空間區(qū)域。隨著噪音靠近0,我們?cè)谖⒄{(diào)解決方案,靠近無(wú)噪音目標(biāo)函數(shù)的最小值。一個(gè)相關(guān)的方法是在梯度中增加噪音,并為噪音退火,這種方法 Neelakantan等人(2015)也有過(guò)研究。Ge等(2015)證明了帶有退火噪音的 SGD 會(huì)從整體匯聚到一個(gè)局部最小值,為了多項(xiàng)式次的迭代中的非凸目標(biāo)函數(shù)。最近,Mobahi(2016)提出了一種優(yōu)化方法,在損失函數(shù)上使用高斯平滑,這樣退火權(quán)重噪音就是其蒙特卡洛模擬。
4、單元飽和時(shí)增加噪音
在我們提出的噪音激活背后有一個(gè)新想法,就是加入非線性的噪音數(shù)量與非線性的飽和度的量級(jí)是相稱(chēng)的。對(duì)于硬 sigmoid (x) 和硬 tanh(x) 來(lái)說(shuō),由于我們的噪音參數(shù)化,這意味著只有當(dāng)硬非線性飽和時(shí)才增加噪音。這與之前提出的方法都不同,例如 Bengio(2013)提出的噪音激活器,當(dāng)噪音剛好在一個(gè)激活器(ReLU)單元前增加時(shí),與輸入是在非線性函數(shù)的線性狀態(tài)還是在飽和狀態(tài)無(wú)關(guān)。
目的是為了在單元在非飽和(通常是線性)狀態(tài)時(shí)保持訓(xùn)練信號(hào)干凈,并在單元處于飽和狀態(tài)時(shí)提供一些噪音信號(hào)。
h(x) 指代硬飽和激活函數(shù),例如部分2介紹過(guò)的硬 sigmoid 和硬 tanh,我們考慮以下形式的噪音激活函數(shù):
并且 s = μ + δζ 。其中 ζ 是一個(gè)從一些生成分布中獲取的 iid 隨機(jī)變量,參數(shù) μ 和 δ(以下會(huì)進(jìn)行討論)用于從 ζ 中生成一個(gè)位置尺度族。
當(dāng)單元飽和時(shí),我們憑直覺(jué)將其輸出綁定在閾值 t 并增加噪音。這種方法的準(zhǔn)確行為取決于噪音 ζ 的類(lèi)型和 μ 和 δ 的選擇,我們可以隨著 x 函數(shù)而選擇,從而讓一些梯度傳播,即便是我們?cè)陲柡蜖顟B(tài)中。
一個(gè)我們希望 Θ 可以近似滿(mǎn)足理想特特性是,它的預(yù)期值等于硬飽和激活函數(shù),即:
如果 ζ 分布的平均為 0,那么令 μ = 0 可以滿(mǎn)足這項(xiàng)特性,但是對(duì)于有偏的噪音必須對(duì) μ 選擇其他值。實(shí)際上,我們使用了輕度有偏的 Θ,實(shí)現(xiàn)了較好的結(jié)果。
出于直覺(jué),我們希望當(dāng) x 深入飽和狀態(tài)時(shí)增加更多的噪音,因?yàn)橐獙?h 去飽和化需要參數(shù)的大變化。相反的,當(dāng) x 靠近飽和閾值,參數(shù)的小變化就足夠其脫離了。為了這個(gè)目的,我們?cè)谶x擇噪音大小時(shí)利用了最初的激活函數(shù) h 機(jī)器線性化 u 之間的差異:
在未飽和狀態(tài),△的量為0,當(dāng) h 飽和,它與 |x| 和飽和閾值 xt 之間的距離等比例增長(zhǎng)。我們還將 |△| 稱(chēng)為飽和量級(jí)。
我們?cè)囼?yàn)了用 △ 來(lái)測(cè)量 δ 的不同方法,并通過(guò)實(shí)證發(fā)現(xiàn)以下方程的表現(xiàn)更好:
在方程9中,自由標(biāo)量參數(shù) p 在訓(xùn)練中習(xí)得。通過(guò)改變 p,模型能夠調(diào)整噪音的量級(jí),這還影響梯度的信號(hào)。超參數(shù) c 改變?cè)胍舻臉?biāo)準(zhǔn)方差的大小。
4.1. 飽和狀態(tài)的導(dǎo)數(shù)
我們方法中的最簡(jiǎn)單情況下,我們從一個(gè)無(wú)偏分布(例如正態(tài)分布)中獲得 ζ 。在這種情況下,我們選擇 μ = 0 來(lái)滿(mǎn)足方程7,因而我們將有:
由于我們對(duì) δ(x) 進(jìn)行了參數(shù)化,當(dāng) |x| ≤ xt, 我們的隨機(jī)激活函數(shù)將精確按照線性函數(shù) u(x) 來(lái)運(yùn)行,到達(dá)一個(gè)熟悉的領(lǐng)域。因?yàn)?△ 將為 0。讓我們暫時(shí)集中注意力考慮 |x| > xt 以及 h 飽和的情況。這種情況下,h(x) 的導(dǎo)數(shù)正好是 0,然而,如果我們限制條件在樣本 ζ,我們就有了:
圖3:在線性激活函數(shù)上增加高斯噪音的簡(jiǎn)單描繪,這將平均值帶回硬飽和非線性 h(x)。它的線性化是 u(x),而且噪音激活是 Θ。h(x) - u(x) 的差異是 △,這是一個(gè)矢量,表明了線性化函數(shù)和實(shí)際函數(shù)之間的差異,在實(shí)際函數(shù)上噪音加入到 h(x)。注意,在函數(shù)的非飽和部分當(dāng) u(x) 和 h(u) 完全匹配時(shí), △ 將為 0。
在非飽和狀態(tài),當(dāng) Θ'(x, ζ) = h'(x),優(yōu)化可以利用 h 靠近原點(diǎn)的線性結(jié)構(gòu)來(lái)調(diào)整其輸出。在飽和狀態(tài),ζ 的隨機(jī)性推動(dòng)了探索,梯度仍然流回到 x,因?yàn)橐袅康拇笮∪Q于 x。為了重新迭代,我們?cè)诿恳粋€(gè)點(diǎn)獲取梯度信息即便 h 存在飽和度,而且在飽和狀態(tài)梯度信息的方差取決于 δ'(x)ζ。
4.2. 將激活推向線性狀態(tài)
帶有無(wú)偏噪音方程的一個(gè)不滿(mǎn)意之處就是,取決于 ζ 的值,Θ的梯度偶爾會(huì)指向錯(cuò)誤的方向。這會(huì)引起一個(gè)倒回的信息,會(huì)將 x 推向的在 ζ 上平均惡化目標(biāo)方程的方向。我們憑直接更希望當(dāng) h(x) 的梯度可以安全使用的時(shí)候,這些信息可以將飽和單元向一個(gè)非飽和狀態(tài)“推回”。
一個(gè)簡(jiǎn)單的辦法是確保噪音 ζ 永遠(yuǎn)是正的,并調(diào)整其信號(hào)來(lái)手動(dòng)匹配 x 的信號(hào)。具體來(lái)說(shuō),我們可以設(shè)定:
當(dāng) ζ 和 δ 和原先一樣, sgn 是信號(hào)函數(shù),這樣當(dāng) x 大于或等于 0 的時(shí)候, sgn(x) 為1,否則 sgn(x) 為-1。我們還在噪音的重參數(shù)化中使用了 ζ 的絕對(duì)值,這樣噪音從一個(gè)半正態(tài)分布中取樣。我們忽略了 ζ 的信號(hào),這樣噪音推動(dòng)激活的方向是由 d(x) 決定的,并會(huì)指向 h(x)。將噪音的信號(hào)與 x 的信號(hào)相匹配,可以確保我們避免在噪音和反向傳播的梯度信息之間信號(hào)取消。要將激活函數(shù)推向 h(x),當(dāng)引入 α 偏見(jiàn)時(shí),sgn(1-α) 是必須的。
在實(shí)踐中,我們使用了超參數(shù) α 來(lái)影響增加的術(shù)語(yǔ),這樣 1 附近的 α 近似滿(mǎn)足以上條件,可以從圖4中看到。我們可以以特定方式重寫(xiě)噪音術(shù)語(yǔ) s,讓噪音可以加入線性化函數(shù)或者加入 h(x)?!?、u(x)和 h(x) 之間的關(guān)系在圖4.1中展現(xiàn)出來(lái),可以用方程11來(lái)表達(dá)。
我們?cè)囼?yàn)了不同類(lèi)型的噪音。實(shí)證中,就表現(xiàn)來(lái)說(shuō)我們發(fā)現(xiàn),半正態(tài)和正態(tài)噪音更好。在方程11中,我們提供了激活函數(shù)的方程,其中如果噪音從半正態(tài)分布中取樣,則 ε = |ζ|;如果噪音從正態(tài)分布中取樣,則 ε = ζ。
通過(guò)使用方程11,我們實(shí)現(xiàn)了噪音激活,這在我們的實(shí)驗(yàn)中應(yīng)用了。
我們可以在方程12中看到,梯度可以遵循三種路徑流入神經(jīng)網(wǎng)絡(luò),線性路徑 (u(x))、非線性路徑(h(x))和隨機(jī)路徑(δ(x))。梯度流入這些不同路徑,穿過(guò)不同層,讓激活函數(shù)的優(yōu)化更加簡(jiǎn)單。
在測(cè)試的時(shí)候,我們使用方程12的預(yù)期值來(lái)獲得決定論的單元。
當(dāng) ε = ζ, Eζ[ε]為 0。否則,如果 ε = |ζ|,則Eζ[ε] 為 根號(hào)π
算法1:針對(duì)硬飽和函數(shù)使用半正態(tài)噪音的噪音激活函數(shù)。
為了說(shuō)明 α 和硬 tanh 的噪音激活函數(shù)的影響,我們?cè)趫D4中提供了隨機(jī)激活函數(shù)的圖表。
圖4:我們的噪音激活函數(shù)使用不同 α 值時(shí)的隨機(jī)行為,α 值從正態(tài)分布中取樣,近似硬 tanh 非線性函數(shù)(深綠色)。
5、在函數(shù)輸入中加入噪音
人們已經(jīng)針對(duì) ReLU 激活函數(shù),研究了如何將固定標(biāo)準(zhǔn)方差的噪音增加到激活函數(shù)的輸入中(Nair & Hinton,2010;Bengio等,2013)。
在方程14中,我們提供了一種噪音激活函數(shù)的參數(shù)化。Δ 可以像在方程9中一樣習(xí)得,或者作為超參數(shù)固定。
方程5中的條件只有當(dāng) δ 為習(xí)得的時(shí)候才滿(mǎn)足。通過(guò)實(shí)驗(yàn)我們發(fā)現(xiàn),較小的 δ 值效果更好。當(dāng) δ 的值小且固定,隨著 x 越來(lái)越大、距離閾值 xt 越來(lái)越遠(yuǎn),噪音將激活推回線性狀態(tài)的可能性也就越小。我們還調(diào)查了當(dāng)激活飽和時(shí)注入輸入噪音的影響:
6、實(shí)驗(yàn)結(jié)果
在我們的實(shí)驗(yàn)中,我們只在訓(xùn)練時(shí)使用了噪音:在測(cè)試時(shí),我們將噪音變量替換為其期望值。我們?cè)诂F(xiàn)有的實(shí)驗(yàn)設(shè)置中直接代替激活程序,沒(méi)有改變之前設(shè)定的超參數(shù)。這樣,我們可以通過(guò)在具有噪音激活函數(shù)的模型上仔細(xì)進(jìn)行超參數(shù)調(diào)試來(lái)獲得更好的結(jié)構(gòu)。在我們所有的實(shí)驗(yàn)中,我們用范圍 [-1, 1] 中的隨機(jī)值初始化 p。
我們使用具有正態(tài) (NAN)、半正態(tài)噪音(NAH)、函數(shù)輸入中的正態(tài)噪音(NANI)、函數(shù)輸入中帶有習(xí)得的 δ 的正態(tài)噪音(NANIL)以及當(dāng)單元飽和時(shí)注入函數(shù)輸入的正態(tài)噪音(NANIS)。不同類(lèi)型的噪音激活函數(shù)可以在這里獲得:https://github.com/caglar/noisy_units.
6.1. 探索性分析
作為合理性驗(yàn)證,我們進(jìn)行了一個(gè)小型控制實(shí)驗(yàn),為了觀察噪音單元的行為。
我們訓(xùn)練了3層的MLP,使用一個(gè)混合物中生成的數(shù)據(jù)庫(kù),混合物由3個(gè)平均值不同的高斯分布和標(biāo)準(zhǔn)方差合成。MLP的每一層包含8個(gè)隱藏單元。具有 tanh 和噪音-tanh 激活函數(shù)的模型都能幾乎完美地完成這項(xiàng)任務(wù)。通過(guò)使用習(xí)得的 p 值,我們?cè)趫D5和圖6中展示了每一層、每一個(gè)單元的激活函數(shù)的散點(diǎn)圖,以及每一層、每一單元關(guān)于其輸出的導(dǎo)數(shù)函數(shù)。
圖5:每一層、每一單元針對(duì)單元輸入的導(dǎo)數(shù)。
圖6:每一層學(xué)會(huì)的激活函數(shù)。
6.2. 學(xué)會(huì)執(zhí)行
關(guān)于 Zaremba & Sutskever(2014)提出的短程序的輸出預(yù)測(cè)問(wèn)題,對(duì)于現(xiàn)代的深度學(xué)習(xí)架構(gòu)來(lái)說(shuō)是一個(gè)挑戰(zhàn)。作者們必須使用課程學(xué)習(xí)(Bengio等,2009)讓模型先獲取較為簡(jiǎn)單的例子中的知識(shí),然后隨著訓(xùn)練深入,增加例子的難度。
我們將參照模型中所有的 sigmoid 和 tanh 非線性函數(shù)替換為噪音函數(shù)。為了避免數(shù)字穩(wěn)定性問(wèn)題,我們將默認(rèn)的梯度范圍從10變?yōu)?。當(dāng)評(píng)估一個(gè)網(wǎng)絡(luò)時(shí),執(zhí)行程序的長(zhǎng)度(行數(shù))設(shè)置為6、嵌套設(shè)置為3,這是這些任務(wù)發(fā)布代碼的默認(rèn)設(shè)置。參照模型和噪音激活模型都是用“綜合”課程訓(xùn)練的,這是最復(fù)雜、也是表現(xiàn)最好的一個(gè)課程。
我們的結(jié)果顯示,應(yīng)用提出的激活函數(shù)比參照模型的運(yùn)行效果更好。而且,結(jié)果顯示了我們的方法很容易與非平凡訓(xùn)練課程相結(jié)合。我們的結(jié)果展示在表格1和圖8中。
表格1:學(xué)會(huì)執(zhí)行任務(wù)中噪音網(wǎng)絡(luò)的表現(xiàn)。僅僅是改變激活函數(shù)到噪音中,就能帶來(lái)大約2.5%的精度提升。
圖7:Penntreebank數(shù)據(jù)庫(kù)上,在單詞層面LSTM語(yǔ)言模型驗(yàn)證困惑度的學(xué)習(xí)曲線。
圖8:參照模型(Zaremba & Sutskever,2014)的訓(xùn)練曲線,及其“學(xué)習(xí)執(zhí)行”任務(wù)中的噪音變量問(wèn)題。噪音網(wǎng)絡(luò)可以更快地匯聚,并達(dá)到更高的精度,顯示了噪音激活可以幫助更好地優(yōu)化此類(lèi)難以?xún)?yōu)化的任務(wù)。
表格2:Penntreebank數(shù)據(jù)庫(kù)詞匯等級(jí)的比較級(jí)困惑度。在 Zaremba 等(2014)的代碼中,我們只將 sigmoid 和 tanh 替換成了相應(yīng)的噪音變量,并且觀察到困惑度有顯著的提升,這讓這種方法成為這項(xiàng)任務(wù)最好的方法。
6.3. Penntreebank實(shí)驗(yàn)
我們訓(xùn)練了一個(gè)單詞層面的基于Penntreebank的雙層LSTM語(yǔ)言模型。我們使用與Zaremba等(2014)提出的同樣的模型。我們只是將所有的 sigmoid 和 tanh 單元替換為噪音硬 sigmoid 和硬 tanh 單元。參照模型是一個(gè)從 Zeremba等(2014)而來(lái)的經(jīng)過(guò)良好調(diào)試的很強(qiáng)的基線。對(duì)于噪音實(shí)驗(yàn),我們使用了完全一樣的設(shè)置,但是將梯度閾值從10降低到5。我們?cè)诒砀?提供了不同模型的結(jié)果。就驗(yàn)證與測(cè)試表現(xiàn)來(lái)說(shuō),我們沒(méi)有觀察到從正態(tài)和半正態(tài)分布中增加噪音有很大的區(qū)別,但是噪音帶來(lái)了顯著的提升,這讓我們的結(jié)果成為針對(duì)該任務(wù)我們所知道的最好的方法。
6.4. 神經(jīng)機(jī)器翻譯實(shí)驗(yàn)
我們基于 Europarl 數(shù)據(jù)庫(kù),使用神經(jīng)注意模型(Bahdanau等,2014)訓(xùn)練了一個(gè)神經(jīng)機(jī)器翻譯(NMT)模型。我們將所有的 sigmoid 和 tanh 單元替換為噪音函數(shù)。我們通過(guò)乘以 0.01,縮小了初始為垂直比例的權(quán)重矩陣。評(píng)估是使用 nestest2011 測(cè)試庫(kù)完成的。所有模型都用提前停止方法來(lái)訓(xùn)練。我們還比較了具有硬 tanh 和硬 sigmoid 單元的模型,而我們使用噪音激活的模型比這兩個(gè)都更好,結(jié)果展示在表格4中。就英語(yǔ)到法語(yǔ)的機(jī)器翻譯來(lái)說(shuō),我們?cè)僖淮慰吹搅藢?shí)質(zhì)性的進(jìn)步(不只2個(gè)BLUE點(diǎn))。
6.5. 圖像標(biāo)題生成實(shí)驗(yàn)
我們?cè)谝粋€(gè)用 Flickr8k 數(shù)據(jù)庫(kù)訓(xùn)練的網(wǎng)絡(luò)來(lái)評(píng)估我們的噪音激活函數(shù)。我們使用了 Xu 等(2015b)提出的軟神經(jīng)注意模型,作為我們的參照模型。我們通過(guò)乘以 0.01,縮小了初始為垂直比例的權(quán)重矩陣。正如在表格3中所示,我們可以獲得比參照模型更好的結(jié)果,而且就 Metero 分?jǐn)?shù)來(lái)說(shuō),我們的模型還優(yōu)于 Xu 等(2015b)提供的最好的模型。
表格3:圖片標(biāo)題生成實(shí)驗(yàn)。
Xu 等(2015b)的模型是在情景和 LSTM 層上使用比率為0.5的信號(hào)丟失。正如表格3中所示,有和沒(méi)有信號(hào)丟失的模型我們都已經(jīng)嘗試過(guò)了,在帶有噪音激活函數(shù)的信號(hào)丟失時(shí)我們觀察到了提升。但是主要的提升貌似來(lái)自于噪音激活函數(shù)的引入,因?yàn)闆](méi)有信號(hào)丟失的模型已經(jīng)優(yōu)于參照模型。
6.6. 延續(xù)方法實(shí)驗(yàn)
我們進(jìn)行了實(shí)驗(yàn),來(lái)驗(yàn)證針對(duì)神經(jīng)網(wǎng)絡(luò)使用退火噪音,獲得延續(xù)方法的效果。
我們?cè)O(shè)計(jì)了一個(gè)新的任務(wù),其中有一個(gè)隨機(jī)的整數(shù)數(shù)列,目標(biāo)是預(yù)測(cè)數(shù)列中獨(dú)特的數(shù)字。我們?cè)谳斎胄蛄兄惺褂昧艘粋€(gè) LSTM 網(wǎng)絡(luò),在 LSTM 的隱藏狀態(tài)中進(jìn)行了一個(gè)時(shí)間平均池化,來(lái)獲得固定大小的矢量。我們將池化的 LSTM 表征輸入一個(gè)簡(jiǎn)單的(具有一個(gè)隱藏層的)ReLU MLP,來(lái)預(yù)測(cè)輸入數(shù)列中獨(dú)特的數(shù)字元素。在實(shí)驗(yàn)里我們將輸入數(shù)列的長(zhǎng)度固定為26,輸入值范圍為 0 至 10。為了讓噪音降火,我們開(kāi)始用噪音標(biāo)準(zhǔn)方差的規(guī)模超參數(shù)進(jìn)行訓(xùn)練,標(biāo)準(zhǔn)方差中 c = 30,將其退火值降至 0.5,使用時(shí)間表,其中,每200個(gè)微批次更新,t 的值就增加。當(dāng)噪音退火與課程策略(開(kāi)始先是短的序列,然后逐漸增加訓(xùn)練序列的長(zhǎng)度)相結(jié)合,就獲得了最好的模型。
表格5:在隨機(jī)整數(shù)數(shù)列中尋找獨(dú)特?cái)?shù)字任務(wù)的實(shí)驗(yàn)結(jié)果。這體現(xiàn)了噪音等級(jí)退火的效果,讓訓(xùn)練過(guò)程變?yōu)橐粋€(gè)延續(xù)方法。噪音退火帶來(lái)了比課程更好的結(jié)果。
在第二次測(cè)試中,我們使用了同樣的退火步驟,用來(lái)在聯(lián)想回憶任務(wù)中訓(xùn)練一個(gè)神經(jīng)圖靈機(jī)器(NTM)。我們用最少2個(gè)物品、做多16個(gè)物品來(lái)訓(xùn)練我們的模型。我們展示了帶有控制器中噪音激活的 NTM 的結(jié)果,帶有退火的噪音,并與一個(gè)常規(guī) NTM 就驗(yàn)證錯(cuò)誤進(jìn)行比較。正如圖9中可見(jiàn),使用噪音激活的網(wǎng)絡(luò)匯聚更快,很好地勝任了任務(wù),而原始的網(wǎng)絡(luò)沒(méi)能實(shí)現(xiàn)低錯(cuò)誤率。
圖9:在聯(lián)想回憶任務(wù)中NTM的驗(yàn)證學(xué)習(xí)曲線。帶有噪音控制器的NTM可以匯聚更快,解決任務(wù)。
7、結(jié)論
神經(jīng)網(wǎng)絡(luò)中的非線性函數(shù)是福也是禍。它是福,因?yàn)樗鼈冏屛覀兛梢员碚鞲訌?fù)雜的函數(shù);它也是禍,因?yàn)槟亲寖?yōu)化過(guò)程更加困難。舉個(gè)例子,我們?cè)趯?shí)驗(yàn)中發(fā)現(xiàn),使用硬版本(因此更加非線性)的 sigmoid 和 tanh 非線性函數(shù)經(jīng)常能夠提升結(jié)果。過(guò)去人們提出過(guò)不同的策略,幫助解決訓(xùn)練一些深度網(wǎng)絡(luò)時(shí)出現(xiàn)的優(yōu)化問(wèn)題,包括課程學(xué)習(xí),這是延續(xù)方法的一種近似形式。早期研究還包括在訓(xùn)練中逐漸變得越來(lái)越硬的非線性函數(shù)的軟化版本。受到這項(xiàng)過(guò)往研究的啟發(fā),我們引入了噪音激活的概念,作為一種在非線性函數(shù)中注入噪音的總體框架,大噪音讓 SGD 可以更具有探索性。我們提出在激活函數(shù)注入噪音的時(shí)間點(diǎn),或者在函數(shù)的輸入,或者,如果不注入噪音單元便會(huì)飽和的話,就注入在輸出,而且即使在這種情況下,也允許梯度流動(dòng)。我們證明了我們的噪音激活函數(shù)更容易優(yōu)化。而且,它實(shí)現(xiàn)了更少的測(cè)試錯(cuò)誤率,由于注入激活函數(shù)的噪音同時(shí)也將模型常規(guī)化了。即便是固定噪音等級(jí),我們也發(fā)現(xiàn)我們提出的噪音激活函數(shù)在不同的任務(wù)和數(shù)據(jù)庫(kù)中優(yōu)于使用 sigmoid 和 tahn 的函數(shù),帶來(lái)頂尖的或者非常有競(jìng)爭(zhēng)力的結(jié)果,以及一個(gè)簡(jiǎn)單的修正,例如在PennTreebank。此外,我們發(fā)現(xiàn)通過(guò)噪音退火從而獲取延續(xù)方法,可以進(jìn)一步提升運(yùn)行表現(xiàn)。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。