Richard Sutton 直言卷積反向傳播已經落後,AI 突破要有新思路:持續反向傳播

.. 作者 | Richard Sutton

編譯 | bluemin

編輯 | 陳彩嫻

「可塑性損失」(Loss of Plasticity)是深度神經網絡最常被詬病的一個缺點,這也是基於深度學習的 AI 系統被認為無法持續學習的原因之一。

對於人腦而言,「可塑性」是指產生新神經元和神經元之間新連接的能力,是人進行持續學習的重要基礎。隨着年齡的增長,作為鞏固已學到知識的代價,大腦的可塑性會逐漸下降。神經網絡也是類似。

一個形象的例子是,2020 年熱啟動式(warm-starting)訓練被證明:只有拋除最初學到的內容,以一次性學習的方式在整個數據集上訓練,才會取得比較好的學習效果。

在深度強化學習(DRL)中,AI 系統往往也要「遺忘」神經網絡之前所學習的所有內容,只將部分內容保存到回放緩衝區,再從零開始實現不斷學習。這種重置網絡的方式也被認為證明了深度學習無法持續學習。

那麼,如何才能使學習系統保持可塑性?

近日,強化學習之父 Richard Sutton 在 CoLLAs 2022 會議中作了一個題為「Maintaining Plasticity in Deep Continual Learning」 的演講,提出了他認為能夠解決這個問題的答案:持續反向傳播算法(Continual Backprop)。

Richard Sutton 首先從數據集的角度證明了可塑性損失的存在,然後從神經網絡內部分析了可塑性損失的原因,最後提出持續反向傳播算法作為解決可塑性損失的途徑:重新初始化一小部分效用度較低的神經元,這種多樣性的持續注入可以無限期地保持深度網絡的可塑性。

以下是演講全文,AI 科技評論做了不改原意的整理。



1

可塑性損失的真實存在

深度學習是否能真正解決持續學習的問題?

答案是否定的,主要原因有以下三點:

  1. 「無法解決」是指如同非深度的線性網絡,學習速度最終會非常緩慢;

  1. 深度學習中採用的專業標準化方法只在一次性學習中有效,與持續學習相違背;

  1. 回放緩存本身就是承認深度學習不可行的極端方法。

因此,我們必須尋找適用於這種新型學習模式的更優算法,擺脫一次性學習的局限性。

首先,我們利用 ImageNet 和 MNIST 數據集做分類任務,實現回歸預測,對持續學習效果進行直接測試,證明了監督學習中可塑性損失的存在。

ImageNet數據集測試

ImageNet 是一個包含數百萬張用名詞標記的圖像的數據集。它有 1000 個類別,每個類別有700張或更多圖像,被廣泛用於類別學習和類別預測。

下面是一張鯊魚照片,通過下採樣降到 32*32 大小。這個實驗的目的是從深度學習實踐中尋找最小的變化。我們將每個類別的 700 張圖像劃分成 600 個訓練樣例和 100 個測試樣例,然後將 1000 個類別分成兩組,生成長度為 500 的二元分類任務序列,所有的數據集會被隨機地打亂順序。每個任務訓練結束后,我們在測試樣例上評估模型的準確率,獨立運行 30 次后取平均,再進入下一個二元分類任務。

500 個分類任務會共享相同的網絡,為了消除複雜性影響,任務切換後會重置頭網絡。我們採用標準網絡,即 3 層卷積 + 3 層全連接,不過對於 ImageNet 數據集來說輸出層可能相對小一些,這是由於一個任務只用了兩種類別。對於每個任務,每 100 個示例作為一個 batch,共有 12 個 batch,訓練 250 個 epoch。在開始第一個任務前只進行一次初始化,利用 Kaiming 分佈初始化權重。針對交叉熵損失採用基於動量的隨機梯度下降法,同時採用 ReLU 激活函數。

這裡引出兩個問題:

1、在任務序列中,性能會如何演化?

2、在哪一個任務上的性能會更好?是初始的第一個任務會更好?還是後續任務會從前面任務的經驗中獲益?

下圖給出了答案,持續學習的性能是由訓練步長和反向傳播綜合決定的。

由於是二分類問題,偶然性概率是 50%,陰影區域表示標準差,這種差異並不顯著。線性基準採用線性層直接處理像素值,沒有深度學習方法效果好,這種差異很顯著。

圖註:使用更小的學習率(α=0.001)準確率會更高,在前 5 個任務中性能逐步提升,但從長遠來看卻呈下降趨勢。

我們接着將任務數目增加到了 2000,進一步分析了學習率對於持續學習效果的影響,平均每 50 個任務計算一次準確率。結果如下圖。

圖註:α=0.01 的紅色曲線在第一個任務上的準確率大約是 89%,一旦任務數超過 50,準確率便下降,隨着任務數進一步增加,可塑性逐漸缺失,最終準確率低於線性基準。α=0.001 時,學習速度減慢,可塑性也會急劇降低,準確率只是比線性網絡高一點點。

因此,對於良好的超參數,任務間的可塑性會衰減,準確率會比只使用一層神經網絡還要低,紅色曲線所顯示的幾乎就是「災難性的可塑性缺失」。

訓練結果同樣取決於迭代次數、步長數和網絡尺寸等參數,圖中每條曲線在多個處理器上的訓練時間是 24 小時,在做系統性實驗時可能並不實用,我們接下來選擇 MNIST 數據集進行測試。

MNIST數據集測試

MNIST 數據集共包含 60000 張手寫數字圖像,有 0-9 這 10 個類別,為 28*28 的灰度圖像。

Goodfellow 等人曾通過打亂順序或者隨機排列像素創建一種新的測試任務,如右下角的圖像就是生成的排列圖像的示例,我們採用這種方法來生成整個任務序列,在每個任務中 6000 張圖像以隨機的形式呈現。這裡沒有增加任務內容,網絡權重只在進行第一個任務之前初始化一次。我們可以用在線的交叉熵損失進行訓練,同樣繼續使用準確率指標衡量持續學習的效果。

神經網絡結構為 4 層全連接層,前 3 層神經元數為 2000,最後一層神經元數為 10。由於 MNIST 數據集的圖像居中並進行過縮放,所以可以不執行卷積操作。所有的分類任務共享相同的網絡,採用了不含動量的隨機梯度下降法,其他的設置與 ImageNet 數據集測試的設置相同。

圖註:中間的圖是在任務序列上獨立運行 30 次取平均值后的結果,每個任務有 6000 個樣本,由於是分類任務,開始時隨機猜的準確率是 10%,模型學習到排列圖像的規律后,預測準確率會逐漸提升,但切換任務后,準確率又降到 10%,所以總體呈現不斷波動趨勢。右邊的圖是模型在每個任務上的學習效果,初始準確率為 0,隨着時間推移,效果逐漸變好。在第 10 個任務上的準確率比第 1 個任務好,但在進行第 100 個任務時準確率有所下降,在第 800 個任務上的準確率比第一個還要低。

為了弄清楚整個過程,後續還需要重點分析凸起部分的準確率,對其取均值后得到中間圖像的藍色曲線。可以清晰地看到,準確率剛開始會逐步提升,後面直到第 100 個任務時趨於平穩。那在第 800 個任務時準確率為什麼會急劇下降呢?

接下來,我們在更多的任務序列上嘗試了不同的步長值,進一步觀察它們的學習效果。結果如下圖:

圖註:紅色曲線採用和前面實驗相同的步長值,準確率的確在穩步下降,可塑性損失相對較大。

同時,學習率越大,可塑性減小的速度就越快。所有的步長值都會存在巨大的可塑性損失。此外,隱藏層神經元數目也會影響準確率,棕色曲線的神經元數目為 10000,由於神經網絡的擬合能力增強,此時準確率會下降得非常緩慢,仍有可塑性損失,但網絡尺寸越小,可塑性減小的速度也越快。

那麼從神經網絡內部來看,為什麼會產生可塑性損失?

下圖解釋了其中的原因。可以發現,「死亡」神經元數目佔比過高、神經元的權重過大以及神經元多樣性喪失,都是產生可塑性損失的原因。

圖註:橫軸仍然都表示任務編號,第一張圖的縱軸表示「死亡」神經元的百分比,「死亡」神經元是指輸出和梯度總為 0 的神經元,不再預測網絡的可塑性。第二張圖的縱軸表示權重大小。第三張圖的縱軸表示剩餘隱藏神經元數目的有效等級。



2

現有方法的局限性

我們分析了現有的、反向傳播以外的深度學習方法是否會有助於保持可塑性。

結果表明,L2 正則化方法會使可塑性損失減小,在此過程中令權重縮小到 0,從而可以動態調整並保持可塑性。

收縮和擾動方法與 L2 正則化類似,同時還會向所有權重中加入隨機噪聲增加多樣性,基本不會有可塑性損失。

我們還嘗試了其他在線標準化方法,開始時效果還比較好,但隨着持續學習可塑性損失嚴重。Dropout 方法的表現更糟糕,我們隨機將一部分神經元設置為0再訓練,發現可塑性損失急劇加大。

各種方法對神經網絡內部結構也會產生影響。使用正則化方法會使「死亡」神經元數量百分比上升,因為在將權重縮小到 0 的過程中,如果其一直為 0 ,就會導致輸出為 0,神經元就會「死亡」。而收縮和擾動向權重中添加了隨機噪聲,所以不會有太多的「死亡」神經元。標準化方法也有很多的「死亡」神經元,它似乎在朝着錯誤的方向走,Dropout 也類似。

權值隨任務數量變化的結果更為合理,使用正則化會獲得很小的權值,收縮和擾動在正則化的基礎上添加了噪聲,權值下降幅度相對減弱,而標準化則會使權重變大。但是對於 L2 正則化以及收縮和擾動方,其隱藏神經元數有效等級相對較低,說明其在保持多樣性方面表現較差,這也是一個問題。

緩慢變化的回歸問題(SCR)

我們所有的 idea 和算法都源自緩慢變化的回歸問題實驗,這是一個聚焦於持續學習的新的理想化問題。

在這個實驗中,我們的目的是要實現一個具有隨機權重的單層神經網絡形成的目標函數,隱藏層神經元為 100 個線性閾值神經元。

我們沒有做分類,只是生成了一個數字,因此這是一個回歸問題。每訓練 10000 步,我們才會從輸入的后 15 位中選擇 1 位進行翻轉,因此這是一個緩慢變化的目標函數。

我們的解決方案是用相同的網絡結構,只包含一個神經元的隱藏層,同時保證激活函數可微,但是我們將會有 5 個隱藏神經元。這就類似於在 RL 中,智能體探索的範圍比交互的環境小很多,所以只能做近似處理,隨着目標函數的變化嘗試改變近似值,這樣就會容易做一些系統性實驗。

圖註:輸入為 21 位隨機的二進制數,第 1 位是值為 1 的輸入常數偏差,中間 5 位是獨立同分佈的隨機數,其他 15 位是緩慢變化的常數,輸出為實數。權值隨機化為 0,可以隨機地選擇 +1 或者 -1。

我們進一步研究了變化的步長值和激活函數對學習效果的影響,比如這裡用了 tanh、sigmoid 和 relu 激活函數等:

以及激活函數形式對所有算法學習效果的影響:

在步長和激活函數同時變化的情況下,我們也對 Adam 反向傳播的影響做了系統性分析:

最後是使用不同激活函數后,基於 Adam 機制的不同算法之間的誤差變化情況:

以上實驗結果都表明深度學習方法已經不再適用於持續學習,遇到新的問題時,學習過程會變得非常緩慢,沒有體現出深度的優勢。深度學習中的標準化方法也只適合一次性學習,我們需要改進深度學習方法才有可能將其用於持續學習中。



3

持續反向傳播

卷積反向傳播算法本身會是一個好的持續學習算法嗎?

我們認為不是。

卷積反向傳播算法主要包含兩個方面:用小的隨機權重進行初始化和在每個時間步進行梯度下降。儘管它在開始生成小的隨機數來初始化權重,但並不會再次重複。理想情況下,我們可能需要一些在任何時候都可以進行類似計算的學習算法。

那我們如何使卷積反向傳播算法持續地學習?

最簡單的方法就是選擇性地進行重新初始化,比如在執行幾項任務後進行初始化。但同時,重新初始化整個網絡在持續學習中可能並不合理,因為這意味着神經網絡正在忘記全部所學內容。所以我們最好選擇性地初始化神經網絡的一部分,比如重新初始化一些「死亡」神經元,或者根據效用度對神經網絡進行排序,重新初始化效用度較低的神經元。

隨機選擇初始化的思想與 2012 年 Mahmood 和 Sutton 提出的生成和測試方法有關,只需要生成一些神經元並測試它們的實用性,持續反向傳播算法搭建了這兩個概念之間的橋樑。生成和測試方法存在一些局限性,只用一個隱藏層並只有一個輸出神經元,我們將其擴展到多層網絡,可以用一些深度學習方法進行優化。

我們首先考慮將網絡設置成多層,不再是單個輸出。之前的工作提到過效用度的概念,由於只有一個權重,這個效用度只是權重層面的概念,但是我們有多個權重,最簡單的泛化是考慮權重求和層面的效用度。

另一個想法是考慮特徵的活動,而不僅僅是考慮輸出權重,因此我們可以將權重的總和乘以平均特徵激活函數,從而分配不同的比例。我們希望設計能夠持續學習並保持快速運行的算法,我們在計算效用度的時候還考慮了特徵的可塑性。最後,將特徵的平均貢獻轉移到輸出的偏置中,降低特徵刪除的影響。

未來的改進方向主要有兩點:(1)我們需要對效用度進行全局度量,衡量神經元對所表徵的整個函數的影響,而不僅僅局限於輸入權重、輸出權重和激活函數這樣的局部度量;(2)我們需要進一步改進生成器,目前只是從初始分佈中採樣進行進行初始化,還要探索可以改善性能的初始化方法。

那麼,持續反向傳播在保持可塑性方面表現如何呢?

實驗結果表明,持續反向傳播利用在線排列的 MNIST 數據集訓練,完全保持了可塑性。下圖中的藍色曲線顯示了這一結果。

圖註:右圖顯示了不同替換率對於持續學習的影響,例如替換率為 1e-6 表示在每個時間步長替換 1/1000000 個表徵。即假設有 2000 個特徵,每走 500 步,就會在每一層更換一個神經元。這個更新速度非常緩慢,所以替換率對超參數不是很敏感,不會顯著影響學習效果。

接下來,我們需要研究持續反向傳播對於神經網絡內部結構的影響。持續反向傳播幾乎沒有「死亡」神經元,因為效用度考慮了平均特徵激活,如果某個神經元「死亡」,會立即被更換。而且由於我們不斷更換神經元,我們得到了權重幅度較小的新神經元。因為隨機初始化了神經元,它們也相應地保留了更豐富的表徵和多樣性。

因此,持續反向傳播解決了 MNIST 數據集上可塑性缺失引發的全部問題。

那麼,持續反向傳播是否可以擴展到更深的卷積神經網絡中?

答案是肯定的!在 ImageNet 數據集上,持續反向傳播完全保持了可塑性,模型最終的準確率在 89% 左右。其實在初始的訓練階段,這幾種算法的表現相當,前面提到過替換率的變化非常緩慢,任務數目足夠大的時候才近似的比較好。

這裡以「Slippery Ant」問題為例展示一個強化學習的實驗結果。

「Slippery Ant」問題是非平穩強化問題的一個擴展,與 PyBullet 環境基本類似,唯一不同的是地面和智能體之間的摩擦力每 1000 萬步後會發生變化。我們基於持續反向傳播實現了持續學習版本的 PPO 算法,可以選擇性初始化。PPO 算法和持續 PPO 算法的對比結果如下圖。

圖註:PPO 算法在剛開始表現還不錯,但隨着訓練進行性能不斷下降,引入 L2 算法以及收縮和擾動算法後會有所緩解。而持續 PPO 算法的表現相對較好,保留了大部分可塑性。

有趣的是,PPO 算法訓練的智能體只能掙扎着走路,但是持續 PPO 算法訓練的智能體可以跑到很遠的地方。



4

結論

深度學習網絡主要為一次性學習進行優化,從某種意義上說用於持續學習可能會完全失敗。像標準化和 DropOut 等深度學習方法對於持續學習可能沒有幫助,但是在此基礎上做一些小的改進可能會非常有效,比如持續反向傳播。

持續反向傳播根據神經元的效用對網絡特徵進行排序,特別是對於遞歸神經網絡,排序方式可能有更多改進方法。

強化學習算法利用了策略迭代思想,持續學習問題固然存在,保持深度學習網絡的可塑性為 RL 和基於模型的 RL 開闢了巨大的新可能性。

原視頻鏈接:https://www.youtube.com/watch?v=p_zknyfV9fY&t=11s

更多內容,點擊下方關註:
掃碼添加 AI 科技評論 微信號,投稿&進群:

雷峰網


想在手機閱讀更多IT人物資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems