作者:Eric Jang沉颂,Google Brain研究工程師
譯者:任杰驥 徐君(君君)
在一個(gè)怡人的午后悦污,我開(kāi)始嘗試著用通俗易懂的語(yǔ)言向我媽媽解釋隨機(jī)性對(duì)于深度學(xué)習(xí)的重要性。盡管我媽媽還是對(duì)于深度學(xué)習(xí)一知半解彻坛,但是我認(rèn)為我的努力部分成功了,我迷上了這種方式并將他應(yīng)用在了我的實(shí)際工作中小压。
我想將這篇稍具技術(shù)性的小文章送給在深度學(xué)習(xí)領(lǐng)域的實(shí)踐者怠益,希望大家能夠?qū)ι窠?jīng)網(wǎng)絡(luò)內(nèi)部的運(yùn)行過(guò)程有更好的理解。
如果你是一個(gè)剛剛?cè)腴T的新手烤咧,那么你有可能會(huì)覺(jué)得一大堆技術(shù)被隨意的一股腦的用在了訓(xùn)練神經(jīng)網(wǎng)絡(luò)上抢呆,例如dropout正則化、擴(kuò)增梯度噪聲昌阿、異步隨機(jī)下降恳邀。那這些技術(shù)有什么相同的呢?答案是他們都利用了隨機(jī)性刷钢。
隨機(jī)性是深度神經(jīng)網(wǎng)絡(luò)正常運(yùn)行的關(guān)鍵:
1乳附、隨機(jī)噪聲使得神經(jīng)網(wǎng)絡(luò)在單輸入的情況下產(chǎn)生多輸出的結(jié)果;
2阱缓、隨機(jī)噪音限制了信息在網(wǎng)絡(luò)中的流向,促使網(wǎng)絡(luò)學(xué)習(xí)數(shù)據(jù)中有意義的主要信息厂抖;
3祭犯、隨機(jī)噪聲在梯度下降的時(shí)候提供了“探索能量”滚停,使得網(wǎng)絡(luò)可以尋找到更好的優(yōu)化結(jié)果键畴。
單輸入多輸出
讓我們假設(shè)你正在訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)去實(shí)現(xiàn)分類突雪。
對(duì)于圖中的每一個(gè)區(qū)域涡贱,網(wǎng)絡(luò)會(huì)學(xué)習(xí)將圖像映射到一系列的詞語(yǔ)標(biāo)簽上问词,例如“狗”或者“人”。這樣的分類表現(xiàn)很不錯(cuò)辰狡,并且這樣的深度神經(jīng)網(wǎng)絡(luò)不需要在推理模型中加入隨機(jī)性垄分。畢竟任何一張狗的圖片應(yīng)該被映射到“狗”這個(gè)詞語(yǔ)標(biāo)簽上,這沒(méi)有任何的隨機(jī)性叫倍。
現(xiàn)在讓我們來(lái)假設(shè)你在訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò)下圍棋嘿般,在下圖這樣的情況下涯冠,深度神經(jīng)網(wǎng)絡(luò)需要落下第一個(gè)棋子蛇更。如果我們還是使用確定不變的策略,那么將無(wú)法得出一個(gè)好的結(jié)果砸逊。你可能會(huì)問(wèn)掌逛,為什么啊篓像?因?yàn)樵谶@樣的情況下最優(yōu)的“第一步”選擇不是唯一的皿伺,對(duì)于棋盤上的每一個(gè)位置來(lái)說(shuō),他們都和對(duì)面位置具有旋轉(zhuǎn)對(duì)稱性奠滑,所以具有相同的機(jī)會(huì)成為較優(yōu)的選擇。這是一個(gè)多元最優(yōu)問(wèn)題摊崭。如果神經(jīng)網(wǎng)絡(luò)的策略是確定并且是單輸入單輸出的話杰赛,優(yōu)化過(guò)程會(huì)迫使網(wǎng)絡(luò)選擇移向所有最佳答案的平均位置,而這個(gè)結(jié)果不偏不倚的落在了棋盤的中心阔墩,這恰恰在圍棋里被認(rèn)為是一個(gè)糟糕的先手瓶珊。
所以伞芹,隨機(jī)性對(duì)于一個(gè)想輸出多元最優(yōu)估計(jì)的網(wǎng)絡(luò)十分重要,而不是一遍遍重復(fù)輸出相同的結(jié)果扎唾。當(dāng)行動(dòng)空間暗含對(duì)稱性的情況下南缓,隨機(jī)性一個(gè)十分關(guān)鍵的因素,在隨機(jī)性的幫助下纸镊,我們可以打破夾雜中間不能自拔的對(duì)稱悖論概疆。
同樣的,如果我們想訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)去作曲或者畫畫凯旭,我們當(dāng)然不希望它總是演奏相同的音樂(lè)使套,描繪單調(diào)重復(fù)的場(chǎng)景童漩。我們期待得到變化的韻律,驚喜的聲音和創(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)域。
隨機(jī)性與信息論
在剛剛接觸概率論與數(shù)理統(tǒng)計(jì)時(shí)揍愁,我十分糾結(jié)于理解隨機(jī)性的物理含義莽囤。拋一枚硬幣時(shí)切距,結(jié)果的隨機(jī)性來(lái)自哪里?隨機(jī)性是否僅僅是確定性混沌饵沧?是否可以做到絕對(duì)的隨機(jī)赌躺?
老實(shí)地說(shuō)羡儿,我還是沒(méi)有完全弄明白這些問(wèn)題掠归。
信息論中將隨機(jī)性定義為信息的缺失。具體來(lái)說(shuō)一個(gè)物體的信息便是在計(jì)算機(jī)程序里能確定描述它的最小字節(jié)數(shù)肤粱。例如π的前一百萬(wàn)個(gè)字節(jié)可以被表示為字節(jié)長(zhǎng)度為1,000,002個(gè)字符厨相,但是同樣也可以被完整的用70個(gè)字符表示出來(lái)鸥鹉,如下用萊布尼茨公式所示:
r=0.0
for n in range(1000000):
r+=(-1.0)**n/(2.0*n+1.0)
print(4*r)
上面的公式是π的一百萬(wàn)個(gè)數(shù)據(jù)的壓縮表示毁渗。而更為精確的公式可以將π的前一百萬(wàn)個(gè)數(shù)據(jù)表示為更少的比特单刁。從這個(gè)角度去解釋的話,隨機(jī)性是不可以被壓縮的量肺樟。π的前一百萬(wàn)個(gè)量可以被壓縮說(shuō)明它們不是隨機(jī)的逻淌。經(jīng)驗(yàn)證據(jù)表明π是一個(gè)正規(guī)數(shù)(normal number)恍风,π中編碼的信息時(shí)無(wú)窮的。
我們現(xiàn)在考慮用數(shù)字a表示π的前萬(wàn)億個(gè)位數(shù)凯楔,如a=3.14159265...锦募。如果我們?cè)谄渲屑由弦粋€(gè)隨機(jī)數(shù)r屬于(-0.01,0.01),我們將會(huì)得到一個(gè)處于3.14059...和3.14259...之間的數(shù)虐骑。那么a+r里的有效信息只有三位數(shù)赎线,因?yàn)榧有噪S機(jī)噪聲破壞了百位小數(shù)以后數(shù)位攜帶的信息垂寥。
迫使深度神經(jīng)網(wǎng)絡(luò)學(xué)到簡(jiǎn)潔表示
這個(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è)基本的直覺(jué)是噪聲能夠限制數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)男畔⑷萘俊?/p>
我們可以參考自動(dòng)編碼(auto-encoder)模型,這種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)嘗試通過(guò)“壓縮”輸入數(shù)據(jù)钳幅、在隱含層得到更低維度的表示來(lái)得到有效的編碼炎滞,并且在輸出層重構(gòu)原始數(shù)據(jù)册赛。下面是一個(gè)示意圖:
在訓(xùn)練過(guò)程中,輸入數(shù)據(jù)從左邊通過(guò)網(wǎng)絡(luò)的節(jié)點(diǎn)牡属,在右邊出來(lái)扼睬,非常像一個(gè)管道窗宇。
假設(shè)我們有一個(gè)理論上存在的神經(jīng)網(wǎng)絡(luò),其可以在實(shí)數(shù)(而不是浮點(diǎn)數(shù))上訓(xùn)練侥加。如果該網(wǎng)絡(luò)中沒(méi)有噪聲蝇完,那么深度神經(jīng)網(wǎng)絡(luò)的每一層實(shí)際上都在處理無(wú)窮多的信息量。盡管自動(dòng)編碼網(wǎng)絡(luò)可以把一個(gè)1000維的數(shù)據(jù)壓縮到1維,但是這個(gè)1維的數(shù)可以用實(shí)數(shù)去編碼任意一個(gè)無(wú)窮大維度的數(shù)朋魔,如3.14159265……卿操。因此網(wǎng)絡(luò)不需要壓縮任何數(shù)據(jù),也學(xué)不到任何有意義的特征扇雕。盡管計(jì)算機(jī)不會(huì)真的把數(shù)字以無(wú)窮維精度表示镶奉,但它傾向于給神經(jīng)網(wǎng)絡(luò)提供遠(yuǎn)遠(yuǎn)超過(guò)我們?cè)鞠M臄?shù)據(jù)量。
通過(guò)限制網(wǎng)絡(luò)中的信息容量鸽凶,我們可以迫使網(wǎng)絡(luò)從輸入特征里學(xué)到簡(jiǎn)潔的表示〗ㄇ停現(xiàn)在已經(jīng)有幾種方法是這么做的:
·變分自動(dòng)編碼(VAE)–其在隱含層里加入高斯噪聲亿蒸,這種噪聲會(huì)破壞“過(guò)剩信息”,迫使網(wǎng)絡(luò)學(xué)習(xí)到訓(xùn)練數(shù)據(jù)的簡(jiǎn)潔表示姑食。
·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 NeuralNetworks)腥椒。作者在前向傳播中使用二進(jìn)制的權(quán)重和激活候衍,但在后向傳播中使用實(shí)值的梯度蛉鹿。這里網(wǎng)絡(luò)中的噪聲來(lái)自于梯度-——一種帶噪聲的二值化梯度往湿。二進(jìn)制網(wǎng)絡(luò)(BinaryNets)不需要比常規(guī)的深度神經(jīng)網(wǎng)絡(luò)更加強(qiáng)大煌茴,每個(gè)單元只能編碼一個(gè)比特的信息,這樣正則是為了防止兩個(gè)特征通過(guò)浮點(diǎn)編碼被壓縮在一個(gè)單元里矩乐。
更加有效的壓縮方案意味著測(cè)試階段的更好的泛化能力回论,這也解釋了為什么dropout對(duì)防止過(guò)擬合如此有效。如果你決定用常規(guī)的自動(dòng)編碼而不是變分自動(dòng)編碼欧漱,你必須用隨機(jī)正則化技巧葬燎,比如dropout谱净,去控制壓縮后的特征的比特?cái)?shù),不然你的網(wǎng)絡(luò)將非掣郧眨可能過(guò)擬合李请。
客觀地說(shuō)导盅,我覺(jué)得變分自動(dòng)編碼網(wǎng)絡(luò)更有優(yōu)勢(shì),因?yàn)樗鼈內(nèi)菀讓?shí)現(xiàn)绅络,并且允許你精確指定每層網(wǎng)絡(luò)有多少比特的信息通過(guò)嘁字。
在訓(xùn)練中避免局部最小值
訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)通常是通過(guò)梯度下降的變體來(lái)完成纪蜒,基本意味著網(wǎng)絡(luò)是通過(guò)降低在整個(gè)訓(xùn)練數(shù)據(jù)集上的平均損失誤差來(lái)迭代參數(shù)。這就像從山上向山下走随珠,當(dāng)你走到山谷最底部的時(shí)候猬错,你會(huì)找到神經(jīng)網(wǎng)絡(luò)的最優(yōu)參數(shù)倦炒。
這種方法的問(wèn)題是,神經(jīng)網(wǎng)絡(luò)的損失函數(shù)表面有很多個(gè)局部最小值和高原(因?yàn)榫W(wǎng)絡(luò)擬合的函數(shù)通常非凸拉讯,譯者注)魔慷。網(wǎng)絡(luò)的損失函數(shù)很容易陷入一個(gè)小坑里著恩,或者陷入一個(gè)斜率幾乎為0的平坦區(qū)域(局部最小值)喉誊,但你覺(jué)得此時(shí)還沒(méi)有得到滿意的結(jié)果。
隨機(jī)性到底如何幫助深度學(xué)習(xí)模型隧熙?我的第三點(diǎn)解釋是基于探索的想法幻林。
因?yàn)橛糜谟?xùn)練深度神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集通常都非常大沪饺,如果我們?cè)诿看翁荻认陆抵袑?duì)上千兆的數(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(jué)的方差术羔,其子孫可能會(huì)遠(yuǎn)遠(yuǎn)變得更好(適應(yīng)性,防毒能力)或者遠(yuǎn)遠(yuǎn)變得更差(致命弱點(diǎn)级历,無(wú)法生育)寥殖。
在數(shù)值優(yōu)化中,這種“基因突變”被稱為“熱力學(xué)能量”或“溫度”熏纯,其允許參數(shù)的迭代軌跡并非總走“下山路”樟澜,而是偶爾地從局部最小值跳出來(lái)或者通過(guò)“穿山隧道”叮盘。
這些都與增強(qiáng)學(xué)習(xí)里的“探險(xiǎn)-開(kāi)采”平衡緊密相關(guān)秩贰。訓(xùn)練一個(gè)純確定性的、沒(méi)有梯度噪聲的深度神經(jīng)網(wǎng)絡(luò)柔吼,其“開(kāi)采”能力為0毒费、直接收斂到最近的局部最小點(diǎn),而且網(wǎng)絡(luò)是淺層的愈魏。
使用隨機(jī)梯度(通過(guò)小批量樣本或在梯度本身加入噪聲)是一個(gè)允許優(yōu)化方法去做一些“搜索”和從局部最小值“跳出”的有效途徑觅玻。異步隨機(jī)梯度下降算法是另一個(gè)可能的噪聲源想际,其允許多個(gè)機(jī)器并行地計(jì)算梯度下降。
這種“熱力學(xué)能量”保證可以破壞訓(xùn)練的早期階段中的對(duì)稱性溪厘,從而保證每層網(wǎng)絡(luò)中的所有梯度不同步到相同的值胡本。噪聲不僅破壞神經(jīng)網(wǎng)絡(luò)在行為空間中的對(duì)稱性桩匪,而且破壞神經(jīng)網(wǎng)絡(luò)在參數(shù)空間里的對(duì)稱性打瘪。
最后的思考
我發(fā)現(xiàn)有個(gè)現(xiàn)象非常有趣,即隨機(jī)噪聲事實(shí)上在幫助人工智能算法避免過(guò)擬合傻昙,幫助這些算法在優(yōu)化或增強(qiáng)學(xué)習(xí)中找到解空間。這就提出了一個(gè)有趣的哲學(xué)問(wèn)題:是否我們的神經(jīng)編碼中的固有噪聲是一種特征彩扔,而不是瑕疵(bug)妆档。
有一個(gè)理論機(jī)器學(xué)習(xí)問(wèn)題讓我很有興趣:是否所有的神經(jīng)網(wǎng)絡(luò)訓(xùn)練技巧事實(shí)上是某些通用正則化定理的變形。也許壓縮領(lǐng)域的理論工作將會(huì)對(duì)理解這些問(wèn)題真正有所幫助虫碉。
如果我們驗(yàn)證不同神經(jīng)網(wǎng)絡(luò)的信息容量與手工設(shè)計(jì)的特征表示相比較贾惦,并觀察這些比較如何關(guān)系到過(guò)擬合的趨勢(shì)和梯度的質(zhì)量,這會(huì)是一件非常有趣的事情敦捧。度量一個(gè)帶有dropout或通過(guò)隨機(jī)梯度下降算法訓(xùn)練的網(wǎng)絡(luò)的信息容量當(dāng)然不是沒(méi)有價(jià)值的须板,而且我認(rèn)為這是可以做到的。比如兢卵,構(gòu)建一個(gè)合成矢量的數(shù)據(jù)集习瑰,這些矢量的信息容量(以比特,千字節(jié)等為單位)是完全已知的秽荤,我們可以通過(guò)結(jié)合類似于dropout的技巧甜奄,觀察不同結(jié)構(gòu)的網(wǎng)絡(luò)如何在這個(gè)數(shù)據(jù)集上學(xué)到一個(gè)生成式模型。