一 從人工智能談起
1950年,計(jì)算機(jī)科學(xué)的先驅(qū)——阿蘭圖靈提出「Can machines think?」
通常理解的人工智能,就是讓機(jī)器可以學(xué)習(xí),而非編程的方式實(shí)現(xiàn),即習(xí)而識(shí)之。就如同我們創(chuàng)造一個(gè)類(lèi)人物種,讓它具有視覺(jué)、聽(tīng)覺(jué)、觸覺(jué)、語(yǔ)言等功能,不斷教它更多的知識(shí),使其慢慢能夠記憶、推理、決策甚至主動(dòng)思考。
近年來(lái)人工智能的發(fā)展,得益于深度學(xué)習(xí)方面的進(jìn)步。深度學(xué)習(xí)(Deep Learning)作為機(jī)器學(xué)習(xí)拉出的分支,使用包含復(fù)雜結(jié)構(gòu)或由多重非線性變換構(gòu)成的多個(gè)處理層對(duì)數(shù)據(jù)進(jìn)行高層抽象。深度學(xué)習(xí)至今已經(jīng)有數(shù)種框架,如深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和深度信念網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò),已被應(yīng)用于計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、自然語(yǔ)言處理、音頻識(shí)別與生物信息學(xué)等領(lǐng)域,并獲取了極好的效果。
目前頗具吸引力的深度學(xué)習(xí)結(jié)構(gòu)是卷積神經(jīng)網(wǎng)絡(luò)(convolutional neuron networks,CNN),它由一個(gè)或多個(gè)卷積層和頂端的全連通層(對(duì)應(yīng)經(jīng)典的神經(jīng)網(wǎng)絡(luò))組成,同時(shí)也包括關(guān)聯(lián)權(quán)重和池化層(pooling layer)。與其他深度學(xué)習(xí)結(jié)構(gòu)相比,卷積神經(jīng)網(wǎng)絡(luò)在圖像和語(yǔ)音識(shí)別方面能夠給出更優(yōu)的結(jié)果,而且需要估計(jì)的參數(shù)更少。
2012年,多倫多大學(xué)的 Krizhevsky 等人構(gòu)造了一個(gè)超大型卷積神經(jīng)網(wǎng)絡(luò),有9層,共65萬(wàn)個(gè)神經(jīng)元,6千萬(wàn)個(gè)參數(shù)。網(wǎng)絡(luò)的輸入是圖片,輸出是1000個(gè)類(lèi),比如小蟲(chóng)、美洲豹、救生船等等。這個(gè)模型的訓(xùn)練需要海量圖片,它的分類(lèi)準(zhǔn)確率也完爆先前所有分類(lèi)器。紐約大學(xué)的 Zeiler 和 Fergusi 把這個(gè)網(wǎng)絡(luò)中某些神經(jīng)元挑出來(lái),把響應(yīng)特別大的輸入圖像放在一起,看有什么共同點(diǎn)。最后發(fā)現(xiàn),中間層的神經(jīng)元響應(yīng)了某些十分抽象的特征。
第一層神經(jīng)元主要負(fù)責(zé)識(shí)別顏色和簡(jiǎn)單紋理
第二層的一些神經(jīng)元可以識(shí)別更加細(xì)化的紋理,比如布紋、刻度、葉紋。
第三層的一些神經(jīng)元負(fù)責(zé)感受黑夜里的黃色燭光、雞蛋黃、高光。
第四層的一些神經(jīng)元負(fù)責(zé)識(shí)別萌狗的臉、七星瓢蟲(chóng)和一堆圓形物體的存在。
第五層的一些神經(jīng)元可以識(shí)別出花、圓形屋頂、鍵盤(pán)、鳥(niǎo)、黑眼圈動(dòng)物。
這里面的概念并不是整個(gè)網(wǎng)絡(luò)的輸出,是網(wǎng)絡(luò)中間層神經(jīng)元的偏好,它們?yōu)楹竺娴纳窠?jīng)元服務(wù)。雖然每一個(gè)神經(jīng)元都只負(fù)責(zé)簡(jiǎn)單的判斷,但是各司其職的65萬(wàn)個(gè)神經(jīng)元構(gòu)成整體,爆發(fā)的學(xué)習(xí)力是超強(qiáng)的。
二 ?人工智能開(kāi)源神器 TensorFlow
上一部分講到的神經(jīng)網(wǎng)絡(luò),理解了多層處理的概念。近期,開(kāi)源了的?Google TensorFlow 做了一個(gè)非常直觀的神經(jīng)網(wǎng)絡(luò) playground,名字拆開(kāi)來(lái)看的話(huà),是 tensor(張量)的 flow(流動(dòng)),理解上就是「張量如何流動(dòng)」。TensorFlow? 采用數(shù)據(jù)流圖(data flow graphs)用于數(shù)值計(jì)算,節(jié)點(diǎn)(Nodes)在圖中表示數(shù)學(xué)操作,圖中的線(edges)則表示在節(jié)點(diǎn)間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?網(wǎng)址:playground.tensorflow.org/
打開(kāi)網(wǎng)頁(yè)后,總體來(lái)說(shuō),藍(lán)色代表正值,黃色代表負(fù)值。下面具體操作來(lái)看。
首先選擇數(shù)據(jù),在二維平面內(nèi),若干點(diǎn)被標(biāo)記成了兩種顏色,黃色和藍(lán)色,表示想要區(qū)分的兩類(lèi),可以把平面內(nèi)的任意點(diǎn)標(biāo)記成任意顏色。網(wǎng)頁(yè)里提供了4種規(guī)律,選擇后,神經(jīng)網(wǎng)絡(luò)就會(huì)根據(jù)給的數(shù)據(jù)進(jìn)行訓(xùn)練,再分類(lèi)相同規(guī)律的點(diǎn)。
然后是輸入,就是在二維平面內(nèi),你想給網(wǎng)絡(luò)多少關(guān)于「點(diǎn)」的信息。X1 是左右顏色分開(kāi)的,表示橫坐標(biāo)值,而 X2 是上下分開(kāi)的,表示縱坐標(biāo)值。下邊還可以選擇平方值,代表橫縱坐標(biāo)的「拋物線」信息??傊o到更多這個(gè)點(diǎn)的信息,就會(huì)越容易被分開(kāi)。
下面是連接線,用來(lái)表示權(quán)重。藍(lán)色表示用神經(jīng)元的原始輸出,黃色表示用負(fù)輸出,深淺表示權(quán)重的絕對(duì)值大小。鼠標(biāo)放在線上可以看到具體值,是可以更改的。在圖1中,當(dāng)把 X2 輸出的一個(gè)權(quán)重改為-1時(shí),X2 的形狀就變成了上黃下藍(lán)。在圖2中,當(dāng)換成值域?yàn)?0,1)的 sigmoid 時(shí),會(huì)發(fā)現(xiàn)沒(méi)有黃色區(qū)域了。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2
最后來(lái)看一下輸出結(jié)果。黃色背景顏色被歸為黃點(diǎn)類(lèi),而藍(lán)色背景顏色歸為藍(lán)點(diǎn)類(lèi),深淺則表示可能性的強(qiáng)弱。
大家看一下上邊的圖右側(cè)部分,所有在黃色背景中的點(diǎn)都被分類(lèi)為「黃點(diǎn)」,藍(lán)色區(qū)域的點(diǎn)被歸為「藍(lán)點(diǎn)」。再看下左側(cè)的部分,每一層都是通過(guò)上一層信息的組合形成的,而權(quán)重,也就是連接線控制了「如何組合」。
我們所說(shuō)的神經(jīng)網(wǎng)絡(luò),其實(shí)就是從數(shù)據(jù)中學(xué)習(xí)如何分配權(quán)重。經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò),得到正確結(jié)果的準(zhǔn)確率就可以持續(xù)提升。拿深度卷積神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),其在2012年就有了標(biāo)志性突破。Hinton 帶領(lǐng)他的兩位博士生,在計(jì)算機(jī)視覺(jué)識(shí)別領(lǐng)域「奧斯卡」ILSVRC 比賽中獲得了冠軍,測(cè)試數(shù)據(jù)集 ImageNet 有1500萬(wàn)幅圖片,涉及22000種分類(lèi),如貓、狗、大象等。他們當(dāng)時(shí)使用了兩塊 GPU 加速,訓(xùn)練一周后,Top-5 錯(cuò)誤率降到了15.3%,而傳統(tǒng)的視覺(jué)方法最好結(jié)果是26.2%。這樣的進(jìn)步很大程度也得益于,將深度卷積神經(jīng)網(wǎng)絡(luò)與大數(shù)據(jù)(1500萬(wàn)幅圖片)和 GPU Cuda 并行編程結(jié)合了起來(lái)。這樣的算法、算力加大數(shù)據(jù)的結(jié)合,也正成為人工智能領(lǐng)域的標(biāo)配。
三 從「進(jìn)化」視角看「神經(jīng)網(wǎng)絡(luò)」
TensorFlow 展示了數(shù)據(jù)如何層層過(guò)濾,逐步流向終點(diǎn)。
仔細(xì)看會(huì)發(fā)現(xiàn),識(shí)別一張臉的過(guò)程,倒過(guò)來(lái)就是物質(zhì)進(jìn)化的過(guò)程。那么神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程,其實(shí)就是學(xué)習(xí)物質(zhì)組成方式的過(guò)程。對(duì)于每一層神經(jīng)網(wǎng)絡(luò)的理解,其實(shí)就是通過(guò)現(xiàn)有的不同物質(zhì)組合成為新物質(zhì)的過(guò)程。
按照進(jìn)化的理論,從原始簡(jiǎn)單生物進(jìn)化成為復(fù)雜有智慧的物種,任何物種都是從其他物種演變而來(lái)。再往微觀去看,生物體生長(zhǎng)和繁殖的基礎(chǔ),通常由一個(gè)母細(xì)胞產(chǎn)生兩個(gè)或若干子細(xì)胞。恰如《周易》所言:「易有大恒,是生兩儀。兩儀生四象,四象生八卦?!梗R王堆出土本)
我們的物理世界,就是一個(gè)不斷并行組合、再次迭代的過(guò)程,造物主創(chuàng)造了一套神經(jīng)網(wǎng)絡(luò)系統(tǒng),不斷進(jìn)化發(fā)展。而我們傾盡全力去學(xué)習(xí)《黑客帝國(guó)》中 Matrix 的方法論,不斷做關(guān)系的拆分。這樣的拆分就是信息的回卷,是變體的消除,也是不確定性的縮減。于是,我們無(wú)限的接近我們本真的樣子。
寫(xiě)到這,讓我想到了以色列作家尤瓦爾赫拉里的《人類(lèi)簡(jiǎn)史》。人類(lèi)歷史上從認(rèn)知革命跨越到農(nóng)業(yè)革命階段,智人開(kāi)始從單純的采摘捕獵,轉(zhuǎn)變?yōu)榉N植農(nóng)作物協(xié)作群居的方式,人口也開(kāi)始快速的增長(zhǎng)??雌饋?lái)是巨大的進(jìn)步,但卻變成了沉重的負(fù)擔(dān)。過(guò)去「棒打狍子瓢舀魚(yú)」的物質(zhì)生活不復(fù)存在,取而代之的是兒童大量死去,成人也為了換得面包累得滿(mǎn)頭大汗。公元前8500年智人的生活,要比公元前9500年或公元前13000年更為辛苦。
為什么人類(lèi)會(huì)犯下如此致命的誤判?其實(shí)人類(lèi)歷史上不斷重蹈覆轍的道理都不盡相同:因?yàn)槲覀冇肋h(yuǎn)無(wú)法了解各種決定最后的結(jié)果。一心追求更為輕松的生活,于是釋放出一股巨大的力量,改變了世界的面貌,但結(jié)果似乎并非是大家所樂(lè)見(jiàn)的。
人類(lèi)在不可抗拒的卷入一波又一波的歷史洪流中,無(wú)法逆轉(zhuǎn)。預(yù)言家真的能預(yù)知未來(lái)?或許就是看到了人類(lèi)歷史發(fā)展的必然。