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