Richard Sutton 直言卷積反向傳播已經(jīng)落后,AI 突破要有新思路:持續(xù)反向傳播
“可塑性損失”(Loss of Plasticity)是深度神經(jīng)網(wǎng)絡(luò)最常被詬病的一個缺點,這也是基于深度學習的 AI 系統(tǒng)被認為無法持續(xù)學習的原因之一。
對于人腦而言,“可塑性”是指產(chǎn)生新神經(jīng)元和神經(jīng)元之間新連接的能力,是人進行持續(xù)學習的重要基礎(chǔ)。隨著年齡的增長,作為鞏固已學到知識的代價,大腦的可塑性會逐漸下降。神經(jīng)網(wǎng)絡(luò)也是類似。
一個形象的例子是,2020 年熱啟動式(warm-starting)訓練被證明:只有拋除最初學到的內(nèi)容,以一次性學習的方式在整個數(shù)據(jù)集上訓練,才會取得比較好的學習效果。
在深度強化學習(DRL)中,AI 系統(tǒng)往往也要“遺忘”神經(jīng)網(wǎng)絡(luò)之前所學習的所有內(nèi)容,只將部分內(nèi)容保存到回放緩沖區(qū),再從零開始實現(xiàn)不斷學習。這種重置網(wǎng)絡(luò)的方式也被認為證明了深度學習無法持續(xù)學習。
那么,如何才能使學習系統(tǒng)保持可塑性?
近日,強化學習之父 Richard Sutton 在 CoLLAs 2022 會議中作了一個題為“Maintaining Plasticity in Deep Continual Learning” 的演講,提出了他認為能夠解決這個問題的答案:持續(xù)反向傳播算法(Continual Backprop)。
Richard Sutton 首先從數(shù)據(jù)集的角度證明了可塑性損失的存在,然后從神經(jīng)網(wǎng)絡(luò)內(nèi)部分析了可塑性損失的原因,最后提出持續(xù)反向傳播算法作為解決可塑性損失的途徑:重新初始化一小部分效用度較低的神經(jīng)元,這種多樣性的持續(xù)注入可以無限期地保持深度網(wǎng)絡(luò)的可塑性。
以下是演講全文,AI 科技評論做了不改原意的整理。
1 可塑性損失的真實存在
深度學習是否能真正解決持續(xù)學習的問題?
答案是否定的,主要原因有以下三點:
- “無法解決”是指如同非深度的線性網(wǎng)絡(luò),學習速度最終會非常緩慢;
- 深度學習中采用的專業(yè)標準化方法只在一次性學習中有效,與持續(xù)學習相違背;
- 回放緩存本身就是承認深度學習不可行的極端方法。
因此,我們必須尋找適用于這種新型學習模式的更優(yōu)算法,擺脫一次性學習的局限性。
首先,我們利用 ImageNet 和 MNIST 數(shù)據(jù)集做分類任務(wù),實現(xiàn)回歸預(yù)測,對持續(xù)學習效果進行直接測試,證明了監(jiān)督學習中可塑性損失的存在。
ImageNet 數(shù)據(jù)集測試
ImageNet 是一個包含數(shù)百萬張用名詞標記的圖像的數(shù)據(jù)集。它有 1000 個類別,每個類別有700張或更多圖像,被廣泛用于類別學習和類別預(yù)測。
下面是一張鯊魚照片,通過下采樣降到 32*32 大小。這個實驗的目的是從深度學習實踐中尋找最小的變化。我們將每個類別的 700 張圖像劃分成 600 個訓練樣例和 100 個測試樣例,然后將 1000 個類別分成兩組,生成長度為 500 的二元分類任務(wù)序列,所有的數(shù)據(jù)集會被隨機地打亂順序。每個任務(wù)訓練結(jié)束后,我們在測試樣例上評估模型的準確率,獨立運行 30 次后取平均,再進入下一個二元分類任務(wù)。
500 個分類任務(wù)會共享相同的網(wǎng)絡(luò),為了消除復雜性影響,任務(wù)切換后會重置頭網(wǎng)絡(luò)。我們采用標準網(wǎng)絡(luò),即 3 層卷積 + 3 層全連接,不過對于 ImageNet 數(shù)據(jù)集來說輸出層可能相對小一些,這是由于一個任務(wù)只用了兩種類別。對于每個任務(wù),每 100 個示例作為一個 batch,共有 12 個 batch,訓練 250 個 epoch。在開始第一個任務(wù)前只進行一次初始化,利用 Kaiming 分布初始化權(quán)重。針對交叉熵損失采用基于動量的隨機梯度下降法,同時采用 ReLU 激活函數(shù)。
這里引出兩個問題:
1、在任務(wù)序列中,性能會如何演化?
2、在哪一個任務(wù)上的性能會更好?是初始的第一個任務(wù)會更好?還是后續(xù)任務(wù)會從前面任務(wù)的經(jīng)驗中獲益?
下圖給出了答案,持續(xù)學習的性能是由訓練步長和反向傳播綜合決定的。
由于是二分類問題,偶然性概率是 50%,陰影區(qū)域表示標準差,這種差異并不顯著。線性基準采用線性層直接處理像素值,沒有深度學習方法效果好,這種差異很顯著。
圖注:使用更小的學習率(α=0.001)準確率會更高,在前 5 個任務(wù)中性能逐步提升,但從長遠來看卻呈下降趨勢。
我們接著將任務(wù)數(shù)目增加到了 2000,進一步分析了學習率對于持續(xù)學習效果的影響,平均每 50 個任務(wù)計算一次準確率。結(jié)果如下圖。
圖注:α=0.01 的紅色曲線在第一個任務(wù)上的準確率大約是 89%,一旦任務(wù)數(shù)超過 50,準確率便下降,隨著任務(wù)數(shù)進一步增加,可塑性逐漸缺失,最終準確率低于線性基準。α=0.001 時,學習速度減慢,可塑性也會急劇降低,準確率只是比線性網(wǎng)絡(luò)高一點點。
因此,對于良好的超參數(shù),任務(wù)間的可塑性會衰減,準確率會比只使用一層神經(jīng)網(wǎng)絡(luò)還要低,紅色曲線所顯示的幾乎就是“災(zāi)難性的可塑性缺失”。
訓練結(jié)果同樣取決于迭代次數(shù)、步長數(shù)和網(wǎng)絡(luò)尺寸等參數(shù),圖中每條曲線在多個處理器上的訓練時間是 24 小時,在做系統(tǒng)性實驗時可能并不實用,我們接下來選擇 MNIST 數(shù)據(jù)集進行測試。
MNIST 數(shù)據(jù)集測試
MNIST 數(shù)據(jù)集共包含 60000 張手寫數(shù)字圖像,有 0-9 這 10 個類別,為 28*28 的灰度圖像。
Goodfellow 等人曾通過打亂順序或者隨機排列像素創(chuàng)建一種新的測試任務(wù),如右下角的圖像就是生成的排列圖像的示例,我們采用這種方法來生成整個任務(wù)序列,在每個任務(wù)中 6000 張圖像以隨機的形式呈現(xiàn)。這里沒有增加任務(wù)內(nèi)容,網(wǎng)絡(luò)權(quán)重只在進行第一個任務(wù)之前初始化一次。我們可以用在線的交叉熵損失進行訓練,同樣繼續(xù)使用準確率指標衡量持續(xù)學習的效果。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為 4 層全連接層,前 3 層神經(jīng)元數(shù)為 2000,最后一層神經(jīng)元數(shù)為 10。由于 MNIST 數(shù)據(jù)集的圖像居中并進行過縮放,所以可以不執(zhí)行卷積操作。所有的分類任務(wù)共享相同的網(wǎng)絡(luò),采用了不含動量的隨機梯度下降法,其他的設(shè)置與 ImageNet 數(shù)據(jù)集測試的設(shè)置相同。
圖注:中間的圖是在任務(wù)序列上獨立運行 30 次取平均值后的結(jié)果,每個任務(wù)有 6000 個樣本,由于是分類任務(wù),開始時隨機猜的準確率是 10%,模型學習到排列圖像的規(guī)律后,預(yù)測準確率會逐漸提升,但切換任務(wù)后,準確率又降到 10%,所以總體呈現(xiàn)不斷波動趨勢。右邊的圖是模型在每個任務(wù)上的學習效果,初始準確率為 0,隨著時間推移,效果逐漸變好。在第 10 個任務(wù)上的準確率比第 1 個任務(wù)好,但在進行第 100 個任務(wù)時準確率有所下降,在第 800 個任務(wù)上的準確率比第一個還要低。
為了弄清楚整個過程,后續(xù)還需要重點分析凸起部分的準確率,對其取均值后得到中間圖像的藍色曲線??梢郧逦乜吹?,準確率剛開始會逐步提升,后面直到第 100 個任務(wù)時趨于平穩(wěn)。那在第 800 個任務(wù)時準確率為什么會急劇下降呢?
接下來,我們在更多的任務(wù)序列上嘗試了不同的步長值,進一步觀察它們的學習效果。結(jié)果如下圖:
圖注:紅色曲線采用和前面實驗相同的步長值,準確率的確在穩(wěn)步下降,可塑性損失相對較大。
同時,學習率越大,可塑性減小的速度就越快。所有的步長值都會存在巨大的可塑性損失。此外,隱藏層神經(jīng)元數(shù)目也會影響準確率,棕色曲線的神經(jīng)元數(shù)目為 10000,由于神經(jīng)網(wǎng)絡(luò)的擬合能力增強,此時準確率會下降得非常緩慢,仍有可塑性損失,但網(wǎng)絡(luò)尺寸越小,可塑性減小的速度也越快。
那么從神經(jīng)網(wǎng)絡(luò)內(nèi)部來看,為什么會產(chǎn)生可塑性損失?
下圖解釋了其中的原因??梢园l(fā)現(xiàn),“死亡”神經(jīng)元數(shù)目占比過高、神經(jīng)元的權(quán)重過大以及神經(jīng)元多樣性喪失,都是產(chǎn)生可塑性損失的原因。
圖注:橫軸仍然都表示任務(wù)編號,第一張圖的縱軸表示“死亡”神經(jīng)元的百分比,“死亡”神經(jīng)元是指輸出和梯度總為 0 的神經(jīng)元,不再預(yù)測網(wǎng)絡(luò)的可塑性。第二張圖的縱軸表示權(quán)重大小。第三張圖的縱軸表示剩余隱藏神經(jīng)元數(shù)目的有效等級。
2 現(xiàn)有方法的局限性
我們分析了現(xiàn)有的、反向傳播以外的深度學習方法是否會有助于保持可塑性。
結(jié)果表明,L2 正則化方法會使可塑性損失減小,在此過程中令權(quán)重縮小到 0,從而可以動態(tài)調(diào)整并保持可塑性。
收縮和擾動方法與 L2 正則化類似,同時還會向所有權(quán)重中加入隨機噪聲增加多樣性,基本不會有可塑性損失。
我們還嘗試了其他在線標準化方法,開始時效果還比較好,但隨著持續(xù)學習可塑性損失嚴重。Dropout 方法的表現(xiàn)更糟糕,我們隨機將一部分神經(jīng)元設(shè)置為0再訓練,發(fā)現(xiàn)可塑性損失急劇加大。
各種方法對神經(jīng)網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu)也會產(chǎn)生影響。使用正則化方法會使“死亡”神經(jīng)元數(shù)量百分比上升,因為在將權(quán)重縮小到 0 的過程中,如果其一直為 0 ,就會導致輸出為 0,神經(jīng)元就會“死亡”。而收縮和擾動向權(quán)重中添加了隨機噪聲,所以不會有太多的“死亡”神經(jīng)元。標準化方法也有很多的“死亡”神經(jīng)元,它似乎在朝著錯誤的方向走,Dropout 也類似。
權(quán)值隨任務(wù)數(shù)量變化的結(jié)果更為合理,使用正則化會獲得很小的權(quán)值,收縮和擾動在正則化的基礎(chǔ)上添加了噪聲,權(quán)值下降幅度相對減弱,而標準化則會使權(quán)重變大。但是對于 L2 正則化以及收縮和擾動方,其隱藏神經(jīng)元數(shù)有效等級相對較低,說明其在保持多樣性方面表現(xiàn)較差,這也是一個問題。
緩慢變化的回歸問題(SCR)
我們所有的 idea 和算法都源自緩慢變化的回歸問題實驗,這是一個聚焦于持續(xù)學習的新的理想化問題。
在這個實驗中,我們的目的是要實現(xiàn)一個具有隨機權(quán)重的單層神經(jīng)網(wǎng)絡(luò)形成的目標函數(shù),隱藏層神經(jīng)元為 100 個線性閾值神經(jīng)元。
我們沒有做分類,只是生成了一個數(shù)字,因此這是一個回歸問題。每訓練 10000 步,我們才會從輸入的后 15 位中選擇 1 位進行翻轉(zhuǎn),因此這是一個緩慢變化的目標函數(shù)。
我們的解決方案是用相同的網(wǎng)絡(luò)結(jié)構(gòu),只包含一個神經(jīng)元的隱藏層,同時保證激活函數(shù)可微,但是我們將會有 5 個隱藏神經(jīng)元。這就類似于在 RL 中,智能體探索的范圍比交互的環(huán)境小很多,所以只能做近似處理,隨著目標函數(shù)的變化嘗試改變近似值,這樣就會容易做一些系統(tǒng)性實驗。
圖注:輸入為 21 位隨機的二進制數(shù),第 1 位是值為 1 的輸入常數(shù)偏差,中間 5 位是獨立同分布的隨機數(shù),其他 15 位是緩慢變化的常數(shù),輸出為實數(shù)。權(quán)值隨機化為 0,可以隨機地選擇 +1 或者 -1。
我們進一步研究了變化的步長值和激活函數(shù)對學習效果的影響,比如這里用了 tanh、sigmoid 和 relu 激活函數(shù)等:
以及激活函數(shù)形式對所有算法學習效果的影響:
在步長和激活函數(shù)同時變化的情況下,我們也對 Adam 反向傳播的影響做了系統(tǒng)性分析:
最后是使用不同激活函數(shù)后,基于 Adam 機制的不同算法之間的誤差變化情況:
以上實驗結(jié)果都表明深度學習方法已經(jīng)不再適用于持續(xù)學習,遇到新的問題時,學習過程會變得非常緩慢,沒有體現(xiàn)出深度的優(yōu)勢。深度學習中的標準化方法也只適合一次性學習,我們需要改進深度學習方法才有可能將其用于持續(xù)學習中。
3 持續(xù)反向傳播
卷積反向傳播算法本身會是一個好的持續(xù)學習算法嗎?
我們認為不是。
卷積反向傳播算法主要包含兩個方面:用小的隨機權(quán)重進行初始化和在每個時間步進行梯度下降。盡管它在開始生成小的隨機數(shù)來初始化權(quán)重,但并不會再次重復。理想情況下,我們可能需要一些在任何時候都可以進行類似計算的學習算法。
那我們?nèi)绾问咕矸e反向傳播算法持續(xù)地學習?
最簡單的方法就是選擇性地進行重新初始化,比如在執(zhí)行幾項任務(wù)后進行初始化。但同時,重新初始化整個網(wǎng)絡(luò)在持續(xù)學習中可能并不合理,因為這意味著神經(jīng)網(wǎng)絡(luò)正在忘記全部所學內(nèi)容。所以我們最好選擇性地初始化神經(jīng)網(wǎng)絡(luò)的一部分,比如重新初始化一些“死亡”神經(jīng)元,或者根據(jù)效用度對神經(jīng)網(wǎng)絡(luò)進行排序,重新初始化效用度較低的神經(jīng)元。
隨機選擇初始化的思想與 2012 年 Mahmood 和 Sutton 提出的生成和測試方法有關(guān),只需要生成一些神經(jīng)元并測試它們的實用性,持續(xù)反向傳播算法搭建了這兩個概念之間的橋梁。生成和測試方法存在一些局限性,只用一個隱藏層并只有一個輸出神經(jīng)元,我們將其擴展到多層網(wǎng)絡(luò),可以用一些深度學習方法進行優(yōu)化。
我們首先考慮將網(wǎng)絡(luò)設(shè)置成多層,不再是單個輸出。之前的工作提到過效用度的概念,由于只有一個權(quán)重,這個效用度只是權(quán)重層面的概念,但是我們有多個權(quán)重,最簡單的泛化是考慮權(quán)重求和層面的效用度。
另一個想法是考慮特征的活動,而不僅僅是考慮輸出權(quán)重,因此我們可以將權(quán)重的總和乘以平均特征激活函數(shù),從而分配不同的比例。我們希望設(shè)計能夠持續(xù)學習并保持快速運行的算法,我們在計算效用度的時候還考慮了特征的可塑性。最后,將特征的平均貢獻轉(zhuǎn)移到輸出的偏置中,降低特征刪除的影響。
未來的改進方向主要有兩點:(1)我們需要對效用度進行全局度量,衡量神經(jīng)元對所表征的整個函數(shù)的影響,而不僅僅局限于輸入權(quán)重、輸出權(quán)重和激活函數(shù)這樣的局部度量;(2)我們需要進一步改進生成器,目前只是從初始分布中采樣進行進行初始化,還要探索可以改善性能的初始化方法。
那么,持續(xù)反向傳播在保持可塑性方面表現(xiàn)如何呢?
實驗結(jié)果表明,持續(xù)反向傳播利用在線排列的 MNIST 數(shù)據(jù)集訓練,完全保持了可塑性。下圖中的藍色曲線顯示了這一結(jié)果。
圖注:右圖顯示了不同替換率對于持續(xù)學習的影響,例如替換率為 1e-6 表示在每個時間步長替換 1/1000000 個表征。即假設(shè)有 2000 個特征,每走 500 步,就會在每一層更換一個神經(jīng)元。這個更新速度非常緩慢,所以替換率對超參數(shù)不是很敏感,不會顯著影響學習效果。
接下來,我們需要研究持續(xù)反向傳播對于神經(jīng)網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu)的影響。持續(xù)反向傳播幾乎沒有“死亡”神經(jīng)元,因為效用度考慮了平均特征激活,如果某個神經(jīng)元“死亡”,會立即被更換。而且由于我們不斷更換神經(jīng)元,我們得到了權(quán)重幅度較小的新神經(jīng)元。因為隨機初始化了神經(jīng)元,它們也相應(yīng)地保留了更豐富的表征和多樣性。
因此,持續(xù)反向傳播解決了 MNIST 數(shù)據(jù)集上可塑性缺失引發(fā)的全部問題。
那么,持續(xù)反向傳播是否可以擴展到更深的卷積神經(jīng)網(wǎng)絡(luò)中?
答案是肯定的!在 ImageNet 數(shù)據(jù)集上,持續(xù)反向傳播完全保持了可塑性,模型最終的準確率在 89% 左右。其實在初始的訓練階段,這幾種算法的表現(xiàn)相當,前面提到過替換率的變化非常緩慢,任務(wù)數(shù)目足夠大的時候才近似的比較好。
這里以“Slippery Ant”問題為例展示一個強化學習的實驗結(jié)果。
“Slippery Ant”問題是非平穩(wěn)強化問題的一個擴展,與 PyBullet 環(huán)境基本類似,唯一不同的是地面和智能體之間的摩擦力每 1000 萬步后會發(fā)生變化。我們基于持續(xù)反向傳播實現(xiàn)了持續(xù)學習版本的 PPO 算法,可以選擇性初始化。PPO 算法和持續(xù) PPO 算法的對比結(jié)果如下圖。
圖注:PPO 算法在剛開始表現(xiàn)還不錯,但隨著訓練進行性能不斷下降,引入 L2 算法以及收縮和擾動算法后會有所緩解。而持續(xù) PPO 算法的表現(xiàn)相對較好,保留了大部分可塑性。
有趣的是,PPO 算法訓練的智能體只能掙扎著走路,但是持續(xù) PPO 算法訓練的智能體可以跑到很遠的地方。
4 結(jié)論
深度學習網(wǎng)絡(luò)主要為一次性學習進行優(yōu)化,從某種意義上說用于持續(xù)學習可能會完全失敗。像標準化和 DropOut 等深度學習方法對于持續(xù)學習可能沒有幫助,但是在此基礎(chǔ)上做一些小的改進可能會非常有效,比如持續(xù)反向傳播。
持續(xù)反向傳播根據(jù)神經(jīng)元的效用對網(wǎng)絡(luò)特征進行排序,特別是對于遞歸神經(jīng)網(wǎng)絡(luò),排序方式可能有更多改進方法。
強化學習算法利用了策略迭代思想,持續(xù)學習問題固然存在,保持深度學習網(wǎng)絡(luò)的可塑性為 RL 和基于模型的 RL 開辟了巨大的新可能性。