人工智慧核心概念辨析
我們首先要清楚人工智慧(Artificial Intelligence)是一個計算機領域的技術,直譯過來它泛指人通過機器實現的智能。那麼傳統的計算機技術與人工智慧有什麼區別?下圖是現在所有計算機鼻祖的模型,打孔機。
打孔機的原理很簡單,在有關記憶的討論中提到過:打孔機有一套基本的規則,根據不同的輸入按照這個規則輸出不同的結果,無論數據輸入是什麼樣的,都不會影響基本的規則,那麼現代計算機工作起來是什麼樣子的?
我們舉個有趣的例子,如何判斷一個人是不是禿頭?
我們做一個基本的假設,一個人如果有5000根頭髮算不禿頭,低於5000根算禿頭,從現在的編程模式開始,寫下的代碼大致意思為:如果(if)頭髮大於等於5000根,那麼不禿頭;不然(else)小於5000根,那麼禿頭。
我們模擬遇到各種各樣的問題,用語言模擬現在的編程方式解決問題的過程:
1 一個人如果掉了一根頭髮,那麼算不算禿頭?
為了彌補這個絕對化的答案,我們假設4900~4999的數據算不太禿。
2 如果掉的是腦袋後面的正面看不見怎麼辦?
為了彌補這個我們限定掉正面的算禿頭。
3 如果是頭頂很禿,外圍很多的頭髮(謝頂)算不算禿頭?
為了彌補這個我們把謝頂的算禿頭。
4 如果一個人腦袋很大,5000根看起來很禿,如果腦袋很小,5000根頭髮看起來不少怎麼辦?
為了解決這一條,我們再加上一條,用頭髮除以頭皮的面積,低於算禿頭,高於不算。
5 狗的毛非常少,是不是有點禿?
計算機無法回答,因為基本預設是判定人的,我們得把狗的模型加進去,依次為了防止遺漏,還要把貓加進去,有毛的加進去,森林加進去......
這個過程中實際情況會發生各種超出簡單預料的變化,程序員要不停的限制條件,給出解決的判定方法,計算機完全沒有自主的智能,編程過程需要無窮無盡的補丁。
那麼人是如何判斷禿頭還是不禿頭?
第一點,輸入的信息成為記憶,信息輸入的同時改變處理信息的結構,參與我們對這個詞的認知。我們小的時候看過幾個禿頭的圖片或者真人,大人說這叫禿頭,然後我們就知道頭髮少算禿。這樣少一根頭髮,少正面的頭髮,謝頂,頭腦大小的問題都通過記憶的對比得以解決。
第二點,我們將獲得的概念進行遷移,用來形容其他事物。當語文課本里出現「山禿了」,我們自然而然明白禿是一個形容稀少的詞,就學會了說「山禿了」,當然也就可以判斷狗的毛是不是禿了。
第三點,潛意識中我們賦予禿方向性,而具有類似意義的「光」則沒有,輸入的視覺信息與文字「禿」相配合的場景,只有在從下而上生長的東西變得稀少時才可以使用,而這種相關性又是因為輸入的視覺信息所攜帶的相關性導致的,「禿」與自下而上的相關性並未被意識察覺卻被正確使用。可以說頭髮禿了,林禿了,但是不能說鬍子禿了,樹根禿了。
第四點,基於時間,我們可以根據記憶對未來進行推測和想像。我們看過春夏秋冬樹葉的生長過程,就可以推測出秋天樹會變禿。
人的智能可以非常靈活的處理各種疑問和問題,輸入的信息本身帶有特徵,那麼人的智能反過來用這個特徵(信息中不同因素之間的相關性)處理這個信息,現在廣為使用的人工智慧技術就在這幾點向人類的智能靠近,這種人工智慧技術就是機器學習,這裡的學習就是指通過數據學習,就像我們獲得記憶的過程。人工智慧既然是模擬生命的智能,那麼最直接的方法就是模擬生物神經網路(Biological Neural Network,BNN),它形成的就是人工神經網路(Artificial Neural Network, ANN),簡稱神經網路。
構造一個人工神經網路
我們嘗試用一個例子來說明生物神經網路和人工神經網路是怎麼工作的,如何把蘋果和香蕉識別出來?為了簡化這個問題,我們從兩個特徵來描述蘋果和香蕉,顏色和形狀,限定為蘋果是紅色的圓形,香蕉為黃色的彎形。
這裡有非常重要的一點,紅色總是伴隨圓形,黃色總是伴隨彎形,這裡存在一種相關性,當然這是由其生物性狀決定的。
我們知道赫布的細胞集合,也了解了視覺感受野的基本原理。
那麼我們利用感受野的機制構造出一個識別蘋果和香蕉的生物神經網路,如下圖。
1.假象一個可以識別水果的生物神經網路
每個圓圈代表一部分工作的細胞或者細胞集合,深灰色的圓圈代表水平細胞,紅色與圓形相當於感受野周邊,黃色與方形相當於感受野中心,實線代表輸入刺激,虛線代表抑制刺激,模擬的就是水平細胞的側向抑制能力的結果,所以如果四個輸入同時刺激的時候,刺激之和為0.
當出現紅色並且為圓形的時候,刺激經過轉換,這個網路會形成抑制刺激,判斷為蘋果;當出現黃色並且為彎形的時候,這個網路會匯合形成刺激,判斷為香蕉。
當然,這是我們的大腦明白了什麼是蘋果和香蕉之後的結果,那麼在我們很小的時候沒有見過蘋果和香蕉的時候,生物神經網路的初始狀態是什麼樣子呢?如下圖。
2.初始的生物神經網路
每個顏色的輸入與傳遞刺激的匯合點還是抑制刺激的細胞都是相連的,形狀也是一樣,但是經過長時間的刺激學習,紅色和圓形長期同時出現,通過各種各樣的強化聯繫的方式,如細胞間爭奪營養因子,或者突觸容量的增減及突觸重排,紅色與圓形的聯繫被加強了,同樣,黃色與彎形的線與匯合點的聯繫也被加強了,那麼這個競爭的原理怎麼表現呢?我們知道在上圖的網路中從紅色刺激觸發的連線是2條,假設這個就是起始的突觸容量,而最終要求的是是只有1條突觸可以保存下來,同時無論是將刺激轉換為抑制刺激的細胞/細胞集合,還是刺激集合點,從初始的4個突觸容量最終要變化為最多可以容留2個突觸作為進入的刺激,那麼這個網路會形成什麼樣的呢?我們以蘋果作為例子說明。
3.生物神經網路的學習過程
再加上香蕉的刺激,就會形成識別蘋果和香蕉的生物神經網路,如下圖。假如一開始紅色保留的是右側的連線,那麼形成的結果是正好相反的,但是並不影響區分二者的結果,這個過程省略,其結果如下圖。同時被刺激的連線被大大加強,而不被刺激的連線被削弱,生物神經網路經過反覆刺激,修改神經間連接的方式,最終形成了識別水果的能力。那麼這個過程,如果用計算機的數學方式,應該怎麼表達呢?看下圖。
4 假象一個可以識別水果的人工神經網路
假設神經網路最終的輸出強度為S,根據S的值判定是蘋果還是香蕉,頂層細胞輸入的信號強度為P,網路的強度為W,那麼S = P1 x W1 + P2 x W2 + P3 x W3 + P4 x W4 。
當我們看到蘋果、紅色和圓形刺激的時候,P1和P3為1,P2和P4的刺激為0,假設所有的網路強度一致,W1=W2=W3=W4=1,那麼識別蘋果的結果就是S = - ( 1 x 1 ) + ( 0 x 1 ) - ( 1 x 1 ) + ( 0 x 1 ) = - 2,注意P1P3輸入變為負號的過程,如下圖。
當我們看到香蕉、黃色和彎形刺激的時候,P2和P4為1,P1和P3為0,結果為+2,判定為香蕉,如下圖。關鍵點來了,我們知道生物神經網路一開始並不是可以直接判斷出來哪個是蘋果哪個是香蕉的,那麼人工神經網路起始也是一樣,如下圖。
5 初始的人工神經網路
把轉化刺激為抑制的細胞/細胞集合標記為綠色,把與它相連的線標記為綠色,用字母A表示與相關,網路強度為W1A=W2A=W3A=W4A=1;,把直接傳遞刺激的匯合點標記為藍色,連線也標記為藍色,用字母B表示相關,網路強度W1B=W2B=W3B=W4B=1,這樣就是人工神經網路的起始樣子。讓我們計算一下不同刺激獲得的值是多少,首先計算蘋果,P1=P3=1,P2=P4=0不表示,如下圖。
S1 = - ( P1 x W1A + P3 x W3A ) + P1 x W1B + P3 x W3B = - ( 1 x 1 + 1 x 1 ) + 1 x 1 + 1x1 = 0 , 計算完的結果是和事實不同的(應該得-2),正確的識別網路中藍色的連線W1B和W3B的強度應該是0,那麼這個網路就出現了誤差。再計算香蕉,
P2 = P4 = 1,P1 = P3 = 0 不表示,如下圖。
S2 = - ( P2 x W2A + P4 x W4A ) + P2 x W2B + P4 x W4B = - ( 1 x 1 + 1 x 1 ) + 1 x 1 + 1x1 = 0,計算的結果一樣不對(應該得+2),獲得這樣的結果並不意外,因為所有的網路強度大小都是相等的,好比生物神經網路的初始狀態,我們要用數學的方法糾正這兩個誤差,實際上就是如何修正網路連接強度的值,達到學習的目的,這與生物強化某些細胞間的聯繫而弱化另一些的方法一致。
我們回到識別蘋果的例子,假設識別蘋果正確的值應該是-2,那麼0的結果就出現了0 - ( -2 ) = 2 的誤差(實際值減去正確值等於誤差值),W1A為實際值,存在誤差E1A,正確的W1A應該是W1A正確 = W1A - E1A(正確的等於實際值減去誤差)= 1 - E1A,依此類推,W1B存在誤差E1B,W3A存在誤差E3A,W3B存在誤差E3B。但是我們還是不能解決這個問題,能解決這個問題的關鍵是參照生物神經網路。
首先,對於S1正確的值而言,左側細胞集合的輸入在變號後是負數,而右側節點的值為正數,那麼左側的絕對值一定要大於右側的絕對值;第二點,無論左側還是右側獲得的輸入值是限定的最大值是2,這點是根據之前生物神經網路突觸容量的假設所限定的;第三點,在這個設計的網路中,網路的強度不能是負值,但可以為0,所以W1B等的正確值大於等於0;那麼我們用圖來表示計算的過程,就會發現非常簡單了。
最終的結果就是,與右側相連的網路強度變為0,通過誤差的反饋過程,數據訓練了人工神經網路本身,當在此刺激P1,P3的時候,人工神經網路就可以正確識別出蘋果來。在上述的例子中,為了模擬真實的生物神經網路中水平細胞的側向抑制效果,特意加入了把左側輸入刺激變為負號的細胞集合,事實上當我們撤掉變號的過程,不限制刺激信號的正負,仍舊可以得到類似的結果。
我們並沒有告訴人工神經網路什麼是蘋果或者香蕉,而只是輸入數據和確定神經網路的基本連接規則(而非預先定義的直接規則),讓人工神經網路自己學會識別出蘋果,這就是人工神經網路與以往通過硬編碼(如何識別禿頭的例子)所不同的地方。
概念圖
上面介紹了最為簡單的人工神經網路,那麼它與機器學習和人工智慧的關係是什麼?
人工神經網路是機器學習的一種技術,有關人工神經網路的我們了解了,那麼不是人工神經網路的機器學習是什麼呢?大數據這個詞大家都不陌生,大數據技術依賴的是數據中的數據關係,通過大數據訓練的演算法中很多就是機器學習中不是人工神經網路的部分,比如根據你購物的時候購買特定商品的頻率推送相應的廣告。
除了人工神經網路,深度學習也是經常被提起的名詞,人工神經網路與深度學習又是什麼關係?我們首先要對人工神經網路有一個粗淺的了解,如下圖。
在識別蘋果和香蕉的例子中,我們構建的其實是趨近於兩層的單層神經網路,甚至形成了部分側向抑制的能力,如果四個輸入信號都被刺激,那麼最終的刺激為0。人工神經網路有一個非常重要的部分,深度神經網路,是指含有多個隱層的神經網路,如下圖。我們知道神經網路是要通過數據來訓練(學習)的,所以如果先要通過具有相關性的標籤化的數據訓練網路,那麼這部分數據就是通過人的監督來篩選的,比如我們構建的簡單的識別水果的神經網路,就是先把蘋果和香蕉的數據準備好,再輸入進去,這就是監督學習。假如不去告訴人工神經網路什麼是對,什麼是錯,什麼是蘋果,什麼是香蕉,而是通過神經網路自己進行聚類學習,除了識別出一般的香蕉蘋果,甚至發現特殊品種,這種就是無監督學習,或者叫非監督學習。
從人工智慧到無監督學習,整體的概念聯繫圖就是這樣的。
人工神經網路的發展並非一帆風順,從最早的單層神經網路到現在的多層神經網路經歷了七十多年的研究,如下是人工神經網路的發展簡史。如下是人工神經網路所使用的演算法。我們繼續簡單了解一下深度神經網路在兩個·領域的應用.
深度神經網路的兩個應用領域
1.CNN—圖像識別(參考 用CNN來識別鳥or飛機的圖像)
在深度神經網路中,卷積神經網路(Convolutional Neural Network,簡稱CNN)是參考人的視覺形成規律所構建的,因此常常用於圖像識別;循環神經網路,也被稱為時間遞歸神經網路(Recurrent Neural network,簡稱RNN)是具有「記憶」的神經網路,因此常常用於聯繫上下文的語音識別,語義分析。
我們曾在討論輪廓的時候見過下面的圖片,它說的是人的視覺概念形成的過程。
視覺首先在V1形成基本的方向判斷,然後逐層整合繼續抽象,變成基本的紋理和小輪廓,最後形成輪廓概念,卷積神經網路與之類似,如下圖。在A部分神經網路形成一些簡單的模式,比如其中的光條D,而在E部分神經網路形成了轎車的輪廓概念。圖像識別的過程是通過數據集對神經網路進行訓練,這包括監督學習和無監督學習,然後再用訓練好的網路識別出輪廓概念。
2 RNN-語音/語義識別 (參考循環神經網路RNN打開手冊)
語音識別與圖像識別有兩點不同,第一點,語音基本是一維的信息,語音識別以語調中的基本語素(最小的語音的聲波頻率)為主要識別信息,聲音的大小和語氣(聲波的振幅)為輔,而圖像識別是二維的平面信息;第二點,語音識別需要語境,通過上下文聯繫識別,這就需要「記憶」,而圖像識別基本是即刻處理。RNN的特點就是「循環」,系統的輸出會以某種形式會保留在網路里, 和系統下一刻的輸入一起共同決定下一刻的輸出,此刻的狀態包「記憶」,變成下一刻變化的依據,如下圖是幾時卷積神經網路(CNN)與循環神經網路(RNN)的對比。
一對一的CNN針對的是一次性的數據處理,多對一的RNN中b1、b2、b3是神經網路主體不同時刻的狀態,而a1、a2、a3又是不同的數據,只有c作為輸出,這個多對一的過程可以應用在對一句話的分析上「他的眼睛流下了眼淚」,「他的」、「眼睛」,「流下了眼淚」可以相當於a1、a2、a3,「他很難過」可以相當於結果,如果沒有對「他的」,「眼睛」的「記憶」,我們就沒辦法得出「他很難過」的結果,而且這種辭彙的限定可以是不限長度的,如下圖的場景。「他拾起手帕,擦了擦流淚的眼睛,然後微笑」,這實際描述的是一個喜極而涕的場景,甚至我們可以揣測流淚者文雅舉動背後的身份,只有將前後文聯繫在一起才能生成準確的語義,如果只斷成「他拾起手帕」或者「他拾起手帕擦了擦眼淚」都會扭曲本來的含義。
3 CNN與RNN的融合
對於人機交互而言,信息輸入的實質是編碼和解碼的過程,在計算機的早期階段是鍵盤與晦澀的計算機語言,在之後圖形界面出現,普通大眾可以通過滑鼠的點擊表達自己的需求,再之後是移動時代,拖曳和多點觸控出現了。那麼現在,各種基於循環伸進網路技術的語音識別軟體出現了,人機交互似乎可以回到人人之間的語音交互。科大訊飛在鎚子手機發布會上出盡了風頭,其依賴的技術是大很多語音識別技術並未採用的CNN,下圖為其DFCNN。
簡單的說,DFCNN就是把語音變成圖形(將語音進行傅里葉變換後時間和頻率作為維度),再用對圖形處理更為熟練的CNN處理,獲得更好的語音識別效果。
與之類似,搜狗語音識別也採用了CNN,如下圖。
事實上,很多神經網路採用了複合結構,將CNN與RNN等神經網路模型整合之後進行應用。
數據與建模
我們知道深度學習所採用的技術關鍵點之一是通過數據訓練網路,那麼究竟需要多少數據?在2016年初,互聯網出現了一個引爆性的新聞,谷歌收購的Deep Mind公司通過以CNN為基礎的神經網路形成的人工智慧Alphago在圍棋上擊敗了李世石,在這個網路開始訓練的時候已經相當於下了三千萬的棋譜,而與李世石下棋的時候這個數據達到一億,當然人類完成一局要一小時,而Alphago只要一秒。
Alphago的示例是不是說一定要海量的數據才能訓練神經網路?這樣對於沒有大量計算資源(分散式的Alphago調用了1202個CPU和176個GPU),以及龐大資料庫(3000萬棋譜)的小公司和個人是不是就意味著無法使用人工智慧?
有另一家公司在Deep Mind公司被收購前與其齊名,Vicarious,該公司的特點是大量借鑒神經科學家和腦科學家的科研成果進入人工智慧領域,在其科研人員中有20%來自相關領域。我們在上文中提到了神經細胞的側向抑制作用對輪廓識別和馬太效應的影響,那麼如果把這種能力模擬成神經網路中的某些函數會是什麼結果?
Vicarious在NIPS、神經信息處理系統大會(Conference and Workshop on Neural Information Processing Systems)上發表了這樣一篇論文,利用了腦科學上非常成熟的成果:人類的神經系統系統普遍存在的側向抑制的現象,在他們在模型上實現了側向約束(Lateral Constraints),如下圖。
注意右下角的放大小圖中的灰色方塊一元因子(Unary factor),這是與水平細胞相似的關鍵。在字母驗證碼識別這個具體問題上,Vicarious基於生成型形狀模型的系統能夠只用1406張圖片作為訓練集,就超越了利用深度學習的800萬圖片達到的效果。所以當模型足夠優化的時候可以大大減少對數據的需求量,而借鑒神經科學的發展無疑是一個有效的途徑。
遷移學習
傳統的深度學習是以海量數據作為基礎的,那麼其後出現的就是增強學習。周伯通的左右互搏就像自己陪自己訓練,Aiphago在訓練神經網路的時候就是自己與自己下棋,這個就是增強學習的意義。除了深度學習和增強學習,還有一種學習方法被稱為遷移學習(Transfer Learning)。
我們在創造的討論中涉及到了遷移的概念,人類智能的特點之一就是將已經理解的抽象概念應用在廣泛的領域,那麼人工神經網路是不是也存在這樣的能力?谷歌在谷歌翻譯上應用了一個名為谷歌神經機器翻譯(Google Neural Machine Translation,GNMT)的技術,就實現了類似人類的遷移學習能力。
我們知道翻譯專業的人除了要學習第一外語,比如英語外,還要學習第二外語,比如日語,那麼如果這個翻譯是非常好的話,自然而然就可以充當日本人與英國人之間的翻譯,儘管他的母語是漢語。這個翻譯並沒有直接學習日語翻譯到英語的過程,但是他學習過中英與中日的翻譯,在這個學習的過程中他形成了超越語言特徵本身的抽象概念,然後這種概念在不同語言之間自由切換。
谷歌的翻譯技術實現了部分遷移學習,而這種能力也是未來人工智慧技術的必然之路。
推薦閱讀:
※CNN架構優化之二:GoogLeNet Incepetion V1
※正在開始學習kaldi,有哪些準備要做?
※如何「科學的比較」機器學習模型表現?
※人工智慧技術大爆發,離改變世界到底還有多遠?
※AI+時代將至,在哪些領域率先開啟產業化?