脑芯编:窥脑究竟,织网造芯(二)
雷鋒網(公眾號:雷鋒網)按:本文作者癡笑,矽說(微信號:silicon_talks)主筆。本文為《腦芯編:窺腦究竟,織網造芯》系列第二篇。
〈二〉幾重卷積幾重生
蜘蛛結網,是為了捕食昆蟲;
蜘蛛俠結網,是為了拯救世界;
碼農Data Scientist (~ds~) 結網,是為了——
換一個角度看世界,
英語叫做: Representation。
如果你只想知道一個關于神經網絡的常識,我認為上面這個單詞是最不應該錯過的。就像每個學模擬電子學的人,其實歸根結底就是學了兩個字——放大。
話接上回,我們說到,通過一系列乘累加和非線性激活函數,我們就可以實現一個神經元。而關鍵的問題就是如何把神經元們連起來。解決這個問題之前,我們先要明白神經網絡的作用——通過一系列線性和非線性的變化重新將輸入信息映射成為表達事物的本質的簡化特征。
如果你覺得上面一句的每個字都認識,卻不知道他在說什么,那么我們來看一個經典的例子——人類的視覺皮層(Visual Cortex)。
視覺皮層, 一場生物與AI的偉大握手
碼農老師的生物課又來了……
你有沒有想過當你看到生命中一個重要的人的時候,比如說基友(碼農怎么會有妹紙?),你是看到是他/她的鼻子,眼睛,臉上的痘痘,昨晚熬夜的黑眼圈……但是這些東西最后都只留下了一個映像——我面基了。可是你有沒有想過從你看到圖像,到你得到的結論,無數的信息都已經沒有過濾,你的腦子完成了一次將4K3D圖像壓縮成兩個字的過程,到底發生了什么事?
這個過程就是從信息經過視覺皮層(神經網絡??)的過程。從前到后,他經過了幾站:
(1)始發站——視網膜 ,比較像是一個電子系統的傳感器,用來接收信號;
(2)快速交流道——LGN,他是將左右眼看到的信號重新編碼后傳遞給視覺皮層,像是一個電子系統中的主控處理器與總線(請原諒我不說LGN的中文,因為說了你也記 不住) ;
(3)第一站——主視覺區V1,第一層神經網絡,司“邊界檢測(Edge Detection)”一職,這可能是神經元數量最豐富的一個區域;
(4)第二站——次視覺區V2,第二層神經網絡,司“基礎特征提取”一職,歸納視覺信號的形狀、大小、顏色、頻率……
(5)第三站—— V3,司“位置“,也是個過渡區,一條線上你有些站你不知道為什么會停~
(6)第四站——V4/V5(MT)分支,深度神經網絡,各司“色彩/運動”;
(6)V4分支終點站1——換乘inferotemporal Cortex,近深度智能TE區,司 ”目標識別“ ~~~終于終于我認出基友來了,撒花~~
(7)V5分支終點站2——換乘Parietal Cortex, 進深度智能MST區,司“空間運動分析”。
視覺皮層可能是目前為止人類認識的最透徹的大腦部分,不過,好像建立在無數的活體實驗上。。。即使如此,還是有很多未知的空間亟待生物學家探索。
不知道讀到這里,對人工智能略有了解的你有沒有覺得這堂生物課在哪里見過? 先做邊界檢測,在再做特征提取,在進行分類識別,這不就是大名鼎鼎的
卷積,讓加速成為一種可能
其實在神經網絡領域里,目前為止唯一能算的上前所未有成功的就是CNN?(Convolution Neural Network,卷積神經網絡)。最早的CNN可以追溯到98年Yann LeCun的一篇如何識別手寫數字的paper,這里出現了第一個CNN的雛形LeNet:
從結構上來,CNN繼承了視覺皮層中對信號處理“層”的概念,雖然不是那么的100%的吻合,但是CNN的初級層往往用來做“邊界檢測”這樣的簡單的特征提取,而在深度層重新組合初級層的信息成為抽象的再表達(Representation),最后交給事件的發生的相關概率歸納出事物的本質。
另外,一個比較不太準確的趨勢是神經元的數量隨層的深度逐漸減少,但是單個神經元的粗壯程度(輸入數量)隨層的深度逐漸增加。視覺皮層也具有相似的規律,V1的數量多,但是結構比較簡單,但到了V4/V5,鏈接變得很復雜,但占的區域卻比V1小的多。
然而,這些都不是做電路的人重點。
對于硅工們而言,CNN獲得巨大成功的原因在于:它極大地節省了神經網絡的硬件開銷,使神經元為單位作加速器成為了可能。
(1) CNN定義了一種更高能效的元操作——卷積核
關于卷積是什么,大家可以去參考一篇《一文讀懂卷積神經網絡》(廣泛地轉載于各大公眾號間),下圖是我目前看到的最形象的卷積描述。
該圖片源自網絡,感謝原gif作者
其本質就是對于一個區塊,判斷和自己系數組成的“基”區塊的相似程度,得到的分數越高就越相似。這樣,當一種“基區塊”被賦予一種特征是,即使用于整張圖片的特征提取,他的系數也是固定的,因此大量的系數加載操作可以被省略。同時,一個固定大小的“卷積核”成為了比“乘累加”更高階、更高效的原子操作,在現代計算機體系結構中,實現越復雜,但操作越固定的加速器,其效率和速度的提升也就越大。
(2) Pooling —— 是垃圾就要扔掉
CNN網絡的另一個巨大貢獻就是在卷積層和層之間,設置了一個”垃圾箱“,把上一層產生的無效信息都扔掉,避免了超大規模的數據傳輸和存儲。大家把這叫做Pooling,我又要來吐槽那個中國人給他取了個”池化“的名字,雖然我也找不到更好的名字,但根本無法幫助理解。Pooling的策略很多,最常見的是max pooling就是留個最大的,然后又其他都扔掉。
(3) “亂擼”? (ReLU)
LeNet后期發展到AlexNet后,激活函數也從sigmoid變成了ReLu,他們的圖形曲線大概如下所示。用腳趾頭也知道,Relu操作的實現就是把符號位為負置0就好了。至于sigmoid么,傳承自經典機器學習回歸理論,是e指數的除法操作,編譯后簡直就是一場噩夢,我們先把他當作一個古老的神話就好了。
以上種種硬件實現的簡化,加上CNN的巨大勝利,都當讓硅工們看到了直接從電路角度優化的角度切入人工智能芯片的可能。但是,也發現了一個問題,傳統的硬件加速的算法往往是做死的,比如橢圓加密,浮點乘除等等。但是CNN的元操作——卷積核——雖然模式固定,但是其每一層的卷積核數量和層數卻是紛繁復雜,固定的硬件并不能實現網絡的可塑性(structual plasticity)?
那該怎么辦?下一次,如何利用具有高度可編程性的CPU來配置不同結構的神經網絡——計算機的”形與令“。就到這里,且聽下回分解。
特別鳴謝復旦大學腦芯片研究中心提供技術咨詢,歡迎有志青年報考。
本文作者:矽說
本文轉自雷鋒網禁止二次轉載,原文鏈接
總結
以上是生活随笔為你收集整理的脑芯编:窥脑究竟,织网造芯(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 专访中科创达王璠:怎样做好嵌入式人工智能
- 下一篇: 采用加密技术进行数据保护的5大优势