編者按:你可能聽說過人工智能,但你知道它是怎么運(yùn)轉(zhuǎn)的嗎?GumGum的首席執(zhí)行官Ophir Tanz早前在TechCrunch上發(fā)表了一篇文章對人工智能的基層技術(shù)——神經(jīng)網(wǎng)絡(luò)進(jìn)行了介紹,文章中并沒有什么高深的數(shù)學(xué)函數(shù)等等,而是通過一個神經(jīng)網(wǎng)絡(luò)“識別”蘋果的例子來對其工作方式進(jìn)行了生動的呈現(xiàn)。通過這篇文章,你或許對人工智能有更加深刻的理解。
如果你去閱讀任何有關(guān)于人工智能的文章,你肯定會碰到“神經(jīng)網(wǎng)絡(luò)(neural network)”這個專有名詞,它是指通過松散地模仿人類的大腦,來使得計算機(jī)能夠通過數(shù)據(jù)來進(jìn)行學(xué)習(xí)的方式。
可以說,神經(jīng)網(wǎng)絡(luò)可能是當(dāng)今存在的最具有破壞性與顛覆性的技術(shù)之一。用其作為關(guān)鍵技術(shù)的機(jī)器學(xué)習(xí)比其他任何人工智能研究分支都能夠擔(dān)負(fù)起終結(jié)漫長“人工智能冬季”的使命。
這篇文章旨在幫助你理解深度學(xué)習(xí)如何進(jìn)行工作的。所以文章中就避免了關(guān)于深入討論數(shù)學(xué)的部分,而使用了更多的類比與動畫模擬。
1、
早期研究人工智能的教授認(rèn)為,如果你把盡可能多的信息裝入一臺強(qiáng)大的計算機(jī),并盡可能多地告訴它怎么去理解那些數(shù)據(jù),它就應(yīng)該能夠“思考”。這就是IBM著名的深藍(lán)(Deep Blue)——國際象棋計算機(jī)背后的想法:通過詳盡地編程,將棋子的每一項可能、已知的下棋策略寫入計算機(jī)中,并給予足夠的動力。
理論上來說,這臺由IBM程序員創(chuàng)建的機(jī)器能夠計算出來每一個可能的動作和未來的結(jié)果,從而來安排后續(xù)行動的順序來超越對手。這實際上和1997年的象棋大師的學(xué)習(xí)沒有什么區(qū)別。(注:這與Alphago不同,Alphago使用的是自主學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),深藍(lán)使用的是一個人編寫的硬編碼函數(shù)。)
通過這種計算,機(jī)器依賴于工程師精心預(yù)編程的固定規(guī)則——如果發(fā)生了特定的情況,那么與其對應(yīng)的情況就會發(fā)生;如果發(fā)生了特定的情況,就應(yīng)該按照固定的方式進(jìn)行應(yīng)對。很顯然,這與人類靈活的學(xué)習(xí)方式想去甚遠(yuǎn),僅僅是強(qiáng)大的計算而已,更不用說是思考本身了。
2、
在過去的十多年中,科學(xué)家重新?lián)炱鹆艘粋€不依賴大型百科全書記憶庫的舊概念,而是用一種模仿人類思維、簡單而系統(tǒng)的方法分析輸入數(shù)據(jù)的技術(shù)。這種技術(shù)被稱為深度學(xué)習(xí)或者是神經(jīng)網(wǎng)絡(luò)。其實從20世紀(jì)40年代它就一直存在了,得益于當(dāng)前數(shù)據(jù)的大量增長,比如圖像、視頻、語音搜索、瀏覽習(xí)慣等等,以及超負(fù)荷和負(fù)擔(dān)得起的處理器,它終于能夠開始顯現(xiàn)真正的潛力。
人工(相對于人類)神經(jīng)網(wǎng)絡(luò)(ANN)是一種算法構(gòu)造,使得機(jī)器能夠從語音命令和播放策略到音樂組合和圖像識別中學(xué)到一切有用的信息。典型的ANN由數(shù)千個互連的人造神經(jīng)元組成,這些神經(jīng)元按順序堆疊在被稱為層的行列中,形成數(shù)百萬個連接。在許多情況下,層僅通過輸入和輸出與它們之間和之后的神經(jīng)元層互連。(這與人腦中的神經(jīng)元完全不同,它們是相互連接的。)

這種分層的ANN是當(dāng)前機(jī)器學(xué)習(xí)的主要方式之一,并且有大量的標(biāo)簽數(shù)據(jù)可以幫助學(xué)習(xí)如何解讀數(shù)據(jù)(有時甚至比人類更好)。
以圖像識別為例,它依賴于稱為卷積神經(jīng)網(wǎng)絡(luò)(CNN)的特定類型的神經(jīng)網(wǎng)絡(luò),因為它使用稱為卷積的數(shù)學(xué)過程能夠以非文字方式分析圖像,例如識別部分模糊的對象或僅從某些角度可見的對象。(還有其他類型的神經(jīng)網(wǎng)絡(luò),包括遞歸神經(jīng)網(wǎng)絡(luò)和前饋神經(jīng)網(wǎng)絡(luò),但是這些神經(jīng)網(wǎng)絡(luò)對于識別諸如圖像的東西不太有用,下面我們只使用使用示例來進(jìn)行分析。)
3、
那么,神經(jīng)網(wǎng)絡(luò)如何學(xué)習(xí)?讓我們來看一個非常簡單但有效的程序,它被稱為監(jiān)督學(xué)習(xí)。在這里,我們?yōu)樯窠?jīng)網(wǎng)絡(luò)提供了大量有人類標(biāo)記的訓(xùn)練數(shù)據(jù),以便神經(jīng)網(wǎng)絡(luò)可以最大程度地在事實上進(jìn)行自我檢查。
假設(shè)這個標(biāo)簽數(shù)據(jù)分別由蘋果和橙子的圖像組成。照片是數(shù)據(jù),“蘋果”和“橙子”是標(biāo)簽,具體取決于圖像。當(dāng)圖像被輸入時,網(wǎng)絡(luò)將它們分解成最基本的組件,即邊緣,紋理和形狀。當(dāng)圖像通過網(wǎng)絡(luò)傳播時,這些基本組件被組合起來形成更抽象的概念,即曲線和不同顏色,當(dāng)進(jìn)一步組合時,開始看起來像莖、整個橙子,或綠色和紅色蘋果等等。
在這個過程即將技術(shù)的時候,網(wǎng)絡(luò)試圖對圖像中的內(nèi)容進(jìn)行預(yù)測。一開始這些預(yù)測是隨機(jī)的,因為還沒有真正地進(jìn)行學(xué)習(xí)。如果輸入的圖像是蘋果,但預(yù)測為“橙子”,則需要調(diào)整網(wǎng)絡(luò)的內(nèi)層。
這些調(diào)整是通過一個稱為反向傳播的過程來進(jìn)行的,以增加下一次為同一圖像預(yù)測“蘋果”的可能性。這種情況一直發(fā)生,直到預(yù)測或多或少是準(zhǔn)確的,而且似乎并沒有得到改善。正如父母教孩子們在現(xiàn)實生活中識別蘋果和橙子一樣,對于計算機(jī)來說,也是會熟能生巧的。
通常,卷積神經(jīng)網(wǎng)絡(luò)除了輸入和輸出層之外還有四個基本的神經(jīng)元層,分別是卷積(Convolution)、激活(Activation)、池(Pooling)、完全連接(Fully connected)。
3.1 卷積
在初始的卷積層或?qū)又校汕先f的神經(jīng)元作為第一組過濾器,在圖像的每個部分和像素中尋找特征。隨著越來越多的圖像被處理,每個神經(jīng)元逐漸學(xué)會對特定的特征進(jìn)行過濾,這對于準(zhǔn)確率的提高有極大幫助。
在蘋果的情況下,一個過濾器可能集中在發(fā)現(xiàn)紅色的顏色,而另一個過濾器可能正在尋找圓形邊緣,而另一個過濾器可能會識別薄的,棒狀的莖。
舉個例子,如果你必須清理一個雜亂的地下室,準(zhǔn)備一跳蚤市場或者搬家,你就會明白將經(jīng)歷什么,你會將地下室中的物品按照不同的類別(書、玩具、電子、藝術(shù)品、衣服)來整理好。這是一個卷積層通過將圖像分解成不同的功能來完成的。
特別強(qiáng)大的是,神經(jīng)網(wǎng)絡(luò)與早期的人工智能方法(深藍(lán)及其同類)不同,這些過濾器不是設(shè)計的,他們純粹是通過查看數(shù)據(jù)來學(xué)習(xí)和和完善自己的。
卷積層基本上創(chuàng)建了一個圖譜——圖片的不同的、細(xì)分的版本,每個都與一種過濾特征相匹配,來指示其神經(jīng)元在哪里看到紅色,莖,曲線和各種其他元素的實例(但是部分的),比如在這個文章中例子是一個蘋果。但由于卷積層在特征識別中是相當(dāng)自由的,所以它需要額外的輔助,以確保圖片通過網(wǎng)絡(luò)移動時沒有遺漏任何值。
3.2 激活
神經(jīng)網(wǎng)絡(luò)的一個優(yōu)點是它們能夠以非線性方式學(xué)習(xí),能夠發(fā)現(xiàn)不太明顯的圖像中的特征。比如樹上的蘋果圖片,其中的一些在直接陽光和在樹蔭下,或者堆積在廚房灶臺上的碗里。這一切都是由于激活層,它或多或少地突出了有價值的東西,包括那些直接和難以辨認(rèn)的品種。
在上文關(guān)于地下室打掃的例子中,我們可以想像從每一個分開的東西中,我們都挑選了一些可能想要保留的東西。我們把這些“可能留下”的物品放在他們各自的類別的頂部,以便稍后再考慮。
3.3 池化
整個圖像中的所有這種“卷積”都會產(chǎn)生大量的信息,這可能很快成為一個計算噩夢,它將會耗費大量的計算資源。進(jìn)入池層,就可以將其全部縮小成更一般和更易消化的形式。有很多方法可以解決這個問題,但最受歡迎的是“最大池化”,它將每個特征映射到一個摘要版本,因此只有發(fā)紅,發(fā)干或彎曲的才是最顯著的特征。
就好比在車庫清潔的例子中,我們不得不從每個類別堆中選擇想要留下的東西,然后賣掉或處理其他的東西。所以現(xiàn)在我們?nèi)匀话凑瘴锲返念愋头诸愇覀兊乃袞|西,但只留下我們實際想要保留的物品,其他的一切都賣了 。(順便說一句,這結(jié)束了混亂的比喻,以幫助描述在神經(jīng)網(wǎng)絡(luò)內(nèi)進(jìn)行的過濾和縮小。)
在這一點上,神經(jīng)網(wǎng)絡(luò)設(shè)計師可以堆疊這種類型的后續(xù)分層配置——卷積,激活,池化——并且繼續(xù)篩選過濾圖像以獲得更高級別的信息。在識別圖片中蘋果的情況下,圖像被一遍又一遍地過濾,在初始層中,只能捕捉到很少的特征,比如勉強(qiáng)可辨別的邊緣部分,紅色或只是一個莖的頂端。隨后,更多的過濾層將顯示整個蘋果。無論如何,當(dāng)開始得出結(jié)果的時候,完全連接的層開始發(fā)揮作用。

3.4 完全連接
現(xiàn)在是開始得到答案的時候了。在完全連接的層中,每個縮小的或“池化”的特征圖都被“完全連接”到表示學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)項目的輸出節(jié)點(神經(jīng)元)。如果網(wǎng)絡(luò)的任務(wù)是學(xué)習(xí)如何發(fā)現(xiàn)貓,狗,豚鼠和沙鼠,那么它將有四個輸出節(jié)點。在我們所描述的神經(jīng)網(wǎng)絡(luò)中,它將只有兩個輸出節(jié)點:一個用于“蘋果”,一個用于“橙子”。
如果通過網(wǎng)絡(luò)提供的圖片是蘋果,而且網(wǎng)絡(luò)已經(jīng)進(jìn)行了一些訓(xùn)練,并且隨著其預(yù)測而變得越來越好,那么這就成了一個監(jiān)測蘋果的特征圖譜。這是最終輸出節(jié)點開始實現(xiàn)功能的地方,反之亦然。
蘋果和橙子節(jié)點的工作(他們在工作中學(xué)到的),基本上是為那些包含各自水果的特征的圖像進(jìn)行“投票”。因此,“蘋果”節(jié)點認(rèn)為圖像中包含“蘋果”特征越多,它發(fā)送給這個圖的投票就越多。兩個節(jié)點都必須對每個圖片進(jìn)行投票,無論它包含什么。所以在這種情況下,“橙子”節(jié)點不會向任何圖片發(fā)送過多的投票,因為它們并不真正包含任何“橙子”特征。最后,發(fā)送最多票數(shù)的節(jié)點(在本例中為“蘋果”節(jié)點)可以被認(rèn)為是網(wǎng)絡(luò)的“答案”,盡管它不是那么簡單。
因為同一個網(wǎng)絡(luò)正在尋找兩個不同的東西——蘋果和橙子,所以網(wǎng)絡(luò)的最終輸出以百分比表示。在這種情況下,我們假設(shè)網(wǎng)絡(luò)在訓(xùn)練中有點退步,所以這里的預(yù)測可能就是75%的“蘋果”,25%的“橙子”,或者如果在訓(xùn)練剛開始的時候,可能會更加不正確,比如確定它是20%的“蘋果”和80%的“橙子”。

3.5 反向傳播
所以,在早期階段,神經(jīng)網(wǎng)絡(luò)以百分比的形式吐出了一堆錯誤的答案。20%的“蘋果”和80%的“橙子”的預(yù)測顯然是錯誤的,但由于這是使用標(biāo)簽的訓(xùn)練數(shù)據(jù)進(jìn)行監(jiān)督學(xué)習(xí),所以網(wǎng)絡(luò)能夠通過稱為“反向傳播”的系統(tǒng)來找出錯誤。
反向傳播將“關(guān)于離答案有多遠(yuǎn)的結(jié)果”反饋發(fā)送到上一層的節(jié)點。然后,該層將反饋發(fā)送到上一層,直到它回到卷積層進(jìn)行調(diào)整,以幫助每個神經(jīng)元在后續(xù)的圖像通過網(wǎng)絡(luò)時更好地識別每個級別的數(shù)據(jù)。
這個過程一直反復(fù)進(jìn)行,直到神經(jīng)網(wǎng)絡(luò)以更準(zhǔn)確的方式(100%的正確預(yù)測)識別圖像中的蘋果和橙子。盡管許多工程師認(rèn)為85%是可以接受的。到了這個時候,神經(jīng)網(wǎng)絡(luò)就已經(jīng)準(zhǔn)備好專業(yè)地在圖片上識別蘋果了。