0
本文作者: Eric Jang | 2016-08-12 09:00 |
雷鋒網(wǎng)按:本文作者Eric Jang,Google Brain研究工程師,譯者為任杰驥及徐君。已獲將門創(chuàng)業(yè)(thejiangmen)授權(quán)發(fā)布。
在一個(gè)怡人的午后,我開始嘗試著用通俗易懂的語言向我媽媽解釋隨機(jī)性對于深度學(xué)習(xí)的重要性。盡管我媽媽還是對于深度學(xué)習(xí)一知半解,但是我認(rèn)為我的努力部分成功了,我迷上了這種方式并將它應(yīng)用在了我的實(shí)際工作中。
我想將這篇稍具技術(shù)性的小文章送給在深度學(xué)習(xí)領(lǐng)域的實(shí)踐者,希望大家能夠?qū)ι窠?jīng)網(wǎng)絡(luò)內(nèi)部的運(yùn)行過程有更好的理解。
如果你是一個(gè)剛剛?cè)腴T的新手,那么你有可能會(huì)覺得一大堆技術(shù)被隨意一股腦地用在了訓(xùn)練神經(jīng)網(wǎng)絡(luò)上,例如dropout正則化、擴(kuò)增梯度噪聲、異步隨機(jī)下降。那這些技術(shù)有什么相同的呢?答案是他們都利用了隨機(jī)性!
隨機(jī)性是深度神經(jīng)網(wǎng)絡(luò)正常運(yùn)行的關(guān)鍵:
隨機(jī)噪聲使得神經(jīng)網(wǎng)絡(luò)在單輸入的情況下產(chǎn)生多輸出的結(jié)果;
隨機(jī)噪音限制了信息在網(wǎng)絡(luò)中的流向,促使網(wǎng)絡(luò)學(xué)習(xí)數(shù)據(jù)中有意義的主要信息;
隨機(jī)噪聲在梯度下降的時(shí)候提供了“探索能量”,使得網(wǎng)絡(luò)可以尋找到更好的優(yōu)化結(jié)果。
讓我們假設(shè)你正在訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)去實(shí)現(xiàn)分類。
對于圖中的每一個(gè)區(qū)域,網(wǎng)絡(luò)會(huì)學(xué)習(xí)將圖像映射到一系列的詞語標(biāo)簽上,例如“狗”或者“人”。
這樣的分類表現(xiàn)很不錯(cuò),并且這樣的深度神經(jīng)網(wǎng)絡(luò)不需要在推理模型中加入隨機(jī)性。畢竟任何一張狗的圖片應(yīng)該被映射到“狗”這個(gè)詞語標(biāo)簽上,這沒有任何的隨機(jī)性。
現(xiàn)在讓我們來假設(shè)你在訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)下圍棋,在下圖這樣的情況下,深度神經(jīng)網(wǎng)絡(luò)需要落下第一個(gè)棋子。如果我們還是使用確定不變的策略,那么將無法得出一個(gè)好的結(jié)果。你可能會(huì)問,為什么???因?yàn)樵谶@樣的情況下最優(yōu)的“第一步”選擇不是唯一的,對于棋盤上的每一個(gè)位置來說,他們都和對面位置具有旋轉(zhuǎn)對稱性,所以具有相同的機(jī)會(huì)成為較優(yōu)的選擇。這是一個(gè)多元最優(yōu)問題。如果神經(jīng)網(wǎng)絡(luò)的策略是確定并且是單輸入單輸出的話,優(yōu)化過程會(huì)迫使網(wǎng)絡(luò)選擇移向所有最佳答案的平均位置,而這個(gè)結(jié)果不偏不倚的落在了棋盤的中心,這恰恰在圍棋里被認(rèn)為是一個(gè)糟糕的先手。
所以,隨機(jī)性對于一個(gè)想輸出多元最優(yōu)估計(jì)的網(wǎng)絡(luò)十分重要,而不是一遍遍重復(fù)輸出相同的結(jié)果。當(dāng)行動(dòng)空間暗含對稱性的情況下,隨機(jī)性一個(gè)十分關(guān)鍵的因素,在隨機(jī)性的幫助下,我們可以打破夾雜中間不能自拔的對稱悖論。
同樣的,如果我們想訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)去作曲或者畫畫,我們當(dāng)然不希望它總是演奏相同的音樂,描繪單調(diào)重復(fù)的場景。我們期待得到變化的韻律,驚喜的聲音和創(chuàng)造性的表現(xiàn)。在結(jié)合隨機(jī)性的深度神經(jīng)網(wǎng)絡(luò)中,一方面保持了網(wǎng)絡(luò)的確定性,但是另一方面將其輸出變成為概率分布的參數(shù),使得我們可以利用卷積采樣方法畫出具有隨機(jī)輸出特性的樣例圖片。
DeepMind的阿法狗采用了這樣的原則:基于一個(gè)給定的圍棋盤圖片,輸出每一種走棋方式的獲勝的概率。這種網(wǎng)絡(luò)輸出的分布建模被廣泛應(yīng)用與其他深度強(qiáng)化學(xué)習(xí)領(lǐng)域。
在剛剛接觸概率論與數(shù)理統(tǒng)計(jì)時(shí),我十分糾結(jié)于理解隨機(jī)性的物理含義。拋一枚硬幣時(shí),結(jié)果的隨機(jī)性來自哪里?隨機(jī)性是否僅僅是確定性混沌?是否可以做到絕對的隨機(jī)?
老實(shí)地說,我還是沒有完全弄明白這些問題。
信息論中將隨機(jī)性定義為信息的缺失。具體來說一個(gè)物體的信息便是在計(jì)算機(jī)程序里能確定描述它的最小字節(jié)數(shù)。例如π的前一百萬個(gè)字節(jié)可以被表示為字節(jié)長度為1,000,002個(gè)字符,但是同樣也可以被完整的用70個(gè)字符表示出來,如下用萊布尼茨公式所示:
上面的公式是π的一百萬個(gè)數(shù)據(jù)的壓縮表示。而更為精確的公式可以將π的前一百萬個(gè)數(shù)據(jù)表示為更少的比特。從這個(gè)角度去解釋的話,隨機(jī)性是不可以被壓縮的量。π的前一百萬個(gè)量可以被壓縮說明它們不是隨機(jī)的。經(jīng)驗(yàn)證據(jù)表明π是一個(gè)正規(guī)數(shù)(normal number),π中編碼的信息是無窮的。
我們現(xiàn)在考慮用數(shù)字a表示π的前萬億個(gè)位數(shù),如a=3.141592656……如果我們在其中加上一個(gè)隨機(jī)數(shù)r屬于(-0.01,0.01),我們將會(huì)得到一個(gè)處于3.14059……和3.14259……之間的數(shù)。那么a+r里的有效信息只有三位數(shù),因?yàn)榧有噪S機(jī)噪聲破壞了百位小數(shù)以后數(shù)位攜帶的信息。
這個(gè)隨機(jī)性的定義(指“隨機(jī)性是不可以被壓縮的量”,譯者注)與隨機(jī)性有什么聯(lián)系呢?
隨機(jī)性嵌入到深度神經(jīng)網(wǎng)絡(luò)的另一種途徑是直接將噪聲嵌入到網(wǎng)絡(luò)本身,這與用深度神經(jīng)網(wǎng)絡(luò)去模擬一個(gè)分布不同。這種途徑使得學(xué)習(xí)任務(wù)變得更加困難,因?yàn)榫W(wǎng)絡(luò)需要克服這些內(nèi)在的“擾動(dòng)”。
我們到底為什么想要在網(wǎng)絡(luò)中引入噪聲?一個(gè)基本的直覺是噪聲能夠限制數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)男畔⑷萘俊?/span>
我們可以參考自動(dòng)編碼(auto-encoder)模型,這種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)嘗試通過“壓縮”輸入數(shù)據(jù)、在隱含層得到更低維度的表示來得到有效的編碼,并且在輸出層重構(gòu)原始數(shù)據(jù)。下面是一個(gè)示意圖:
在訓(xùn)練過程中,輸入數(shù)據(jù)從左邊通過網(wǎng)絡(luò)的節(jié)點(diǎn),在右邊出來,非常像一個(gè)管道。
假設(shè)我們有一個(gè)理論上存在的神經(jīng)網(wǎng)絡(luò),其可以在實(shí)數(shù)(而不是浮點(diǎn)數(shù))上訓(xùn)練。如果該網(wǎng)絡(luò)中沒有噪聲,那么深度神經(jīng)網(wǎng)絡(luò)的每一層實(shí)際上都在處理無窮多的信息量。盡管自動(dòng)編碼網(wǎng)絡(luò)可以把一個(gè)1000維的數(shù)據(jù)壓縮到1維,但是這個(gè)1維的數(shù)可以用實(shí)數(shù)去編碼任意一個(gè)無窮大維度的數(shù),如3.14159265……
因此網(wǎng)絡(luò)不需要壓縮任何數(shù)據(jù),也學(xué)不到任何有意義的特征。盡管計(jì)算機(jī)不會(huì)真的把數(shù)字以無窮維精度表示,但它傾向于給神經(jīng)網(wǎng)絡(luò)提供遠(yuǎn)遠(yuǎn)超過我們原本希望的數(shù)據(jù)量。
通過限制網(wǎng)絡(luò)中的信息容量,我們可以迫使網(wǎng)絡(luò)從輸入特征里學(xué)到簡潔的表示?,F(xiàn)在已經(jīng)有幾種方法是這么做的:
變分自動(dòng)編碼(VAE)——其在隱含層里加入高斯噪聲,這種噪聲會(huì)破壞“過剩信息”,迫使網(wǎng)絡(luò)學(xué)習(xí)到訓(xùn)練數(shù)據(jù)的簡潔表示。
Dropout正則化與變分自動(dòng)編碼的噪聲緊密相關(guān)(可能等價(jià)?)——其隨機(jī)將網(wǎng)絡(luò)中的部分單元置為0,使其不參與訓(xùn)練。與變分自動(dòng)編碼相似,dropout噪聲迫使網(wǎng)絡(luò)在有限的數(shù)據(jù)里學(xué)習(xí)到有用的信息。
隨機(jī)深度的深度網(wǎng)絡(luò)——思想與dropout類似,但不是在單元層面上隨機(jī)置0,而是隨機(jī)將訓(xùn)練中的某些層刪除,使其不參與訓(xùn)練。
有一篇非常有趣的文章是《二值化神經(jīng)網(wǎng)絡(luò)》(Binarized Neural Networks)。作者在前向傳播中使用二進(jìn)制的權(quán)重和激活,但在后向傳播中使用實(shí)值的梯度。這里網(wǎng)絡(luò)中的噪聲來自于梯度—— 一種帶噪聲的二值化梯度。二進(jìn)制網(wǎng)絡(luò)(BinaryNets)不需要比常規(guī)的深度神經(jīng)網(wǎng)絡(luò)更加強(qiáng)大,每個(gè)單元只能編碼一個(gè)比特的信息,這樣正則是為了防止兩個(gè)特征通過浮點(diǎn)編碼被壓縮在一個(gè)單元里。
更加有效的壓縮方案意味著測試階段的更好的泛化能力,這也解釋了為什么dropout對防止過擬合如此有效。如果你決定用常規(guī)的自動(dòng)編碼而不是變分自動(dòng)編碼,你必須用隨機(jī)正則化技巧,比如dropout,去控制壓縮后的特征的比特?cái)?shù),不然你的網(wǎng)絡(luò)將非??赡苓^擬合。
客觀地說,我覺得變分自動(dòng)編碼網(wǎng)絡(luò)(VAEs)更有優(yōu)勢,因?yàn)樗鼈內(nèi)菀讓?shí)現(xiàn),并且允許你精確指定每層網(wǎng)絡(luò)有多少比特的信息通過。
訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)通常是通過梯度下降的變體來完成,基本意味著網(wǎng)絡(luò)是通過降低在整個(gè)訓(xùn)練數(shù)據(jù)集上的平均損失誤差來迭代參數(shù)。這就像從山上向山下走,當(dāng)你走到山谷最底部的時(shí)候,你會(huì)找到神經(jīng)網(wǎng)絡(luò)的最優(yōu)參數(shù)。
這種方法的問題是,神經(jīng)網(wǎng)絡(luò)的損失函數(shù)表面有很多個(gè)局部最小值和高原(因?yàn)榫W(wǎng)絡(luò)擬合的函數(shù)通常非凸,譯者注)。網(wǎng)絡(luò)的損失函數(shù)很容易陷入一個(gè)小坑里,或者陷入一個(gè)斜率幾乎為0的平坦區(qū)域(局部最小值),但你覺得此時(shí)還沒有得到滿意的結(jié)果。
隨機(jī)性到底如何幫助深度學(xué)習(xí)模型?我的第三點(diǎn)解釋是基于探索的想法。
因?yàn)橛糜谟?xùn)練深度神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集通常都非常大,如果我們在每次梯度下降中對上千兆的數(shù)據(jù)通通計(jì)算梯度,這個(gè)計(jì)算量實(shí)在是太大了!事實(shí)上,我們可以使用隨機(jī)梯度下降算法(SGD)。在這個(gè)算法里,我們只需要從數(shù)據(jù)集中隨機(jī)挑選小部分?jǐn)?shù)據(jù),并且計(jì)算其平均梯度就可以了。
在進(jìn)化中,如果物種的成功延續(xù)用隨機(jī)變量X模擬,那么隨機(jī)的突變或噪聲會(huì)增加X的方差,其子孫可能會(huì)遠(yuǎn)遠(yuǎn)變得更好(適應(yīng)性,防毒能力)或者遠(yuǎn)遠(yuǎn)變得更差(致命弱點(diǎn),無法生育)。
在數(shù)值優(yōu)化中,這種“基因突變”被稱為“熱力學(xué)能量”或“溫度”,其允許參數(shù)的迭代軌跡并非總走“下山路”,而是偶爾地從局部最小值跳出來或者通過“穿山隧道”。
這些都與增強(qiáng)學(xué)習(xí)里的“探險(xiǎn)——開采”平衡緊密相關(guān)。訓(xùn)練一個(gè)純確定性的、沒有梯度噪聲的深度神經(jīng)網(wǎng)絡(luò),其“開采”能力為0、直接收斂到最近的局部最小點(diǎn),而且網(wǎng)絡(luò)是淺層的。
使用隨機(jī)梯度(通過小批量樣本或在梯度本身加入噪聲)是一個(gè)允許優(yōu)化方法去做一些“搜索”和從局部最小值“跳出”的有效途徑。異步隨機(jī)梯度下降算法是另一個(gè)可能的噪聲源,其允許多個(gè)機(jī)器并行地計(jì)算梯度下降。
這種“熱力學(xué)能量”保證可以破壞訓(xùn)練的早期階段中的對稱性,從而保證每層網(wǎng)絡(luò)中的所有梯度不同步到相同的值。噪聲不僅破壞神經(jīng)網(wǎng)絡(luò)在行為空間中的對稱性,而且破壞神經(jīng)網(wǎng)絡(luò)在參數(shù)空間里的對稱性。
我發(fā)現(xiàn)有個(gè)現(xiàn)象非常有趣,即隨機(jī)噪聲事實(shí)上在幫助人工智能算法避免過擬合,幫助這些算法在優(yōu)化或增強(qiáng)學(xué)習(xí)中找到解空間。這就提出了一個(gè)有趣的哲學(xué)問題:是否我們的神經(jīng)編碼中的固有噪聲是一種特征,而不是瑕疵(bug)。
有一個(gè)理論機(jī)器學(xué)習(xí)問題讓我很有興趣:是否所有的神經(jīng)網(wǎng)絡(luò)訓(xùn)練技巧事實(shí)上是某些通用正則化定理的變形。也許壓縮領(lǐng)域的理論工作將會(huì)對理解這些問題真正有所幫助。
如果我們驗(yàn)證不同神經(jīng)網(wǎng)絡(luò)的信息容量與手工設(shè)計(jì)的特征表示相比較,并觀察這些比較如何關(guān)系到過擬合的趨勢和梯度的質(zhì)量,這會(huì)是一件非常有趣的事情。度量一個(gè)帶有dropout或通過隨機(jī)梯度下降算法訓(xùn)練的網(wǎng)絡(luò)的信息容量當(dāng)然不是沒有價(jià)值的,而且我認(rèn)為這是可以做到的。比如,構(gòu)建一個(gè)合成矢量的數(shù)據(jù)集,這些矢量的信息容量(以比特,千字節(jié)等為單位)是完全已知的,我們可以通過結(jié)合類似于dropout的技巧,觀察不同結(jié)構(gòu)的網(wǎng)絡(luò)如何在這個(gè)數(shù)據(jù)集上學(xué)到一個(gè)生成式模型。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。