過(guò)去十年,深度學(xué)習(xí)取得了驚人的勝利,用大量參數(shù)和數(shù)據(jù)做隨機(jī)梯度下降的方法已經(jīng)被證明是有效的。而梯度下降使用的通常是反向傳播算法,所以一直以來(lái),大腦是否遵循反向傳播、是否有其它方式獲得調(diào)整連接權(quán)重所需的梯度等問(wèn)題都備受關(guān)注。
圖靈獎(jiǎng)得主、深度學(xué)習(xí)先驅(qū) Geoffrey Hinton 作為反向傳播的提出者之一,在近年來(lái)已經(jīng)多次提出,反向傳播并不能解釋大腦的運(yùn)作方式。相反,他正在提出一種新的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法——前向-前向算法(Forward?Forward Algorithm,F(xiàn)F)。
在最近的 NeurIPS 2022 大會(huì)上,Hinton 發(fā)表了題目為《The Forward-Forward Algorithm for Training Deep Neural Networks》的特邀演講,論述了前向算法相比于反向算法的優(yōu)越性。論文的初稿《The Forward-Forward Algorithm: Some Preliminary Investigations》已經(jīng)放在了其多倫多大學(xué)的主頁(yè)上:
論文地址:https://www.cs.toronto.edu/~hinton/FFA13.pdf
與反向傳播算法使用一個(gè)前向傳遞+一個(gè)反向傳遞不同,F(xiàn)F 算法包含兩個(gè)前向傳遞,其中一個(gè)使用正(即真實(shí))數(shù)據(jù),另一個(gè)使用網(wǎng)絡(luò)本身生成的負(fù)數(shù)據(jù)。
Hinton 認(rèn)為,F(xiàn)F 算法的優(yōu)點(diǎn)在于:它能更好地解釋大腦的皮層學(xué)習(xí),并且能以極低的功耗模擬硬件。
Hinton 提倡應(yīng)放棄軟硬件分離的計(jì)算機(jī)形態(tài),未來(lái)的計(jì)算機(jī)應(yīng)被設(shè)計(jì)為“非永生的”(mortal),從而大大節(jié)省計(jì)算資源,而 FF 算法正是能在這種硬件中高效運(yùn)行的最佳學(xué)習(xí)方法。
這或許正是未來(lái)解決萬(wàn)億參數(shù)級(jí)別的大模型算力掣肘的一個(gè)理想途徑。
1
FF 算法比反向算法
更能解釋大腦、更節(jié)能
在 FF 算法中,每一層都有自己的目標(biāo)函數(shù),即對(duì)正數(shù)據(jù)具有高優(yōu)度,對(duì)負(fù)數(shù)據(jù)具有低優(yōu)度。層中活動(dòng)平方和可用作優(yōu)度,此外還包括了諸多其他的可能性,例如減去活動(dòng)平方和等。
如果可以及時(shí)分離正負(fù)傳遞,則負(fù)傳遞可以離線完成,正傳遞的學(xué)習(xí)也會(huì)更加簡(jiǎn)單,并且允許視頻通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸,而無(wú)需存儲(chǔ)活動(dòng)或終止傳播導(dǎo)數(shù)。
Hinton 認(rèn)為,F(xiàn)F 算法在兩個(gè)方面優(yōu)于反向傳播:
一,FF 是解釋大腦皮層學(xué)習(xí)的更優(yōu)模型;
二,FF 更加低耗能,它使用極低功耗模擬硬件而不必求助于強(qiáng)化學(xué)習(xí)。
沒(méi)有切實(shí)證據(jù)可以證明,皮層傳播錯(cuò)誤導(dǎo)數(shù)或存儲(chǔ)神經(jīng)活動(dòng)是用于后續(xù)的反向傳播。從一個(gè)皮層區(qū)域到視覺(jué)通路中較早的區(qū)域自上而下的連接,并不能反映出在視覺(jué)系統(tǒng)中使用反向傳播時(shí)所預(yù)期的自下而上連接。相反,它們形成了循環(huán),其中神經(jīng)活動(dòng)經(jīng)過(guò)兩個(gè)區(qū)域、大約六個(gè)皮層,然后回到它開(kāi)始的地方。
作為學(xué)習(xí)序列的方式之一,通過(guò)時(shí)間的反向傳播可信度并不高。為了在不頻繁暫停的情況下處理感覺(jué)輸入流,大腦需要通過(guò)感覺(jué)來(lái)處理的不同階段傳輸數(shù)據(jù),并且還需要一個(gè)可以即時(shí)學(xué)習(xí)的過(guò)程。管道后期表征可能會(huì)在后續(xù)時(shí)間里提供影響管道早期階段表征的自上而下的信息,但感知系統(tǒng)需要實(shí)時(shí)進(jìn)行推理和學(xué)習(xí),而非停止進(jìn)行反向傳播。
這當(dāng)中,反向傳播的另一個(gè)嚴(yán)重限制在于,它需要完全了解前向傳播執(zhí)行的計(jì)算才能推出正確的導(dǎo)數(shù)。如果我們?cè)谇跋騻鞑ブ胁迦胍粋€(gè)黑盒,除非學(xué)習(xí)黑盒的可微分模型,否則反向傳播無(wú)法執(zhí)行。
而黑盒不會(huì)對(duì) FF 算法的學(xué)習(xí)過(guò)程造成影響,因?yàn)椴恍枰ㄟ^(guò)它進(jìn)行反向傳播。
當(dāng)沒(méi)有完美的正向傳播模型時(shí),我們可以從多種強(qiáng)化學(xué)習(xí)方式中入手。其中的一個(gè)想法是,對(duì)權(quán)重或神經(jīng)活動(dòng)進(jìn)行隨機(jī)擾動(dòng),并將這些擾動(dòng)與由此產(chǎn)生的收益函數(shù)變化相關(guān)聯(lián)。但由于強(qiáng)化學(xué)習(xí)中存在高方差問(wèn)題:當(dāng)其他變量同時(shí)受到擾動(dòng)時(shí),很難看到擾動(dòng)單個(gè)變量的效果。為此,要平均掉由所有其他擾動(dòng)引起的噪聲,學(xué)習(xí)率需要與被擾動(dòng)的變量數(shù)量成反比,這就意味著強(qiáng)化學(xué)習(xí)的擴(kuò)展性很差,無(wú)法與包含數(shù)百萬(wàn)或數(shù)十億大型網(wǎng)絡(luò)的反向傳播競(jìng)爭(zhēng)參數(shù)。
而 Hinton 的觀點(diǎn)是,包含未知非線性的神經(jīng)網(wǎng)絡(luò)不需要求助于強(qiáng)化學(xué)習(xí)。
FF 算法在速度上可與反向傳播相媲美,其優(yōu)點(diǎn)是可以在前向計(jì)算精確細(xì)節(jié)未知的情況下進(jìn)行使用,還可以在神經(jīng)網(wǎng)絡(luò)對(duì)順序數(shù)據(jù)進(jìn)行管道處理時(shí)進(jìn)行學(xué)習(xí),無(wú)需存儲(chǔ)神經(jīng)活動(dòng)或終止傳播誤差導(dǎo)數(shù)。
不過(guò),在功率受限的應(yīng)用中,F(xiàn)F 算法還未能取代反向傳播,比如對(duì)于在超大數(shù)據(jù)集上訓(xùn)練的超大模型,也還是以反向傳播為主。
前向-前向算法
前向-前向算法是一種貪婪的多層學(xué)習(xí)程序,其靈感來(lái)自玻爾茲曼機(jī)和噪聲對(duì)比估計(jì)。
用兩個(gè)前向傳播代替反向傳播的前向+后向傳播,兩個(gè)前向傳播在不同數(shù)據(jù)和相反目標(biāo)上,以完全相同的方式彼此操作。其中,正向通道對(duì)真實(shí)數(shù)據(jù)進(jìn)行操作,并調(diào)整權(quán)重以增加每個(gè)隱藏層的好感度,反向通道調(diào)整 "負(fù)數(shù)據(jù) "權(quán)重以減少每個(gè)隱藏層的好感度。
本文探討了兩種不同的度量標(biāo)準(zhǔn)——神經(jīng)活動(dòng)的平方之和,以及負(fù)活動(dòng)的平方之和。
假設(shè)某層的優(yōu)度函數(shù)是該層中經(jīng)過(guò)整流的線性神經(jīng)元活動(dòng)的平方和,學(xué)習(xí)目的是使其優(yōu)度遠(yuǎn)高于真實(shí)數(shù)據(jù)的某個(gè)閾值、并遠(yuǎn)低于負(fù)數(shù)據(jù)的閾值。也即是說(shuō),在輸入向量正確分類(lèi)為正數(shù)據(jù)或負(fù)數(shù)據(jù)時(shí),輸入向量為正(即真實(shí))的概率,可通過(guò)將邏輯函數(shù) σ 應(yīng)用于優(yōu)度減去某個(gè)閾值 θ:
其中,是層歸一化前隱藏單元 j 的活動(dòng)。負(fù)數(shù)據(jù)可由神經(jīng)網(wǎng)絡(luò)自上而下連接進(jìn)行預(yù)測(cè),也可由外部提供。
使用逐層優(yōu)化函數(shù)學(xué)習(xí)多層表示
很容易看出,可以通過(guò)使隱藏單元的活動(dòng)平方和,對(duì)正數(shù)據(jù)高而對(duì)負(fù)數(shù)據(jù)低來(lái)學(xué)習(xí)單個(gè)隱藏層。但當(dāng)?shù)谝粋€(gè)隱藏層活動(dòng)被用作第二個(gè)隱藏層的輸入時(shí),僅需適用第一個(gè)隱藏層的活動(dòng)矢量長(zhǎng)度,即可區(qū)分正負(fù)數(shù)據(jù),無(wú)需學(xué)習(xí)新的特征。
為防止這種情況,F(xiàn)F 在將隱藏向量長(zhǎng)度作為下一層的輸入前,會(huì)對(duì)其進(jìn)行歸一化,刪除所有用于確定第一個(gè)隱藏層中的信息,從而迫使下個(gè)隱藏層使用第一個(gè)隱藏層中神經(jīng)元的相對(duì)活動(dòng)信息,該相對(duì)活動(dòng)不受層規(guī)范化的影響。
也即是說(shuō),第一個(gè)隱藏層的活動(dòng)向量具備一個(gè)長(zhǎng)度和一個(gè)方向,長(zhǎng)度用于定義該層的良性,只有方向被傳遞到下一層。
2
有關(guān) FF 算法的實(shí)驗(yàn)
反向傳播基線
文中大部分實(shí)驗(yàn)使用了手寫(xiě)數(shù)字的 MNIST 數(shù)據(jù)集:50000 個(gè)用于訓(xùn)練,10000 個(gè)用于搜索良好超參數(shù)期間的驗(yàn)證,10000 張用于計(jì)算測(cè)試錯(cuò)誤率。經(jīng)設(shè)計(jì)后具有幾個(gè)隱藏層的卷積神經(jīng)網(wǎng)絡(luò)可得約 0.6% 的測(cè)試誤差。
在任務(wù) "排列不變 "版本中,神經(jīng)網(wǎng)絡(luò)沒(méi)有得到有關(guān)像素空間布局的信息,若訓(xùn)練開(kāi)始前,所有訓(xùn)練和測(cè)試圖像都受相同像素隨機(jī)變異影響,那么神經(jīng)網(wǎng)絡(luò)的表現(xiàn)也會(huì)同樣良好。
對(duì)于這個(gè)任務(wù)“排列不變”版本,帶有幾個(gè)全連接隱層的整流線性單元(ReLU)的前饋神經(jīng)網(wǎng)絡(luò)測(cè)試誤差大約在 1.4%,其中大約需要20個(gè) epochs 來(lái)訓(xùn)練。使用各種正則器如 dropout(降低訓(xùn)練速度)或標(biāo)簽平滑(加快訓(xùn)練速度),可將測(cè)試誤差降至 1.1% 左右。此外,還可通過(guò)將標(biāo)簽的監(jiān)督學(xué)習(xí)與無(wú)監(jiān)督學(xué)習(xí)相結(jié)合來(lái)進(jìn)一步降低測(cè)試誤差。
在不使用復(fù)雜的正則化器的情況下,任務(wù)“排列不變”版本的測(cè)試誤差為 1.4%,這表明了其學(xué)習(xí)過(guò)程與反向傳播一樣有效。
圖1:用作負(fù)數(shù)據(jù)的混合圖像
無(wú)監(jiān)督 FF 算法
FF 有兩個(gè)主要問(wèn)題需要回答:如果有良好的負(fù)數(shù)據(jù)來(lái)源,它是否會(huì)學(xué)習(xí)有效的多層表示來(lái)捕獲數(shù)據(jù)結(jié)構(gòu)?負(fù)數(shù)據(jù)從何而來(lái)?
先使用手工負(fù)數(shù)據(jù)來(lái)回答第一個(gè)問(wèn)題。將對(duì)比學(xué)習(xí)用于監(jiān)督學(xué)習(xí)任務(wù)的常見(jiàn)方法是,在不使用任何有關(guān)標(biāo)簽信息的情況下,將輸入向量轉(zhuǎn)化為表示向量,學(xué)習(xí)將這些表示向量簡(jiǎn)單線性變換為使用的 logits 向量,在 softmax 中用來(lái)確定標(biāo)簽的概率分布。盡管具有明顯的非線性,但這仍被稱(chēng)為線性分類(lèi)器,當(dāng)中 logits 向量的線性變換學(xué)習(xí)是有監(jiān)督的,因不涉及學(xué)習(xí)任何隱藏層,無(wú)需導(dǎo)數(shù)的反向傳播。FF 可通過(guò)使用真實(shí)數(shù)據(jù)向量作為正例、并使用損壞的數(shù)據(jù)向量作為負(fù)例來(lái)執(zhí)行該表征學(xué)習(xí)。
為使 FF 專(zhuān)注表征形狀圖像的長(zhǎng)期相關(guān)性,我們需要?jiǎng)?chuàng)建具有不同長(zhǎng)期相關(guān)性、但非常相似的短期相關(guān)性的負(fù)數(shù)據(jù),這可以通過(guò)創(chuàng)建一個(gè)包含相當(dāng)大的 1 和 0 區(qū)域的掩碼來(lái)完成。之后通過(guò)將一個(gè)數(shù)字圖像與掩碼相加,為負(fù)數(shù)據(jù)創(chuàng)建混合圖像和一個(gè)不同的數(shù)字圖像來(lái)乘以掩碼的反面(圖 1)。
通過(guò)隨機(jī)位圖開(kāi)始創(chuàng)建蒙版,在水平和垂直方向上使用[1/4, 1/2, 1/4]形式的過(guò)濾器重復(fù)模糊圖像,經(jīng)反復(fù)模糊的圖像閾值設(shè)為 0.5。在使用四個(gè)隱藏層(每個(gè)隱藏層包含 2000 個(gè) ReLU)訓(xùn)練 100 個(gè) epochs 后,若使用最后三個(gè)隱藏層的歸一化活動(dòng)向量作為 softmax 輸入,可得到測(cè)試誤差為1.37%。
此外,不使用完全連接層、而使用局部接受域(沒(méi)有權(quán)重共享)可以提高性能,訓(xùn)練 60 個(gè) epochs 的測(cè)試誤差為 1.16%,該架構(gòu)使用的 "對(duì)等歸一化"可防止任何隱藏單元極度活躍或永久關(guān)閉。
監(jiān)督學(xué)習(xí) FF 算法
在不使用任何標(biāo)簽信息的情況下學(xué)習(xí)隱藏表征,對(duì)最終可能夠執(zhí)行各種任務(wù)的大模型來(lái)說(shuō)非常明智:無(wú)監(jiān)督學(xué)習(xí)提取了一大堆特征供各任務(wù)使用。但如果只對(duì)單任務(wù)感興趣,并想使用一個(gè)小模型,那么監(jiān)督學(xué)習(xí)會(huì)更適合。
監(jiān)督學(xué)習(xí)中使用 FF 的一種方法是在輸入中包含標(biāo)簽,正數(shù)據(jù)由具有正確標(biāo)簽的圖像組成,而負(fù)數(shù)據(jù)由具有錯(cuò)誤標(biāo)簽的圖像組成,標(biāo)簽是二者間的唯一區(qū)別,F(xiàn)F 會(huì)忽略圖像中與標(biāo)簽不相關(guān)的所有特征。
MNIST 圖像中包含有黑色邊框,可減輕卷積神經(jīng)網(wǎng)絡(luò)的工作壓力。當(dāng)使用標(biāo)簽的 N 個(gè)表征中的一個(gè)來(lái)替換前 10 個(gè)像素時(shí),第一個(gè)隱藏層學(xué)習(xí)內(nèi)容也會(huì)輕易顯現(xiàn)。一個(gè)有 4 隱藏層的網(wǎng)絡(luò)中,每個(gè)隱藏層包含 2000 個(gè) ReLU,層與層之間的完全連接在 60 個(gè) epochs 后,經(jīng) MNIST 其測(cè)試誤差為 1.36%,反向傳播要達(dá)到該測(cè)試性能需要大約 20 個(gè) epochs。將 FF 學(xué)習(xí)率加倍并訓(xùn)練 40 個(gè) epochs,可得到稍差的測(cè)試誤差,為 1.46% 。
使用 FF 訓(xùn)練后,通過(guò)從包含測(cè)試數(shù)字和由 10 個(gè) 0.1 條目組成的中性標(biāo)簽的輸入開(kāi)始,由網(wǎng)絡(luò)進(jìn)行一次前向傳遞來(lái)對(duì)測(cè)試數(shù)字進(jìn)行分類(lèi),之后,除第一個(gè)隱藏層外,其他所有隱藏活動(dòng)用作在訓(xùn)練期間學(xué)習(xí)的 softmax 輸入,這是一種快速次優(yōu)的圖像分類(lèi)方法。最好的方式是使用特定標(biāo)簽作為輸入的一部分來(lái)運(yùn)行網(wǎng)絡(luò),并積累除第一個(gè)隱藏層以外的所有層的優(yōu)點(diǎn),在分別對(duì)每個(gè)標(biāo)簽執(zhí)行此操作后,選擇具有最高累積優(yōu)度的標(biāo)簽。在訓(xùn)練過(guò)程中,來(lái)自中性標(biāo)簽的前向傳遞被用于挑選硬負(fù)標(biāo)簽,這使得訓(xùn)練需要約? 的 epochs 。
通過(guò)每個(gè)方向?qū)D像抖動(dòng)最多的兩個(gè)像素用于增加訓(xùn)練數(shù)據(jù),從而為每個(gè)圖像獲得 25 種不同的偏移,當(dāng)中使用了像素空間布局的知識(shí),使其不再是排列不變的。這種用增強(qiáng)數(shù)據(jù)訓(xùn)練同個(gè)網(wǎng)絡(luò) 500 個(gè) epochs,測(cè)試誤差可達(dá)到 0.64%,類(lèi)似于用反向傳播訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)。如圖 2,我們也在第一個(gè)隱藏層中得到了有趣的局部域。
圖 2:在抖動(dòng) MNIST 上訓(xùn)練的網(wǎng)絡(luò)第一個(gè)隱藏層中 100 個(gè)神經(jīng)元的局部域,類(lèi)標(biāo)簽顯示在每張圖像前 10 個(gè)像素中
使用 FF 模擬自上而下的感知效應(yīng)
目前,所有圖像分類(lèi)案例都使用了一次學(xué)習(xí)一層的前饋神經(jīng)網(wǎng)絡(luò),這意味著在后面層中學(xué)到的東西不會(huì)影響前面層的學(xué)習(xí)。這與反向傳播相比似乎是個(gè)主要弱點(diǎn),克服這種明顯限制的關(guān)鍵是,將靜態(tài)圖像視為相當(dāng)無(wú)聊的視頻,由多層遞歸神經(jīng)網(wǎng)絡(luò)處理。
FF 對(duì)正數(shù)據(jù)和負(fù)數(shù)據(jù)都在時(shí)間上向前運(yùn)行,但每層活動(dòng)向量由上一層和下一層在前一個(gè) time-steps 的歸一化活動(dòng)向量確定(圖 3)。對(duì)這種方法是否有效進(jìn)行初步檢查,可以使用由靜態(tài) MNIST 圖像組成的“視頻”輸入,該圖像在每個(gè)時(shí)間幀中簡(jiǎn)單重復(fù),底層是像素圖像,頂層是數(shù)字類(lèi)的 N 個(gè)表征之一,有兩個(gè)或三個(gè)中間層,每層有 2000 個(gè)神經(jīng)元。
在初步實(shí)驗(yàn)中,循環(huán)網(wǎng)絡(luò)運(yùn)行了 10 個(gè) time-steps,每個(gè) time-steps 的偶數(shù)層根據(jù)奇數(shù)層的標(biāo)準(zhǔn)化活動(dòng)進(jìn)行更新,奇數(shù)層根據(jù)新的標(biāo)準(zhǔn)化活動(dòng)更新,其交替更新旨在避免雙相振蕩,但目前似乎并不需要:在有一點(diǎn)阻尼的情況下,基于前一個(gè) time-steps 歸一化狀態(tài),所有隱藏層的同步更新學(xué)習(xí)效果略好,這對(duì)不規(guī)則架構(gòu)而言是有益的。因此,該處實(shí)驗(yàn)使用了同步更新,新的預(yù)歸一化狀態(tài)被設(shè)置為上個(gè)預(yù)歸一化狀態(tài)的 0.3 ,加上了計(jì)算新?tīng)顟B(tài)的 0.7。
圖 3:用于處理視頻的循環(huán)網(wǎng)絡(luò)
如圖 3,網(wǎng)絡(luò)在 MNIST 上訓(xùn)練 60 個(gè) epochs,對(duì)每個(gè)圖像的隱藏層通過(guò)一次自下而上傳遞進(jìn)行初始化。
此后,網(wǎng)絡(luò)運(yùn)行 8 次帶有阻尼的同步迭代,通過(guò)對(duì) 10 個(gè)標(biāo)簽中的每個(gè)標(biāo)簽運(yùn)行 8 次迭代,并選擇在第 3 到 5 次迭代中平均優(yōu)度最高的標(biāo)簽來(lái)評(píng)估網(wǎng)絡(luò)的測(cè)試數(shù)據(jù)性能,測(cè)試誤差為 1.31%。負(fù)數(shù)據(jù)通過(guò)網(wǎng)絡(luò)一次前向傳遞以獲得所有類(lèi)別的概率,根據(jù)概率按比例在不正確的類(lèi)別間進(jìn)行選擇生成,從而提高訓(xùn)練效率。
使用空間上下文的預(yù)測(cè)
循環(huán)網(wǎng)絡(luò)中,其目標(biāo)是令正數(shù)據(jù)的上層輸入和下層的輸入間保持良好的一致性,而負(fù)數(shù)據(jù)的一致性不好。具有空間局部連通性的網(wǎng)絡(luò)中具備一個(gè)理想的屬性:自上而下的輸入將由圖像更大的區(qū)域決定,并且有更多處理階段的結(jié)果,因此它可以被視為對(duì)圖像的上下文預(yù)測(cè),也即是基于圖像局部域自下而上的輸入所應(yīng)產(chǎn)出的結(jié)果。
如果輸入隨時(shí)間變化,自上而下的輸入會(huì)基于較舊的輸入數(shù)據(jù),因此必須學(xué)習(xí)預(yù)測(cè)自下而上輸入的表征。當(dāng)我們反轉(zhuǎn)目標(biāo)函數(shù)的符號(hào),并針對(duì)正數(shù)據(jù)進(jìn)行低平方活動(dòng),自上而下的輸入應(yīng)學(xué)會(huì)抵消正數(shù)據(jù)的自下而上輸入,這樣看來(lái)與預(yù)測(cè)編碼十分相似。層規(guī)范化意味著即使取消工作得很好,大量信息也會(huì)被發(fā)送到下一層,如果所有預(yù)測(cè)誤差都很小,則會(huì)被歸一化放大。
使用上下文預(yù)測(cè)作為局部特征并提取教學(xué)信號(hào)學(xué)習(xí)的想法長(zhǎng)期存在,但難點(diǎn)在于,如何在使用空間上下文、而非單側(cè)時(shí)間上下文的神經(jīng)網(wǎng)絡(luò)中工作。使用自上而下和自下而上輸入的共識(shí)作為自上而下和自下而上權(quán)重的教學(xué)信號(hào),這種方法明顯會(huì)導(dǎo)致崩潰,而使用其他圖像的上下文預(yù)測(cè)來(lái)創(chuàng)建負(fù)數(shù)對(duì)的問(wèn)題也沒(méi)有完全解決。其中,使用負(fù)數(shù)據(jù)而不是任何負(fù)內(nèi)部表征似乎是關(guān)鍵。
CIFAR-10 數(shù)據(jù)集測(cè)試
Hinton 接著在 CIFAR?10 數(shù)據(jù)集上測(cè)試了 FF 算法的性能,證明了 FF 訓(xùn)練出的網(wǎng)絡(luò)在性能上能夠媲美反向傳播。
該數(shù)據(jù)集有 50,000 張 32x32 的訓(xùn)練圖像,每個(gè)像素具有三個(gè)顏色通道,因此,每個(gè)圖像都有 3072 個(gè)維度。由于這些圖像的背景復(fù)雜且高度可變,并且在訓(xùn)練數(shù)據(jù)很有限的情況下無(wú)法很好地建模,除非隱藏層非常小,否則包含兩到三個(gè)隱藏層的全連接網(wǎng)絡(luò)在使用反向傳播進(jìn)行訓(xùn)練時(shí)會(huì)嚴(yán)重過(guò)擬合,因此,目前幾乎所有研究的結(jié)果都是針對(duì)卷積網(wǎng)絡(luò)的。
反向傳播和 FF 都是用權(quán)重衰減來(lái)減少過(guò)擬合,Hinton 對(duì)兩種方法訓(xùn)練的網(wǎng)絡(luò)性能進(jìn)行了比較。對(duì)于 FF 訓(xùn)練的網(wǎng)絡(luò),測(cè)試方法是使用單個(gè)前向傳播,或者讓網(wǎng)絡(luò)對(duì)圖像和 10 個(gè)標(biāo)簽中的每一個(gè)運(yùn)行 10 次迭代,并在第 4 到 6 次迭代中累積標(biāo)簽的能量(即當(dāng)基于優(yōu)度的錯(cuò)誤最低時(shí))。
結(jié)果,雖然 FF 的測(cè)試性能比反向傳播差,但只稍微差了一點(diǎn)。同時(shí),二者間的差距不會(huì)隨著隱藏層的增加而增加。不過(guò),反向傳播可以更快地減少訓(xùn)練誤差。
另外,在序列學(xué)習(xí)上,Hinton 也通過(guò)預(yù)測(cè)序列中下一個(gè)字符的任務(wù)證明了用 FF 訓(xùn)練的網(wǎng)絡(luò)比反向傳播更好。用 FF 訓(xùn)練的網(wǎng)絡(luò)可以生成自己的負(fù)數(shù)據(jù),更符合生物學(xué)。
3
FF 算法與玻爾茲曼機(jī)、GAN、SimCLR 的關(guān)系
Hinton 進(jìn)一步將 FF 算法與其他已有的對(duì)比學(xué)習(xí)方法做了對(duì)比。他的結(jié)論是:
FF 是對(duì)玻爾茲曼機(jī)和簡(jiǎn)單的局部?jī)?yōu)度函數(shù)的結(jié)合;
FF 不需要反向傳播來(lái)學(xué)習(xí)判別模型和生成模型,因此是 GAN 的一個(gè)特例;
在真實(shí)的神經(jīng)網(wǎng)絡(luò)中,與 SimCLR 這類(lèi)自監(jiān)督對(duì)比方法相比,F(xiàn)F 能夠更好地衡量?jī)煞N不同表示之間的一致性。
FF 吸收了玻爾茲曼機(jī)的對(duì)比學(xué)習(xí)
在 20 世紀(jì) 80 年代初期,深度神經(jīng)網(wǎng)絡(luò)有兩種最被看好的學(xué)習(xí)方法,一個(gè)是反向傳播,另一個(gè)便是做無(wú)監(jiān)督對(duì)比學(xué)習(xí)的玻爾茲曼機(jī)(Boltzmann Machines)。
玻爾茲曼機(jī)是一個(gè)隨機(jī)二元神經(jīng)元網(wǎng)絡(luò),具有成對(duì)連接,在兩個(gè)方向上具有相同的權(quán)重。當(dāng)它在沒(méi)有外部輸入的情況下自由運(yùn)行時(shí),玻爾茲曼機(jī)通過(guò)將其設(shè)置為開(kāi)啟狀態(tài)來(lái)重復(fù)更新每個(gè)二元神經(jīng)元,其概率等于它從其他活動(dòng)神經(jīng)元接收到的總輸入的邏輯。這個(gè)簡(jiǎn)單的更新過(guò)程最終從平衡分布中采樣,其中每個(gè)全局配置(將二進(jìn)制狀態(tài)分配給所有神經(jīng)元)具有與其負(fù)能量成比例的對(duì)數(shù)概率。負(fù)能量只是該配置中所有神經(jīng)元對(duì)之間權(quán)重的總和。
玻爾茲曼機(jī)中的神經(jīng)元子集是“可見(jiàn)的”,二進(jìn)制數(shù)據(jù)向量通過(guò)將它們夾在可見(jiàn)神經(jīng)元上呈現(xiàn)給網(wǎng)絡(luò),然后讓它重復(fù)更新其余隱藏神經(jīng)元的狀態(tài)。玻爾茲曼機(jī)器學(xué)習(xí)的目的是使網(wǎng)絡(luò)運(yùn)行時(shí)可見(jiàn)神經(jīng)元上二元向量的分布與數(shù)據(jù)分布自由匹配。
最令人驚訝的是,自由運(yùn)行的玻爾茲曼機(jī)在熱平衡時(shí),可見(jiàn)神經(jīng)元上顯示的數(shù)據(jù)分布和模型分布之間的 Kullback-Liebler 散度具有一個(gè)非常簡(jiǎn)單的導(dǎo)數(shù)(對(duì)于任何權(quán)重):
其中尖括號(hào)表示對(duì)熱平衡時(shí)隨機(jī)波動(dòng)的期望以及第一項(xiàng)的數(shù)據(jù)。
這個(gè)結(jié)果令人興奮的地方在于,它給出了網(wǎng)絡(luò)深處權(quán)重的導(dǎo)數(shù),而無(wú)需顯式傳播誤差導(dǎo)數(shù)。它在清醒和睡眠兩個(gè)不同階段傳播神經(jīng)活動(dòng)。
但是,要在數(shù)學(xué)上使得學(xué)習(xí)規(guī)則最夠簡(jiǎn)潔,代價(jià)會(huì)非常高。它需要一個(gè)深度玻爾茲曼機(jī)來(lái)接近其平衡分布,那么它就無(wú)法作為一種切合實(shí)際的機(jī)器學(xué)習(xí)技術(shù),作為一種皮層學(xué)習(xí)模型也不可信:因?yàn)榇笮途W(wǎng)絡(luò)在感知過(guò)程中沒(méi)有時(shí)間接近其平衡分布。而且,沒(méi)有證據(jù)表明皮層連接的詳細(xì)對(duì)稱(chēng)性,也沒(méi)有明顯的方法來(lái)學(xué)習(xí)序列。此外,如果權(quán)重的許多正更新后跟隨著大量負(fù)更新,且負(fù)階段對(duì)應(yīng)于快速眼動(dòng)睡眠,那玻爾茲曼機(jī)器學(xué)習(xí)程序就會(huì)失敗。
但盡管存在以上缺點(diǎn),玻爾茲曼機(jī)仍是一種很聰明的學(xué)習(xí)方法,因?yàn)樗脙蓚€(gè)工作原理相同但在可見(jiàn)神經(jīng)元上具有不同邊界條件的迭代設(shè)置(即限制在數(shù)據(jù)上 vs. 不予限制),取代了反向傳播的前向和后向傳遞。
玻爾茲曼機(jī)可以看作是兩種思想的結(jié)合:
- 通過(guò)最小化真實(shí)數(shù)據(jù)上的自由能(free energy)和最大化負(fù)數(shù)據(jù)上的自由能來(lái)學(xué)習(xí)網(wǎng)絡(luò)本身產(chǎn)生的數(shù)據(jù)。
- 使用 Hopfield 能量作為能量函數(shù),并使用重復(fù)隨機(jī)更新從能量函數(shù)定義的玻爾茲曼分布中采樣全局配置。
第一種關(guān)于對(duì)比學(xué)習(xí)的思路可以與許多其他能量函數(shù)一起使用。例如,使用前饋神經(jīng)網(wǎng)絡(luò)的輸出來(lái)定義能量,然后通過(guò)該網(wǎng)絡(luò)使用反向傳播來(lái)計(jì)算能量對(duì)權(quán)重和可見(jiàn)狀態(tài)的導(dǎo)數(shù)。然后通過(guò)跟蹤能量對(duì)可見(jiàn)狀態(tài)的導(dǎo)數(shù)來(lái)生成負(fù)數(shù)據(jù)。另外,負(fù)數(shù)據(jù)不必通過(guò)從能量函數(shù)定義的玻爾茲曼分布中采樣數(shù)據(jù)向量來(lái)產(chǎn)生,不從均衡分布中采樣,也能提高具有單個(gè)隱藏層的玻爾茲曼機(jī)的學(xué)習(xí)效率。
在 Hinton 看來(lái),等式 2 的數(shù)學(xué)簡(jiǎn)潔性以及隨機(jī)更新過(guò)程對(duì)所有可能的隱藏配置做貝葉斯積分,這個(gè)過(guò)程實(shí)在非常優(yōu)雅,所以,用只需要傳播神經(jīng)活動(dòng)的兩個(gè)解決方案來(lái)代替反向傳播的前向+反向傳播這種想法,仍然與馬爾可夫鏈蒙特卡羅(Markov Chain Monte Carlo)的復(fù)雜性糾纏在一起。
簡(jiǎn)單的局部?jī)?yōu)度函數(shù)比二元隨機(jī)神經(jīng)元網(wǎng)絡(luò)的自由能更易于處理, FF 則對(duì)玻爾茲曼機(jī)的對(duì)比學(xué)習(xí)與這種函數(shù)做了結(jié)合。
FF 是 GAN 的特例
GAN(生成對(duì)抗網(wǎng)絡(luò))使用多層神經(jīng)網(wǎng)絡(luò)生成數(shù)據(jù),并使用多層判別網(wǎng)絡(luò)來(lái)訓(xùn)練其生成模型,使其相對(duì)于生成模型輸出給出導(dǎo)數(shù),且該導(dǎo)數(shù)是真實(shí)數(shù)據(jù)而非生成數(shù)據(jù)的概率
GAN 很難訓(xùn)練,因?yàn)榕袆e模型和生成模型相互對(duì)抗。GAN 能生成非常漂亮的圖像,但會(huì)遭受模式崩潰的困擾:可能會(huì)存在大片從不生成示例的圖像空間區(qū)域。而且它使用反向傳播來(lái)適應(yīng)每個(gè)網(wǎng)絡(luò),因此我們很難看出如何在皮質(zhì)中實(shí)現(xiàn)它們。
FF 可以看作是 GAN 的一個(gè)特例,其中判別網(wǎng)絡(luò)的每個(gè)隱藏層對(duì)輸入的正負(fù)都會(huì)自己做貪心決策,因此不需要反向傳播來(lái)學(xué)習(xí)判別模型和生成模型,因?yàn)樗皇菍W(xué)習(xí)自己的隱藏表示,而是重用判別模型學(xué)習(xí)的表示。
生成模型唯一需要學(xué)習(xí)的是如何將這些隱藏的表示轉(zhuǎn)換為生成的數(shù)據(jù),如果使用線性變換來(lái)計(jì)算 softmax 的對(duì)數(shù),則不需要反向傳播。對(duì)兩個(gè)模型使用相同的隱藏表示的一個(gè)優(yōu)點(diǎn),是它消除了當(dāng)一個(gè)模型相對(duì)于另一個(gè)模型學(xué)習(xí)太快時(shí)出現(xiàn)的問(wèn)題,還避免了模式崩潰。
FF 比 SimCLR 更容易衡量一致性
像 SimCLR 這類(lèi)自監(jiān)督對(duì)比方法,是通過(guò)優(yōu)化一個(gè)目標(biāo)函數(shù)來(lái)學(xué)習(xí),該函數(shù)能夠支持對(duì)同一圖像的兩種不同剪裁的表示之間的一致性,以及來(lái)自?xún)煞煌瑘D像的剪裁的表示之間的不一致性。
這類(lèi)方法通常使用許多層來(lái)提取剪裁的表示,并通過(guò)反向傳播目標(biāo)函數(shù)的導(dǎo)數(shù)來(lái)訓(xùn)練這些層。如果兩種剪裁總是以完全相同的方式重疊,它們就不起作用,因?yàn)檫@樣它們就可以簡(jiǎn)單地報(bào)告共享像素的強(qiáng)度并獲得完美的一致性。
但在真實(shí)的神經(jīng)網(wǎng)絡(luò)中,測(cè)量?jī)蓚€(gè)不同表示之間的一致性并非易事,且沒(méi)辦法使用相同的權(quán)重同時(shí)提取兩種剪裁的表示。
而 FF 使用不同的方式來(lái)衡量一致性,這對(duì)于真實(shí)的神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)似乎更容易。
許多不同的信息來(lái)源為同一組神經(jīng)元提供輸入。如果來(lái)源就激活哪些神經(jīng)元達(dá)成一致,將產(chǎn)生正干擾,從而導(dǎo)致高平方活動(dòng),如果它們有分歧,則平方活動(dòng)將降低。通過(guò)使用正干擾來(lái)測(cè)量一致性比比較兩個(gè)不同的表示向量要靈活得多,因?yàn)椴恍枰獙⑤斎肴我夥殖蓛蓚€(gè)單獨(dú)的源。
SimCLR 這類(lèi)方法的一個(gè)主要弱點(diǎn)是大量計(jì)算用于推導(dǎo)兩個(gè)圖像裁剪的表示,但目標(biāo)函數(shù)僅對(duì)表示提供適度的約束,這限制了有關(guān)域的信息的速率可以注入權(quán)重。為了使剪裁的表示更接近其正確的配對(duì)而非替代品,只需要 20 比特信息。FF 的問(wèn)題更嚴(yán)重,因?yàn)樗恍枰?1 比特來(lái)區(qū)分正例和負(fù)例。
解決這種約束貧乏的方法是將每一層分成許多小塊,并強(qiáng)制每個(gè)塊分別使用其預(yù)歸一化活動(dòng)向量的長(zhǎng)度來(lái)決定正例和負(fù)例。然后,滿足約束所需的信息隨塊數(shù)線性縮放,這比在類(lèi)似 SimCLR 的方法中使用更大的對(duì)比度集實(shí)現(xiàn)的對(duì)數(shù)縮放要好得多。
堆棧對(duì)比學(xué)習(xí)存在的問(wèn)題
學(xué)習(xí)多層表示的一種無(wú)監(jiān)督方法,是首先學(xué)習(xí)一個(gè)隱藏層,該隱藏層捕獲數(shù)據(jù)中的某些結(jié)構(gòu),然后將該層中的活動(dòng)向量視為數(shù)據(jù)、并再次應(yīng)用相同的無(wú)監(jiān)督學(xué)習(xí)算法。這就是使用受限玻爾茲曼機(jī) (RBM)或堆棧自編碼器(stacked autoencoder)學(xué)習(xí)多層表示的方式。
但它有一個(gè)致命的缺陷。假設(shè)我們通過(guò)隨機(jī)權(quán)重矩陣映射一些隨機(jī)噪聲圖像。生成的活動(dòng)向量將具有由權(quán)重矩陣創(chuàng)建的相關(guān)結(jié)構(gòu),與數(shù)據(jù)無(wú)關(guān)。當(dāng)將無(wú)監(jiān)督學(xué)習(xí)應(yīng)用于這些活動(dòng)向量時(shí),它會(huì)發(fā)現(xiàn)其中的一些結(jié)構(gòu),但這不會(huì)告訴系統(tǒng)任何關(guān)于外部世界的信息。
最初的玻爾茲曼機(jī)器學(xué)習(xí)算法旨在通過(guò)對(duì)比由兩種不同外部邊界條件引起的統(tǒng)計(jì)數(shù)據(jù)來(lái)避免此缺陷。這抵消了所有只是網(wǎng)絡(luò)其他部分的結(jié)果的結(jié)構(gòu)。在對(duì)比正負(fù)數(shù)據(jù)時(shí),無(wú)需限制布線,也不要求剪裁之間具有隨機(jī)空間關(guān)系以防止網(wǎng)絡(luò)作弊。這樣便很容易獲得大量相互連接的神經(jīng)元組,每個(gè)神經(jīng)元組都有自己的目標(biāo)即區(qū)分正數(shù)據(jù)和負(fù)數(shù)據(jù)。
4
在未來(lái)非永生計(jì)算機(jī)上
FF 是最佳學(xué)習(xí)算法
Mortal Computation 是 Hinton 近期的重要觀點(diǎn)之一(注:該術(shù)語(yǔ)尚未有公認(rèn)的中文翻譯,暫譯為“非永生計(jì)算”)。
他指出,目前的通用數(shù)字計(jì)算機(jī)被設(shè)計(jì)為忠實(shí)地遵循指令,人們認(rèn)為讓通用計(jì)算機(jī)執(zhí)行特定任務(wù)的唯一方法,就是編寫(xiě)一個(gè)程序,以極其詳細(xì)的方式準(zhǔn)確指定要做的事。
主流的想法仍然是堅(jiān)持軟件應(yīng)該與硬件分離,以便相同的程序或相同的權(quán)重集可以在硬件的不同物理副本上運(yùn)行。這就會(huì)使得程序或權(quán)重中包含的知識(shí)變得“不朽”:即硬件死亡時(shí),知識(shí)不會(huì)隨之消亡。
但這已經(jīng)不再成立,研究界還未充分理解深度學(xué)習(xí)對(duì)計(jì)算機(jī)構(gòu)建方式的長(zhǎng)期影響。
軟件與硬件的分離是計(jì)算機(jī)科學(xué)的基礎(chǔ)之一,它的確帶來(lái)了很多好處,如可以研究程序的特性而不必關(guān)心電氣工程,而且它使得編寫(xiě)一次程序、并將其復(fù)制到數(shù)百萬(wàn)臺(tái)計(jì)算機(jī)成為可能。但 Hinton 指出:
如果我們?cè)敢夥艞夁@種“不朽”,就可以大大節(jié)省執(zhí)行計(jì)算所需的能量以及制造執(zhí)行計(jì)算的硬件的成本。
這樣一來(lái),執(zhí)行相同任務(wù)的不同硬件實(shí)例在連接性和非線性上就有可能發(fā)生較大的變化,并從學(xué)習(xí)過(guò)程中發(fā)現(xiàn)有效利用每個(gè)特定實(shí)例的未知屬性的參數(shù)值硬件。這些參數(shù)值僅對(duì)特定的硬件實(shí)例有用,因此它們執(zhí)行的計(jì)算是并非不朽,而是會(huì)隨硬件一起消亡。
將參數(shù)值復(fù)制到工作方式不同的不同硬件本身的確沒(méi)有任何意義,但我們可以用一種更生物學(xué)的方法可以將一個(gè)硬件學(xué)到的東西轉(zhuǎn)移到另一個(gè)硬件。對(duì)于圖像中對(duì)象分類(lèi)這樣的任務(wù),我們真正感興趣的是將像素強(qiáng)度與類(lèi)標(biāo)簽相關(guān)聯(lián)的函數(shù),而不是在特定硬件中實(shí)現(xiàn)該函數(shù)的參數(shù)值。
函數(shù)本身可以通過(guò)使用蒸餾轉(zhuǎn)移到不同的硬件:訓(xùn)練新硬件不僅給出與舊硬件相同的答案,而且輸出相同的概率對(duì)于不正確的答案。這些概率更豐富地表明了舊模型如何概括,而不僅僅是它認(rèn)為最有可能的標(biāo)簽。因此,通過(guò)訓(xùn)練新模型來(lái)匹配錯(cuò)誤答案的概率,我們正在訓(xùn)練它以與舊模型相同的方式進(jìn)行概括。這樣的神經(jīng)網(wǎng)絡(luò)訓(xùn)練實(shí)際上優(yōu)化了泛化性,這個(gè)例子十分罕見(jiàn)。
如果想讓一個(gè)萬(wàn)億參數(shù)神經(jīng)網(wǎng)絡(luò)只消耗幾瓦特,非永生計(jì)算可能是唯一的選擇。它的可行性取決于,我們能否找到一種可以在精確細(xì)節(jié)未知的硬件中高效運(yùn)行的學(xué)習(xí)過(guò)程,在 Hinton 看來(lái),FF 算法就是一個(gè)很有前途的方案,只是它在擴(kuò)展到大型神經(jīng)網(wǎng)絡(luò)時(shí)的表現(xiàn)還有待觀察。
論文最后,Hinton 指出了以下懸而未決的問(wèn)題:
- FF 能否生成足夠好的圖像或視頻生成模型來(lái)創(chuàng)建無(wú)監(jiān)督學(xué)習(xí)所需要的負(fù)數(shù)據(jù)?
- 如果負(fù)向傳遞在睡眠期間完成,正向和負(fù)向傳遞能否可以在時(shí)間上非常廣泛地區(qū)分開(kāi)來(lái)?
- 如果負(fù)相位被消除了一段時(shí)間,其效果是否與嚴(yán)重睡眠剝奪的破壞性影響相似?
- 使用什么哪種 goodness 函數(shù)最好?本文在大多數(shù)實(shí)驗(yàn)中使用活動(dòng)平方和,但最小化正數(shù)據(jù)的活動(dòng)平方和和最大化負(fù)數(shù)據(jù)的活動(dòng)平方和似乎效果稍好一些。
- 最好使用哪種激活函數(shù)?目前只研究了 ReLU。使激活成為 t 分布下密度的負(fù)對(duì)數(shù)是一種可能性。
- 對(duì)于空間數(shù)據(jù),F(xiàn)F 是否可以從圖像不同區(qū)域的大量局部?jī)?yōu)化函數(shù)中獲益?如果可行,就能加快學(xué)習(xí)速度。
- 對(duì)于順序數(shù)據(jù),是否可以使用快速權(quán)重來(lái)模擬簡(jiǎn)化的轉(zhuǎn)換器?
- 一組試圖最大化其平方活動(dòng)的特征檢測(cè)器和一組試圖最小化其平方活動(dòng)的約束違反檢測(cè)器,能否支持 FF?