北京,五道口,早7點。不出意外,這里又如往常一樣堵了個水泄不通。原本被用來疏導交通流量、提高道路通行能力,減少交通事故的紅綠信號燈,此時早已失去了原有的功能。每當遇到這種情況,如果想要使交通重新恢復順暢,一般情況下就只有兩種方法:一是等待交警來組織車輛進行疏通,另外一個就得靠熱心群眾來幫忙了。
無論是經驗豐富的交警,亦或是首次遇到這種情況的菜鳥司機,雖然可能耗時不同,但最終應該都能順利疏通車流,使交通恢復正常。
而原本被用來疏導交通流量、提高道路通行能力的紅綠信號燈,此時,依然"傻乎乎"的按照設定好的時間間隔來回變換,對于擁堵的交通毫無助益。
警察、路人與交通燈,在交通中同樣扮演著疏通者的角色,但為什么警察與路人最終能夠順利疏通車流,而交通燈卻不能呢?因為警察與路人是自然智能的擁有者,而控制交通燈變化的,只是慣常設定好的程序,不會隨機應變。
近些年,人工智能大潮迅速席卷全球。人工智能相關技術與應用,已經逐漸滲透到各個領域。同時,隨著通信技術的發展、物聯網的發展、深度學習技術的發展,越來越多的"物"開始擁有"智慧",比如能跟孩子交流的音箱、能夠自動調節亮度的電燈、能夠自動"判斷"白天還是夜晚的窗簾,亦或者能夠更加智能的疏通車流的交通信號燈等等。
人工智能能解決堵車問題嗎?
這些變化為大眾帶來更多便利的同時,也使我們處在了一個更加智能化的世界。但是,這樣所謂的智能就足夠了嗎?
就像上面提到的堵車問題,即便五道口的紅綠燈接入物聯網、接入深度學習庫,在面對復雜的交通擁堵時,依然無法像人類那樣憑借經驗去迅速疏導車流。這就是現階段絕大多數所謂的人工智能設備為何無法真正被稱為"智能"的主要原因。
那么,有辦法讓機器像人一樣擁有或近似擁有自然智能,以應對突發狀況,甚至作出隨機應變嗎?
·深度學習有哪些局限性?
時下,賦予機器以"智能"的手段通常是通過"機器學習"來實現的,而機器學習中最為大家所熟知的莫過于"深度學習"。
在2016年之前,人工智能領域大多使用有監督的深度學習方法。有監督的學習方法就是訓練者通過手工設定學習特征的方法,來讓機器學會某件事情。這就像我們上小學的時候,大多數情況下是老師在教我們識字一樣,老師教的是什么,我們就學什么,很少去自己進行思考性的拓展學習。
有監督的深度學習就像是在給機器上課
而近兩年,人工智能領域開始大范圍使用無監督的深度學習方法。即讓機器通過從大數據中尋找規律、挖掘價值,去認識某些事物。這就像我們即便不知道一種花的確切名字是什么,但通過歸納花這類植物的特征,我們在遇見不同的花時,都至少知道它是花,而且在遇到相同的花時,我們也知道它們是相同的。雖然這個比喻不夠確切,但相信大家能明白它與有監督深度學習的區別。
不過,雖然時下大都采用深度學習方法,通過數據挖掘來賦予機器以智能,但歸根到底,一種深度學習訓練方法訓練出來的機器,絕大多數情況下還是只能應對一類事物。況且深度學習只是在圖像和語音等富媒體的分類和識別上取得非常好的效果,它并非人工智能的終極方法。
最熟悉的例子莫過于谷歌AlphaGO,它是一款專注于圍棋的人工智能,在沒有進行象棋相關的深度學習之前的時候,AlphaGO只能用來下圍棋。這就是現階段以深度學習方法為主的人工智能行業所面臨的一個問題。
AlphaGO在圍棋界是大師,但在其它方面則是"智障"
但是在人類的愿景中,要達到的是讓人工智能變得和人一樣聰明,能夠應對不同種類的事件,甚至能夠在面對不同突發狀況時,迅速作出隨機應變的反應。現階段的深度學習方法、或更大一個范疇的機器學習很難達成這樣的結果。因此,需要讓機器在某種程度上具備接近自然智能、或具備真正自然智能的新的方法,來推動人工智能在"智慧"層面的發展。而目前,神經擬態計算就是這樣一種神奇的技術。
·如何讓機器像人腦一樣工作
要想了解神經擬態計算,那么首先要了解自然智能。
神經擬態學工程師、德國海德堡大學物理學家卡爾海因茨·邁耶(Karlheinz Meier)認為,人類的大腦相對于計算機而言有三大特性:
其一、低能耗。人腦的功率大約是20瓦特,而當前試圖模擬人腦的超級計算機需要幾百萬瓦特;
其二、容錯性。失去一個晶體管就能破壞一個微處理器,但大腦時刻都在失去神經元;
其三、無須編程。大腦在與外界交互的過程中自發地學習和改變,而非遵循預設算法所限制的路徑和分支。
這三大特性,尤其是第三項特性,使人類的智能與計算機、機器的智能區隔開來,形成了獨特的自然智能。
自然智能使人類能夠應對不同的突發狀況
而神經擬態,就是科學家們為了實現這些目標,力求讓計算機去實現對人類大腦的模擬,同時了解大腦的工作機制,最終讓計算機或機器具備如人腦一樣的近自然智能特性,從而讓計算機或機器具備更低能耗、更加高效、容錯率更高的能力。
當前,人類大腦單個神經細胞--即神經元--的工作模式大體上已被科學家們掌握,大腦中每個可見的腦葉和神經節的作用也已被探明,但是腦葉和神經節中的神經元如何組織依舊是個謎。科學家們認為神經元的組織方式決定了大腦的思考方式,同時也很可能是意識的存在方式。因此,想要實現神經擬態計算,首先就需要構建出一顆模擬大腦神經元工作的計算芯片。
這就是神經擬態計算的核心原則。
正如前面所言,如果說深度學習、機器學習是從大量有過標注的數據中去提取出來一些方式,來解決某一領域的問題的話,那么神經擬態計算就是通過模擬人腦神經元工作機制,使人工智能從數據的各種形態中提取出更多有價值的東西,而非只局限于某一領域。
那么有人可能就會問,"這樣做究竟有何意義呢?"
·神經擬態計算的意義在哪?
我們還是回到現實中的堵車這件事上來。
拋開人為因素造成的堵車不談。現在的交通燈都是預先進行了編程,什么時候是紅燈,什么時候是綠燈,以及怎么切換,都是編程好的。但我們都知道,實際交通環境中,不同時間段、不同地點的車流量是完全不同的。明明車很多的時間段、或地點、或方向上,綠燈的時間不夠長,有的車為了少等幾個燈時,可能就會趁黃燈硬闖,車流量大的時候就很容易發生擁堵了。
普通交通燈不夠智能,無法應對越來越復雜的路況
那么如何讓交通燈變得更加智能,從而能夠應對不同時間、不同地點、不同方向上的不同車流,盡量避免因機械性的控制讓交通變得擁堵呢?
如果靠機器學習的方法訓練出一個模型,可以通過某一種檢測的方法讓交通燈做這樣或那樣的變化,可能會有一定的效果,但并不會適用于所有的路口。這時候,其實最需要的是在每一個路口放一個人,警察、熱心群眾都可以,不需要有博士一樣的智商,甚至不需要有一定的經驗的人都可以幫助這個路口最大程度避免擁堵。但是如果這樣做的話,就太過勞民傷財了。
而神經擬態計算,就能夠通過不斷的訓練完成這樣的事情。
與深度學習、機器學習不同。如果給紅綠燈安裝一顆神經擬態計算芯片,那么這個紅綠燈就可以從一個初始規則狀態開始學習,通過視覺的輸入,通過其它體系信息的輸入,逐漸"知道"怎么樣按照當前的情況,自適應的去調整信號燈的切換,讓這個路口保持最大、最高效的通過率,以避免因車流大、綠燈時間短而造成路口堵塞的問題。
其實在自動駕駛領域,類似的問題最為普遍。
比如一輛自動駕駛汽車是通過深度學習來"了解"北京路況下如何駕駛的話,那么它如果到了滿大街都是小三輪的其它城市,這輛自動駕駛汽車可能就傻眼了。而重新為這輛車制定一套當地的深度學習框架,又非常的費事。因此,就需要這輛車具備進一步的自主學習能力。不需要人為去重新制定方案,只要通過多次實際行駛中對新環境的數據分析和學習,就能適應新環境的路況規則,這就才是人工智能想要達成的目標。
而神經擬態計算正是模擬人腦結構,讓基于其的設備具有自主學習能力的技術。
那么神經擬態計算芯片是如何模擬人腦結構的呢?以英特爾的LOIHI芯片為例我們可以大致了解其中奧妙。
人類大腦有800億神經元,每個神經元又可以跟上萬個神經元進行連接。怎么讓一個系統和軟硬件結合的設備可以以人腦的方式去學習呢?LOIHI就是模擬腦神經元模式,把學習規則放入到每個神經元里去進行學習。
比如一個人不管是聰明還是不太聰明的人,其實都可以去學很多種技能,會說話,又會唱歌,又會寫字,又可以炒菜做飯,所有這些都是一個大腦解決的,沒有人會切換不同大腦來做不同事情。
人類可以同時掌握多項技能,甚至不需要經過特殊的訓練
英特爾研發的LOIHI神經擬態計算芯片,就是首個可以自主學習的芯片。神經擬態計算不是馮·諾依曼體系結構上的計算--存儲體系:CPU主要負責運算,而取得的指令在存儲序列,數據也在存儲序列。任何的計算過程都是取指令、數據、算出來的結果又存在內存里,這是標準的計算架構。
神經擬態計算的計算和存儲是在一起的,會形成很多分布式的單元,而且采用了異步計算方式,這種計算方式與馮·諾依曼結構的同步時鐘驅動不同模塊工作的方式不同。
比如英特爾LOIHI神經擬態計算芯片。它的整個芯片就像人類大腦,比如當你在聽歌的時候,其實只有一個區域在工作,不是所有都在負責聽歌這件事。神經擬態的好處是以很高的能效比解決一些計算問題,而且特別是一些比較復雜的問題,比如說稀疏編碼、詞典學習、約束滿足等等。
其實神經擬態計算的出現,就是要解決那些現在機器學習都做不了的事情,而這些事情通過類腦芯片能夠得到很好的解決。
·神經擬態計算為何不具有取代性?
神經擬態研究并非什么新鮮事,但神經擬態落地到計算芯片上、落地到實際應用中,英特爾LOIHI實屬首例。LOIHI每一個單芯片包含128個核,每一個核可以實現布局多個神經元,每個神經元可以跟其它神經元產生互相連接。
英特爾的LOIHI神經擬態計算芯片
LOIHI核芯里面的神經元可以接收其它神經元發送的脈沖,與深度學習卷積神經網不同,LOIHI構成的是脈沖神經網。脈沖神經網同時處理時空信號,時間在里面是一個訓練參數,脈沖早一點來和晚一點來,其訓練結果會產生差異。脈沖到達之后會驅動神經元里面原本記憶和存儲的以往被激發過的某些狀況,如果剛好這個脈沖來的時候導致了現在可以被激活發出一個信號的話,那么它就會發出一個信號給別的神經元,同時配合相應的算法,從而產生訓練和學習的過程,這也是LOIHI最底層的一種學習方式。
引入時空信號處理器的特性,使得LOIHI芯片上的神經元里面的很多參數都可被實時調整,這使得LOIHI在工作時可以修改自己,實現自主學習、自我學習的能力,這是其與之前所有芯片的根本差異。如果都是在深度學習框架下訓練好一個模型,然后放到一個芯片里,那么這個芯片工作的時候永遠都是原來的參數,不設定新的框架就不會再改變。而神經擬態計算芯片通過實時自主修改參數、并進行學習訓練,就可以很好的解決人工智能的"智能"問題,使機器能夠更接近自然智能的處理方式。
·結語
在深度學習、機器學習之后,到量子計算真正付諸實際應用之前,神經擬態計算堪稱推動人工智能發展的重要手段。
那么既然更加先進的技術出現了,深度學習、機器學習就應該被淘汰掉嗎?筆者認為這種觀點并不正確。
對于時下的人工智能行業來說,多形態技術的存在有極大的必要性,機器學習在很多領域依然是目前最好的訓練、學習手段之一。而深度學習在圖像、語音等領域的應用效果,也并非其它方法可以輕易去替代。
神經擬態計算的出現,給人工智能發展開拓了一條新的道路。它與深度學習、機器學習、數據挖掘等技術之間并非是誰取代誰、誰淘汰誰的關系,而是互補共進的關系,只有將多種技術靈活的運用到人工智能領域,這個行業才能真正的發展起來,才能真正成為惠及民生的產業。
從算法的角度看,機器學習有很多種算法,例如回歸算法、基于實例的算法、正則化算法、決策樹算法、貝葉斯算法、聚合算法、關聯規則學習算法和人工神經網絡算法。很多算法可以應用于不同的具體問題;很多具體的問題也需要同時應用好幾種不同的算法。由于篇幅有限,我們僅介紹其中(可能是公眾心目中名氣最大的)一種:人工神經網絡。
人工神經網絡:
既然人工智能要模擬人類的思考過程,一些人工智能科學家想,不如我們先看看人類是怎樣思考的吧?
人類的大腦是一個復雜的神經網絡。它的組成單元是神經元。每一個神經元看起來很簡單,它們先接收上一個神經細胞的電信號刺激,再向下一個神經細胞發出電信號刺激。
別看神經元細胞很簡單,但如果神經元的數量很多,它們彼此之間的連接恰到好處,變成神經網絡,就可以從簡單中演生出復雜的智能來。例如,人類的大腦中含有1千億個神經元,平均每個神經元跟其他的神經元存在7000個突觸連接。一個三歲小孩大腦中,大約會形成1千萬億個突觸。隨著年齡的增長,人類大腦的突觸數量會逐漸減少。成年人的大腦中,大約會有1百萬億到5百萬億個突觸。
雖然科學家還沒有完全搞清楚人類大腦的神經網絡的運作方式,但人工智能科學家想,不理解沒關系,先在計算機中模擬一組虛擬的神經網絡試試看,這就是人工神經網絡。
在人工神經網絡中,每一個小圓圈都是在模擬一個“神經元”。它能夠接收從上一層神經元傳來的輸入信號(也就是一堆數字);根據不同神經元在它眼中的重要性,分配不同的權重,然后將輸入信號按照各自的權重加起來(一堆數字乘以權重的大小,再求和);接著,它將加起來結果代入某個函數(通常是非線性函數),進行運算,得到最終結果;最后,它再將這個結果輸出給神經網絡中的下一層神經元。
人工神經網絡中的神經元看起來很簡單,只知道傻傻地將上一層神經元的輸入數據進行簡單的運算,然后再傻傻地輸出。沒想到這一套還真的很管用,運用一系列精巧的算法,再給它投喂大量的數據之后,人工神經網絡居然能夠像人腦的神經網絡一樣,從復雜的數據中發現一系列“特征”,產生“聰明的思考結果”。
那么人工神經網絡是怎么學習的呢?所謂的學習,本質上是讓人工神經網絡嘗試調節每一個神經元上的權重大小,使得整個人工神經網絡在某一個任務的測試中的表現達到某個要求(例如,識別汽車的正確率達到90%以上)。
請回憶一下前面講過的“梯度下降法”。人工神經網絡嘗試不同的權重大小,相當于在一個參數空間的地圖上四處游走。每一種權重的組合對應的人工神經網絡執行任務時的錯誤率,相當于這個地圖上的每一點都有一個海拔高度。尋找一組權重,使得人工神經網絡的表現最好,錯誤率最低,就相當于在地圖上尋找海拔最低的地方。所以,人工神經網絡的學習過程,常常要用到某種“梯度下降法”,這就是為什么如果將來你要學習人工智能,第一個要掌握的就是“梯度下降法”。
機器學習的分類:
從學習風格的角度看,機器學習有很很多種學習方法,我們簡要地列舉其中幾種方法:監督學習、非監督學習、強化學習和遷移學習。
監督學習:
比方說,你想教計算機如何識別一張照片上的動物是不是貓。你先拿出幾十萬張動物的照片,凡是有貓的,你就告訴計算機有貓;凡是沒有貓的,你就告訴計算機沒有貓。也就是說,你預先給計算機要學習的數據進行了分類。這相當于你監督了計算機的學習過程。
經過一段監督學習的過程之后
非監督學習:
比方說,你想教計算機區分貓和狗的照片。你拿出幾十萬張貓和狗的照片(沒有其他動物)。你并不告訴計算機哪些是貓,哪些是狗。也就是說,你沒有預先給計算機要學習的數據進行分類,所以你并沒有監督計算機的學習過程。
經過一段監督學習的過程之后,計算機就能把你輸入的照片按照相似性分成兩個大類(也就是區分了貓和狗)。只不過計算機只是從數字照片的數學特征的角度進行了分類,而不是從動物學的角度進行了分類。
強化學習:
比方說,你想教計算機控制一只機械臂打乒乓球。一開始,計算機控制機械臂像傻瓜一樣,拿著球拍做很多隨機的動作,完全不得要領。
但是,一旦機械臂湊巧接到一個球,并把球擊打到對手的球桌上,我們就讓計算機得一分,這叫做獎勵。一旦機械臂沒有正確地接到球、或沒有把球擊打到正確的位置上,我們就給計算機扣一分,這叫做懲罰。經過大量的訓練之后,機械臂漸漸地從獎勵和懲罰中,學會了接球、擊打球的基本動作。
遷移學習:
比方說,你讓計算機學會了控制機械臂打乒乓球之后,又叫它學習打網球。這個時候,你不需要讓計算機從零開始重新學,因為乒乓球和網球的規則是相似的。例如,這兩種球都要把球擊打到對方的球場/球桌上。所以,計算機可以將之前學到的動作遷移過來。這樣一種學習,就叫做遷移學習。