十分鐘瞭解什麼是脈衝神經網路
深度學習最近非常火熱,它歸屬於人工神經網路(ANNs)的範疇。ANNs是屬於第二代神經網路,而我們關注的是下一代神經網路——脈衝神經網路(SNNs)
人工神經網路為什麼會有這個名字呢?
"人工"表明了它是我們手動構建的,“神經網路”表明它是受大腦啟發的。當我們深入瞭解ANNs時,你會發現,ANNs的神經元模型就是加權求和然後進行非線性啟用。這和我們從生物學中瞭解的神經元模型差距太大了。同時在ANNs中資訊的傳遞是基於數值。這和生物大腦中採用脈衝傳遞資訊也存在差距。
脈衝神經網路的誕生:
誕生的原因:
1.人工神經網路需要高效能的計算平臺。
2.人工神經網路仍不能實現強人工智慧,人們認為是因為其與生物大腦仍存在巨大差距。
SNNs的特點:
1.採用了生物神經元模型如IF,LIF等,比之前ANNs的神經元更接近生物。
2.資訊的傳遞是基於脈衝進行。所以網路的輸入要進行額外編碼,例如頻率編碼和時間編碼等,轉現在的資料(例如圖片的畫素)轉換成脈衝,編碼技術我們以後再討論。
3.基於脈衝的脈衝的編碼,能蘊含更多的資訊
4.SNNs網路的能耗更低,每個神經元單獨工作,部分神經元在沒接受到輸入時,將不會工作。
SNNs的學習演算法:
首先一點非常重要,脈衝神經網路不能直接利於ANNs的基於反向傳播的方式進行網路訓練,因為脈衝神經元模型處理的是資訊是離散的脈衝,不能直接求導。
1.將現有的ANNs對映到SNNs中
這種方法是當前比較主流的構建SNNs的方法,因為它能有效的將ANNs與SNNs結合起來,利用了ANNs和SNNs各自的優點,ANNs訓練簡單,SNNs的能耗低。(最近就是在研究這東西)
2.對生物神經元模型進行處理,換成一個能求導的模型,或者對傳遞的脈衝資訊進行轉換。然後就可以將反向傳播用於SNNs的訓練。(這種演算法我沒有研究過,所以也不太懂)
3.STDP類的演算法,它裡面有很多小分支,STDP這東西就類似一種思想,例如兩篇文章都用了STDP演算法,但他們的數學公式可能是存在差異。從原理上,該種演算法就是根據前後神經元的脈衝發放關係然後對他們之間的權重進行調整。該種演算法比較接近人腦,現在研究他的人比較多。但這種演算法一般是無監督的(也有少部分人將其改成有的監督),收斂比較難。(之前看過相關論文,感覺它是幾種演算法中最接近生物的學習規則)
其實SNNs的學習演算法仍是非常開放,一種統一江湖的演算法仍沒出現,所以也制約了它的發展。