激活學習:一種挑戰反向傳播的生物啟發算法

激活學習:一種挑戰反向傳播的生物啟發算法的圖1
激活學習(activation learning)是一種生物啟發的簡單本地學習規則構建的前向無監督通用模型,它的核心是構建多層神經網絡使得網絡輸出激活強度能反映輸入的相對概率大小。并且,它在一些任務上達到并超過反向傳播的表現。激活學習的概念由山東大學教授周洪超在arXiv上提交的一篇文章“Activation Learning by Local Competitions”中提出。
1

激活學習的思路

其實,很早之前我在加州理工學院讀博士期間,盡管當時主要的研究方向是信息論編碼和理論計算機,但是我的導師Jehoshua Bruck也是計算神經系統系的教授,所以跟很多搞信息研究的人一樣我們經常閑聊的一個話題:怎么構建一個像大腦的機器。很長時間,我的一個執念是大腦是主要是以無監督學習的方式來工作的,而它背后的學習規則一定是一個簡單的本地化規則,否則作為一個復雜的充滿隨機的生物學系統很難特別魯棒。所以一個很明確的問題是: 我們是否可以設計一個很簡單本地化的學習規則,這個規則很容易在神經元里實現,而且基于這個規則可以實現神經網絡一層一層的自動的無監督學習。其實很多研究人員例如馬毅老師的"第一原理"也有類似的思想。

那么怎么來設計一個好的本地化的學習規則? 我們的出發點就是從赫布規則(即同時激活的神經元的連接會加強)出發,因為赫布規則已經被大量的神經科學實驗所證實,只是赫布規則具體的形式大家不是很清楚,或者簡單的赫布規則根本不能保證不同神經元所表達的特征是不一樣的。這里關鍵的一個因素就是神經元的競爭,通過競爭讓不同的神經元表征不一樣的特征。早在1985年,反向傳播的提出者、認知科學的泰斗Rumelhart在提出反向傳播的同期也提出了競爭學習的概念,就是讓某一群或某一層的最強的一個神經元勝出并激活,他證明這種方法可以進行有效的學習。當然,因為反向傳播在應用中的表現太好,這些非常有價值的研究就漸漸被大家所忽略了。有一天我看著剛出生的孩子的時候,忽然對這個問題又產生很強的興趣,我堅信支配神經元學習的關鍵(全部)就是競爭。一個簡單的物理圖像就是當所有的神經元都在競爭激活并表達不同特征的時候,每一層的神經元就能夠將最多的信息傳遞給下一層,而這個過程也就實現了無監督學習,這就是無監督學習的全部; 而且對于越經常遇到的輸入,神經元的響應越強,輸出的強度也就越強。這是激活學習最基本的思想。

激活學習:一種挑戰反向傳播的生物啟發算法的圖2

激活學習的輸出強度來衡量輸入的典型性

因此我們對赫布規則進行了修改,使得它具備了本地神經元之間的競爭能力(連接的神經元之間能夠相互競爭)。基于這樣一個本地競爭學習規則,可以從數學上證明每一層的輸出可以重構出每一層的輸入,而且重構損失是最小的。這個重構能力也是Hinton多次提到的,如果一個網絡具備逐層重構能力,那么它對于安全攻擊就具有很好的安全性。進一步可以證明,這個重構損失跟主成分分析(PCA)的重構損失是一致的,所以它跟馬毅老師提出的PCANet的有一定的聯系,但是這里一個重要的不一樣的是不同神經元的特征是非正交的,這保證即使少量的神經元停止工作對整個神經網絡的影響不會特別大。更重要的一個結論是每一層網絡的輸出激活強度(輸出的平方和)不會高于輸入強度,而且對于越典型的輸入其輸出激活強度就越強。

激活學習:一種挑戰反向傳播的生物啟發算法的圖3

激活學習的學習規則

如果我們將每一層神經網絡看成一個激活強度的過濾器,它可以表示比較簡單的輸入概率分布;那么激活學習就是一個多層神經網絡將多個激活強度過濾器串聯起來,來表示非常復雜的概率分布。在激活學習中,網絡的輸出激活強度(平方和)用來估計輸入的likelihood。為了保證激活強度在各層的可傳遞性,我們使用的非線性激活函數要保證它的輸入和輸出的強度是不變的。最終,我們可以訓練一個激活學習神經網絡,它可以直接估計輸入的概率分布。因為整個訓練的過程跟任何具體任務是無關的,它也是一個通用模型,可以用于各類學習任務。

2

激活學習的實驗結果

1. 首先是分類任務 ,這時候激活學習網絡的輸入既包含圖片又包含標簽,預測分類的過程就是給定圖片來推理標簽使得整個網絡的激活強度是最大的。受到認知科學實驗的啟發(J. L. McClelland, How Far Can You Go with Hebbian Learning, and When Does it Lead you Astray?), 正確信息的反饋在人類學習中起到很重要的作用。例如,人在學習某個東西的時候,如果識別錯誤,這時候如果能夠糾正并告訴它正確的結果,可以明顯提升它的學習效果。所以在激活學習中,我們引入了反饋并生成正樣本和負樣本, 正樣本是圖片和正確標簽,負樣本是圖片和最差的錯誤標簽,給正樣本一個正的學習率,負樣本一個負的學習率,可以明顯提高學習的分類準確率。在MNIST上基于2層的全連接網絡可以達到約1.36%的錯誤率,在CIFAR-10上3層的全連接網絡可以達到約37%的錯誤率,基本上達到了跟反向傳播差不多的性能。在CIFAR-10的實驗中,我們發現全連接網絡的學習收斂性和效果均不如本地連接網絡,而且本地連接網絡更接近于真實大腦中的神經元連接結構當然對于更大的數據集和復雜的網絡結構,激活學習目前還不能跟反向傳播相比擬。

2. 在分類任務上,如果我們降低訓練樣本的數量,激活學習會得到明顯優于反向傳播的結果。例如給定600個MNIST訓練樣本,激活學習可以得到 9.74%的錯誤率,而反向傳播(使用同樣網絡結構加一層線性分類器)只能得到約16.17%的錯誤率;此外,繼續降低訓練樣本數量,在few-shot learning上激活學習也可以獲得很好的效果。除了在小樣本的優秀表現,激活學習在對抗外部噪音上表現也十分顯眼,例如我們把MNIST測試圖片的一部分覆蓋掉或者在上面隨機的畫一些線,激活學習都取得了明顯優于反向傳播的識別能力(錯誤識別率大約能降低一半)。

3. 上面訓練的同樣的神經網絡模型也可以用于圖像的生成或補全。最直接的方式是使用sampling的方法,但是目前的sampling方法計算速度都比較慢。這里我們采用了梯度下降的方法來優化生成圖片,使得它跟給定的類別標簽組合能夠讓網絡的激活強度最大化。實驗表明這種方式生成的圖片或者補全的圖片可以達到不錯的效果。為了提升生成圖片的多樣性,我們將網絡中加入更多的隨機來控制不同特征的表達。

4. 激活學習作為通用模型,可以用于圖片分類和生成之外的其他任務。例如我們在接下來的工作里(Ding et al.) 將激活學習用于異常檢測,并在real-world的數據集上取得了跟SOTA可以比擬的結果。這里激活學習的一個優勢就是它不需要任何標簽數據(異常數據),就可以學習輸入數據的概率分布。如果給定一個輸入,網絡的輸出激活強度小于某個閾值,那么說明輸入可能是一個異常。這個說明基于簡單本地規則的激活學習可以在一些場景下取得比反向傳播更好的結果。此外,激活學習可能在時序預測上也具有非常吸引人的應用,例如可以更好的預測分布而不是具體的值。

3

關于激活學習的討論

1. 激活學習是一個通用任務模型;如果給定一堆數據,我們完全不知道未來的任務是什么,這時候能學什么?我們的答案就是輸入樣本的概率分布,這就是激活學習要做的。

2. 激活學習可能會使用同一個模型統一監督學習、無監督學習和生成模型;例如,我們的輸入數據沒有標簽就凍結標簽部分的輸入,如果有標簽就跟標簽一起輸入。

3. 激活學習是一個新的學習范式。在傳統的范式下,一部分數據作為輸入,另一部分數據作為輸出,所以如果我們有很多種類的數據并且有各種各樣的推理需求,那么就需要很多很多模型,這個在大腦中是不切合實際的。而激活學習把所有的數據都作為一個模型的輸入,不同數據間可以相互推理。

4. 激活學習可能會建立不同內容之間的關聯,即associative memory,這是人類智能的關鍵之一。

4

激活學習的研究價值

1. AI算法層面,探索新的無監督學習AI技術和模型,能夠成為反向傳播技術補充,彌補反向傳播的一些局限;探索通用任務模型,可能有助于通用人工智能的發展。

2. 神經科學的層面,幫助我們更好的理解神經元的可塑性、競爭、抑制、反饋以及associative memory。

3. 在AI硬件層面,我們在神經形態計算(neuromorphic computing)上展開過一些研究,我們發現隨著網絡規模最大,計算誤差也會隨之增大,解決這個問題的一個辦法就是實現片上訓練,而激活學習的本地訓練特性使得它更容易實現片上訓練,推動神經形態計算技術的研究和發展。

5

與Forward-Forward 算法的區別

Hinton的想法很有洞見,而且在很大程度上也影響了我們這些后來人的一些思考和工作。包括我們在內,很多人都相信大腦的工作機制一定跟反向傳播 是不一樣的,如果我們想解決當前反向傳播的一些局限性并進一步探索新的AI模型,那么很自然的會思考一個問題: 大腦是怎么學習的。很可惜,從神經科學的角度,我們對大腦的工作機制,尤其是從電路和算法的層面上是知之甚少的。費曼告訴我們,What I cannot create, I do not understand, 如果想要了解一個東西,最好的辦法就是構建一個類似的東西,這是我們研究激活學習模型的一個驅動力 – 怎么構建一個盡可能接近大腦的方式又能夠在性能上跟反向傳播相比擬的模型。

回到主題, 看到Hinton寫得Forward-Forward algorithm文章是朋友轉發我,問我跟我們幾個月之前放到arXiv的激活學習(activation learning) 工作有什么聯系。從我個人理解上,Forward-Forward algorithm跟activation learning在很多的idea上是非常一致的,例如都是把每層神經元的輸出平方和作為goodness (activation learning里叫typicality和likelihood , 基本上是一個意思), 都使用正樣本 和負樣本對網絡進行訓練,甚至在訓練CIFAR-10上使用的網絡都基本一致,也都采用了本地連接。大家似乎從不同的角度得到一些類似的發現,activation learning是先提出了一個生物啟發的很簡單的一個本地化的神經元學習規則,然后基于這個學習規則從數學上證明,越是典型的輸入它的每層的輸出激活強度(輸出平方和)就越強;而Forward-Forward Algorithm直接使用輸出平方和作為每一層的goodness函數,然后再推導出學習規則,這里很佩服Hinton的直覺。對Forward-Forward有興趣的伙伴可能會對activation learning也感興趣,下面是論文和代價鏈接,請大家批評指正!

文章鏈接: 

https://arxiv.org/pdf/2209.13400.pdf

GitHub代碼: 

https://github.com/DPSpace/activation_learning

最近將論文更新了一下,在discussions里簡單的比較了一下Forward-Forward algorithm和activation learning的一些區別, 例如 (1) 如果將網絡每一層看成激活強度的一過濾器, FF是將所有的過濾器加起來作為goodness, 而activation learning是將所有過濾器乘起來作為goodness, 在某種程度上前者可以看成activation learning的一階近似。(2) 每層訓練的local learning方法是不同的,在activation learning中每層的輸出激活強度不會高于輸入強度,因此如果低層不激活的話,高層也不會激活,跟大腦更類似;而FF中每層采用了歸一化,輸出激活可能很大,因此FF在估計概率的時候采用sigmoid 。(3) Activation learning除了支持正負樣本訓練,也適用于只有正樣本的場景,通過正樣本的訓練直接獲得樣本的統計概率分布,在一些應用例如異常檢測是很用的,我們(Ding et al)使用activation learning非常簡單的方法,就可以在real-world數據集上取得基于反向傳播的SOTA性能。從分類任務上,activation learning的2層全連接神經網絡可以在MNIST上可以達到1.36%的錯誤率,3層的本地連接網絡可以在CIFAR-10上達到大約37%的錯誤率 (FF約為41%), 兩者都基本上非常接近反向傳播的錯誤率。在MNIST上,如果將訓練數據減少,activation learning的錯誤率明顯低于反向傳播,在600個訓練樣本的時候,反向傳播錯誤率是16.17%,  activation learning是9.74%的錯誤率。我們繼續將測試圖片進行覆蓋或隨機添加線進行干擾,在很大的范圍內,activation learning的錯誤率只有反向傳播的一半左右。Activation learning 訓練的模型也是通用模型,同一訓練模型可以用于各類學習任務,例如在實驗中將之前訓練的分類網絡也可以用于圖像生成和圖像補全,并取得了不錯的效果。當然跟FF類似,目前activation learning在大數據集和復雜網絡結構的時候還無法跟反向傳播比擬,而且訓練速度更慢一些,也有大量的問題需要研究和解決。Activation learning是一個例子,通過及其簡單的類似生物的本地規則可以前向構建無監督通用模型,并在一些任務上達到并超過反向傳播的表現。


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

6
1