隨著摩爾定律接近尾聲,技術界已經(jīng)將目光投向了更加多樣化的計算方法。為了繼續(xù)提高系統(tǒng)的計算能力,我們不能僅僅依靠時鐘速度越來越快,也不能指望晶體管越來越小。要真正向前邁進,必須考慮一種新的范式。而當我們展望未來的時候,目前拿計算機和人腦之間的比較非常流行。畢竟,這一切都與計算能力有關,而在這一領域,我們的大腦似乎仍然優(yōu)于計算機。因此,下一步顯然是嘗試制造一臺與我們大腦功能相似的計算機。
就像我們在2016年預測的那樣,AI正在推動當前人類醫(yī)療保健領域的技術革命。神經(jīng)網(wǎng)絡也可能是計算技術進步的下一個前沿領域。隨著我們對人類連接組(human connectome)和大腦處理信息的方式的理解加深,我們理解其驚人的信息吞吐量的能力也在同步增長。這導致了神經(jīng)形態(tài)計算工具的流行。
本文旨在提供神經(jīng)網(wǎng)絡的一個簡短但全面的入門知識。
什么是神經(jīng)網(wǎng)絡?
神經(jīng)網(wǎng)絡,也被稱為神經(jīng)形態(tài)系統(tǒng)(Neuromorphic System),是一個由硬件和/或軟件組成的系統(tǒng),旨在模擬人腦的某些方面。人工神經(jīng)網(wǎng)絡(Artificial Neural Networks)有很多類型,我們先來看一下硬件。
計算機與大腦的比較既廣泛又深入,這是因為大腦和計算機在語義和結構層面都很相似。它們都是由多層的錯綜復雜的網(wǎng)狀網(wǎng)絡,負責大批量的信息處理。它們都有工作內(nèi)存,其緩沖區(qū)可能會出現(xiàn)問題或溢出。它們都有“冷存儲(Cold Storage)”,在大腦表面以粗略的語義層次組織起來,類似于數(shù)據(jù)被存儲在硬盤盤面的不同位置。它們都由一個節(jié)點網(wǎng)絡組成,其重要性由其連接的“權重”單獨表示。它們的節(jié)點使用一系列電脈沖(Eletrical Spikes)進行通信,這些電脈沖的序列中嵌入了數(shù)據(jù)。
然而,當你把大腦和CPU進行比較時,這個類比就不成立了。因為大腦有一個持久的習慣,就是“把所有的事情都并行化”。CPU受制于數(shù)據(jù)管道,而大腦區(qū)域則不然。一個更接近的比喻是將大腦作為其連接組的總和,與FPGA進行比較。FPGA的設計是為了在制造后由用戶定制。神經(jīng)可塑性意味著即使在大腦硬件“完全成熟”之后,其突觸和電氣軟件仍然可以更新。隨著環(huán)境的變化,大腦也會適應。
眼睛不是照相機,只是在一個重要的意義上,它是;視網(wǎng)膜的結構是按照視野的順序排列的,它沿著視神經(jīng)一直延伸到視覺皮層。我們可以根據(jù)視野中出現(xiàn)問題的部分,診斷出視神經(jīng)損傷的位置。視網(wǎng)膜處理層的每個神經(jīng)元都向上游報告。你可以把視網(wǎng)膜(眼睛的捕捉裝置)比作CCD相機上的傳感器網(wǎng)格,比如哈勃用來捕捉圖像的那個。鏡頭、CCD和視網(wǎng)膜都只是捕捉它們收到的二維光子流。二維的光子流也稱為視頻。
同樣,大腦也不是計算機,只是有點像。我們甚至有一個內(nèi)部時鐘,將大腦的許多放電節(jié)奏及時組織起來,將它們推到一個有序的、有層次的構圖中,與一首歌沒什么不同。
總之,神經(jīng)網(wǎng)絡通常闡述了三個核心部分。一個神經(jīng)網(wǎng)絡是一個由神經(jīng)元或節(jié)點,加上它們的連接和權重組成的系統(tǒng)。它還必須擁有某種傳播功能。有些神經(jīng)網(wǎng)絡能夠觀察自己的結果,并改變其任務的處理方式。
為什么要模仿大腦?簡言之,我們想模仿大腦,因為大腦真的很擅長它們的工作。它們速度快、重量輕,而且功耗很低。人腦被認為具有千萬億級的信息吞吐量,比我們所造的任何一臺個人電腦都要大得多(分布式超級計算機不算)。而大腦的運行功率約為20W。這種成功的組合部分是由于其物理結構,部分是由于信息在神經(jīng)系統(tǒng)中傳播的獨特方式。大腦以并行和串行、二進制和模擬的方式同時工作。
當神經(jīng)元激活時,這些脈沖會依次沿著軸突傳播。但神經(jīng)元排列在皮層柱中,而皮層柱排列在腦區(qū)中。這樣一來,整個腦區(qū)可以并行完成同一個任務。
神經(jīng)元通過接收、解釋,然后沿著軸突的長度傳播微小的電波來相互交流。它的功耗極低,因為跨膜去極化的小波是通過簡單地與細胞外的電化學梯度配合完成的。特別是皮質(zhì)神經(jīng)元,有一個深刻的分支結構。它們以“多對一”的方式連接到旁邊的神經(jīng)元,以及在信息流中排在它們前面的“上游”神經(jīng)元。在與下游交流時,它們也以“一對多”的方式連接。為了管理所有這些表面,它們通過建立突觸來分析連接的“權重”,并按重要性排序。
神經(jīng)元也以模擬的方式處理信息。神經(jīng)元通過統(tǒng)計來自樹突的所有重疊的、實時閃爍的輸入來進行模擬吸收。這是一種生理上的傅里葉變換。但是,當涉及到如何傳遞信息時,神經(jīng)元也是強烈的二進制。一個神經(jīng)元的信號是由時域中的電脈沖組織而成的,而且這些脈沖的振幅不變。一個神經(jīng)元要么是脈沖,要么不是。脈沖是由一個微小的移動電擊組成的。脈沖序列是按時間劃分的電波序列,包含數(shù)據(jù)的片段。這幾乎就像一個摩斯密碼接收器。
硬件與軟件神經(jīng)網(wǎng)絡
將大腦功能作為其物理結構的突發(fā)屬性來看待,使我們對“神經(jīng)網(wǎng)絡”有了硬件上的解釋。IBM在2014年生產(chǎn)的TrueNorth是一個多核神經(jīng)形態(tài)CMOS芯片,支持一個卷積神經(jīng)網(wǎng)絡。TrueNorth有自己的軟件生態(tài)系統(tǒng),包括一種定制的編程語言、庫和一個完整的IDE。同樣,Intel的Loihi生態(tài)系統(tǒng)是一個帶有相關軟件框架的硬件神經(jīng)網(wǎng)絡。Loihi是一個神經(jīng)形態(tài)芯片,而Lava是通向Loihi能力的軟件通路。
Loihi的物理架構模仿了大腦的物理結構。雖然它是使用傳統(tǒng)半導體材料制造的,未來將在Intel 4工藝節(jié)點上制造,但Loihi的組織方式與我們所習慣的硅片非常不同。Loihi有多達一百萬個神經(jīng)元:網(wǎng)絡中的各個實體,每個都有128kB的內(nèi)存連接。這個信息池是芯片對突觸的模擬。它反映了神經(jīng)元在任何特定時間的連接狀態(tài)。它由相鄰的x86內(nèi)核監(jiān)督,這些核施加一個外部時鐘來糾正神經(jīng)元的放電節(jié)律。監(jiān)督核還定期迫使神經(jīng)元對照組內(nèi)其他成員檢查其記憶,或重新計算其連接的強度。
這種結構與大腦組織的分層和平行方面相匹配。此外,Loihi 2修改了其激活方法。Loihi 1以二進制方式激活其神經(jīng)元:1或0,中間沒有任何東西。Loihi 2將其脈沖編碼為整數(shù),使它們能夠攜帶元數(shù)據(jù)。這也意味著它們可以對下游的神經(jīng)元施加一些影響。具有整數(shù)值的脈沖可以模擬一個神經(jīng)元可以發(fā)送或接收的不同電化學信號的目錄。
這種結構與大腦組織的分層和平行方面相匹配。此外,Loihi 2修改了其激活方法。Loihi 1以二進制方式激活其神經(jīng)元:1或0,中間沒有任何東西。Loihi 2將其脈沖編碼為整數(shù),使它們能夠攜帶元數(shù)據(jù)。這也意味著它們可以對下游的神經(jīng)元施加一些影響。具有整數(shù)值的脈沖可以模擬一個神經(jīng)元可以發(fā)送或接收的不同電化學信號的目錄。
神經(jīng)網(wǎng)絡的主要類型
神經(jīng)網(wǎng)絡具有層次和冗余性,擅長處理高度并行的任務。它們還有助于處理那些需要用戶獲取大量數(shù)據(jù)以識別其中模式的任務,這通常被稱為“drinking from the firehouse”。為了獲得大數(shù)據(jù)的優(yōu)勢,我們必須能夠用有效的速度處理它。神經(jīng)網(wǎng)絡也擅長處理具有元數(shù)據(jù)或許多維度的數(shù)據(jù)。
有許多不同的單獨神經(jīng)網(wǎng)絡項目,但它們都屬于幾個不同的功能系列。每種算法都是為不同類型的問題而構建的,它們都涉及不同類型的機器學習。在這里,我們將討論神經(jīng)網(wǎng)絡的四個主要子類型。
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Nets):卷積神經(jīng)網(wǎng)絡(CNN)是“前饋(feed-forward)”系統(tǒng),這意味著信息流在網(wǎng)絡中限制在一個方向。這種類型的神經(jīng)網(wǎng)絡經(jīng)常在媒體報道AI/神經(jīng)網(wǎng)絡的時候被提及。它們可以執(zhí)行工作,但無法解釋是如何得出答案的。這是因為CNN根本不是為了顯示其工作而構建的。它們由一個輸入層,一個或多個隱藏層,以及一個輸出層或節(jié)點組成。
CNN經(jīng)常被用于處理圖像。因為它們是前饋的,從數(shù)學上講,CNN在以網(wǎng)格格式出現(xiàn)的數(shù)據(jù)上做得很好。當應用于二維數(shù)據(jù)陣列時,它們是很強大的,如圖像和其他矩陣。在其內(nèi)部,用了一個長長的數(shù)學公式,指導算法如何執(zhí)行運算,不僅是對兩個數(shù)字、術語或方程,而是對整個數(shù)據(jù)體,比如放大一張圖像。
前饋也需要一定程度的航位推算。這方面的一個表現(xiàn)是,CNN可以進行圖像識別,然后利用新得到的理解,從其訓練數(shù)據(jù)集生成扭曲、迷幻的圖像。2016年,MIT發(fā)布了一種AI,可以利用這種失控的行為來“幽靈化”圖像,產(chǎn)生噩夢般的圖像效果,還正好趕上了萬圣節(jié)。
循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Nets):與前饋方法相反,循環(huán)神經(jīng)網(wǎng)絡(RNN)是反向傳播。反向傳播是將信息從神經(jīng)網(wǎng)中較深的層傳遞到較淺層的行為。這種類型的算法能夠自我改進。
RNN通過與系統(tǒng)中的其他神經(jīng)元建立連接來進行反向傳播,其規(guī)??梢赃_到并包括讓每個神經(jīng)元與其他每個神經(jīng)元連接。這種冗余可以產(chǎn)生高度準確的結果,但有一個收益遞減的上限。這與SSAA(super-sampling anti-aliasing)并不一樣。隨著算法對它已經(jīng)處理過的數(shù)據(jù)進行越來越多的傳遞,它能做的事情越來越少。從2xAA到4xAA可以產(chǎn)生明顯的效果,但如果沒有專業(yè)的訓練,很難分辨8x和16xAA之間的區(qū)別。
這種類型的神經(jīng)網(wǎng)絡可以使用梯度下降法進行訓練,這種分析方法可以使可能性形成三維景觀。期望的或不期望的結果可以被表示為景觀中的“地形”,在與它們的統(tǒng)計數(shù)據(jù)相對應的地方。正如我們之前所說,梯度下降并不是最好的神經(jīng)網(wǎng)絡訓練方法,但它是一個強大的工具。RNN可以通過保持對變化中的景觀的一些記憶來給梯度下降提供助力。
脈沖神經(jīng)網(wǎng)絡(Spiking Neural Nets):如上所述,神經(jīng)形態(tài)設計有物理和數(shù)字兩種形式。脈沖神經(jīng)網(wǎng)絡(SNN)不是在單個CPU中不斷運行的二進制數(shù)據(jù)流,而可以是軟件、硬件或兩者兼有。它們由分散的物理或邏輯核組成,以一種被稱為“脈沖列車(spike train)”的節(jié)奏發(fā)出信號。這些核陣列由一個共同的網(wǎng)絡結構連接起來,每個神經(jīng)元是該網(wǎng)絡中的一個節(jié)點。
對神經(jīng)元管理其許多I/O通道的方式進行建模的嘗試告訴我們,在許多不同的通道中存在著信息編碼。有與神經(jīng)元是否在發(fā)射有關的數(shù)據(jù),也有在脈沖序列中的數(shù)據(jù)。它還關系到它的哪些連接的神經(jīng)元在同一時間被激發(fā)了。
神經(jīng)形態(tài)計算的一個重要工具是“l(fā)eaky integrate-and-fire”模型。神經(jīng)元之間的通信是由一組描述每個神經(jīng)元不同I/O的微分方程來建模的。(微分方程是比較速率的優(yōu)秀工具。在某些情況下,你可以使用差分方程來模擬任意的n維比較器集合)。
SNN中的每個神經(jīng)元都有一個權重。權重代表了該神經(jīng)元最近活動的滾動平均值。激活次數(shù)越多,值就越高。但權重是“泄漏的”,就像水桶里有個洞一樣。隨著時間的推移,有一個衰減函數(shù)會慢慢減少每個神經(jīng)元的網(wǎng)絡權重。這就解釋了生物學上并非每個神經(jīng)元在任何時候都是活躍的。你可以把它與RNN中永久飽和的連接環(huán)進行對比。
SNN不擅長梯度下降,也不擅長那種優(yōu)化問題。然而,它們可能是獨特的,適合于生物功能的建模。隨著SNN變得更加復雜,它們可能能夠在一系列脈沖中編碼更多信息。這將使我們能夠更精確地計算神經(jīng)系統(tǒng)的各種功能。我們已經(jīng)模擬了C. elegans蛔蟲和Drosophilia果蠅的神經(jīng)系統(tǒng),研究人員正試圖實時模擬人類的皮質(zhì)柱。
SNN研究的另一個可能方向是進入額外的抽象層。研究人員正在努力創(chuàng)建一個SNN,其中每個單獨的神經(jīng)元本身是由一個神經(jīng)網(wǎng)絡組成的。
生成對抗神經(jīng)網(wǎng)絡(GAN):一種日益流行的神經(jīng)網(wǎng)絡是生成對抗神經(jīng)網(wǎng)絡,或稱GAN。GAN是AI的另一種演變,經(jīng)常被用來改變或生成圖像。“對抗性”部分意味著這些神經(jīng)網(wǎng)絡是為了與自己競爭而建立的。
就像Cerberus有三個頭一樣,在GAN中通常有兩個獨立的神經(jīng)網(wǎng)絡,它們有各自的意圖,一個是生成性的,一個是辨別性的。生成模型產(chǎn)生一個結果,通常是一個圖像。然后,生成方試圖“愚弄”判別方模型,看看它能多接近一個期望的輸出。如果判別方?jīng)]有被愚弄,結果就會被丟棄。這個試驗的結果,包括生成方的成功和它所做的內(nèi)容,都被歸檔;有時學習是有監(jiān)督的,有時不是。但無論是哪種情況,在每一輪判斷之后,GAN都會回到繪圖板上,再次嘗試。這就是這對組合如何迭代走向成功的方式。
GAN能夠為現(xiàn)實世界中不存在的人制作獨特、逼真的圖像。要做到這一點,它們會查看許多真實人類的照片,收集數(shù)據(jù),了解人們彼此的差異和相似方式。實際上,這就是粗暴的表型。然后,一旦GAN得到了充分的訓練,它的生成方面就可以開始嘗試自己的原創(chuàng)作品。一個例子是Nvidia的StyleGAN,它可以產(chǎn)生驚人的、具有欺騙性的逼真的圖像。甚至還有一個衍生項目,挑戰(zhàn)觀眾識別給定的StyleGAN的人物圖片是真還是假。
這張圖片中的人是假的。這是由Nvidia的StyleGAN創(chuàng)建的深度偽造的圖像。
事實上,GAN的勞動成果可以非常逼真。2019年加州頒布了一項法律,禁止使用GAN這樣的技術,在未經(jīng)當事人同意的情況下,制作深度偽造的色情制品。該州還禁止在選舉后兩個月內(nèi)傳播政治候選人的偽造視頻。DARPA正試圖通過建立一個完整的部門來研究GAN和擊敗它的方法來跟上這場A/V軍備競賽。
雖然這聽起來很有壓力,但GAN也有一些用途,不涉及在互聯(lián)網(wǎng)上搜刮面向公眾的個人照片。其中一個應用是粒子物理學;物理學家要求在他們的測量中有精確的確定性,然后他們才愿意說他們發(fā)現(xiàn)了一個新的粒子或解釋了一個現(xiàn)象。
GAN擅長的另一個領域是博弈論。面對一系列的規(guī)則和優(yōu)先事項,GAN可以評估參與者的可能選擇,并使用概率分布來預測最終結果。這種類型的神經(jīng)網(wǎng)絡也在研究中,用于改善天文圖像,并預測引力透鏡。
2021年夏天,CodexAI發(fā)布,這是一個能夠改進自身軟件的生成神經(jīng)網(wǎng)絡。該模型可以將自然語言翻譯成代碼。它還可以在輸入所有Github的信息后生成可理解的代碼片段。
雖然CodexAI本身可以被認為是一個成熟的神經(jīng)網(wǎng)絡,但它看起來也很容易成為一個更大的分層系統(tǒng)的一部分。CodexAI的行為類似于一個孤獨的神經(jīng)元在建立其第一個突觸時產(chǎn)生的閃爍的火花。這也顯示了該技術的局限性。神經(jīng)網(wǎng)絡可以學習糾正他們的假設,但AI的能觸及到的仍然超過了它的能力范圍。整合多種不同的模型是未來的方向。
神經(jīng)網(wǎng)絡的缺點
神經(jīng)網(wǎng)絡在滿足特定的、有明確約束條件的要求方面非常出色,但它們可能有些過猶不及。計算機的巨大優(yōu)勢在于它們可以很快地執(zhí)行重復性操作。這些快速迭代也使神經(jīng)網(wǎng)絡有可能過度訓練。當這種情況發(fā)生時,它的航位推算就會完全出錯。過度訓練的AI可以產(chǎn)生一些非常奇怪的圖像,使其對預測性目的(如天氣預報)上不是很有用。
但最終,這些雜七雜八的弱點都是次要的。為了獲得更強大的功能,神經(jīng)網(wǎng)絡必須變得更大,而這正是問題所在。神經(jīng)網(wǎng)絡不可能無限地擴展。它們的擴展效率實際上比普通的數(shù)據(jù)中心更差,因為正是這一點使得神經(jīng)網(wǎng)絡如此強大。分層神經(jīng)網(wǎng)絡的核心概念,其分層深度和冗余度,需要一個指數(shù)級增長的功耗。到目前為止,我們一直在使用蠻力來實現(xiàn)我們的目的,這在一定程度上是可行的。
這種功耗激增的問題正是英特爾將Loihi的低功耗作為主要賣點的原因。最終,功耗和散熱的綜合挑戰(zhàn)將對我們將更多的芯片連接起來以制造更大、更復雜的AI構成硬性限制。
最后的思考
神經(jīng)網(wǎng)絡和AI之間的區(qū)別主要是一個觀點之爭。一個學派認為神經(jīng)網(wǎng)絡本身就是一種AI。其他人認為AI是由從屬的神經(jīng)網(wǎng)絡組成的。唯一的區(qū)別是選擇進行區(qū)分的抽象程度。
每個人似乎都同意的一件事是,如果沒有數(shù)據(jù),神經(jīng)網(wǎng)絡就什么都做不了,是的,大數(shù)據(jù)。隨著邊緣計算和數(shù)據(jù)科學的起飛,一個全新的信息領域向我們打開了大門。每天都有數(shù)量驚人的原始數(shù)據(jù)產(chǎn)生。這就需要我們找到創(chuàng)造性和聰明的方法來使用它。
[參考文章]
What is a Neural Net? — Jessica Hall