一文看懂神經網絡工作原理
本文帶來對深度神經網絡的通俗介紹。
現在談人工智能已經繞不開“神經網絡”這個詞了。人造神經網絡粗線條地模擬人腦,使得計算機能夠從數據中學習。
機器學習這一強大的分支結束了 AI 的寒冬,迎來了人工智能的新時代。簡而言之,神經網絡可能是今天***有根本顛覆性的技術。
看完這篇神經網絡的指南,你也可以和別人聊聊深度學習了。為此,我們將盡量不用數學公式,而是盡可能用打比方的方法,再加一些動畫來說明。
強力思考
AI 的早期流派之一認為,如果您將盡可能多的信息加載到功能強大的計算機中,并盡可能多地提供方法來了解這些數據,那么計算機就應該能夠“思考”。比如 IBM 著名的國際象棋 AI Deep Blue 背后就是這么一個思路:通過對棋子可能走出的每一步進行編程,再加上足夠的算力,IBM 程序員創建了一臺機器,理論上可以計算出每一個可能的動作和結果,以此來擊敗對手。
通過這種計算,機器依賴于工程師精心預編程的固定規則——如果發生了 A,那么就會發生 B ; 如果發生了 C,就做 D——這并不是如人類一樣的靈活學習。當然,它是強大的超級計算,但不是“思考”本身。
教機器學習
在過去十年中,科學家已經復活了一個舊概念,不再依賴大型百科全書式記憶庫,而是框架性地進行模擬人類思維,以簡單而系統的方式分析輸入數據。 這種技術被稱為深度學習或神經網絡,自20世紀40年代以來一直存在,但是由于今天數據的大量增長—— 圖像、視頻、語音搜索、瀏覽行為等等——以及運算能力提升而成本下降的處理器,終于開始顯示其真正的威力。
機器——它們和我們很像
人工神經網絡(ANN)是一種算法結構,使得機器能夠學習一切,從語音命令、播放列表到音樂創作和圖像識別。典型的 ANN 由數千個互連的人造神經元組成,它們按順序堆疊在一起,以稱為層的形式形成數百萬個連接。在許多情況下,層僅通過輸入和輸出與它們之前和之后的神經元層互連。(這與人類大腦中的神經元有很大的不同,它們的互連是全方位的。)
這種分層的 ANN 是今天機器學習的主要方式之一,通過饋送其大量的標簽數據,可以幫助它學習如何解讀數據(有時甚至比人類做得更好)。
以圖像識別為例,它依賴于稱為卷積神經網絡(CNN)的特定類型的神經網絡,因為它使用稱為卷積的數學過程來以非文字的方式分析圖像, 例如識別部分模糊的對象或僅從某些角度可見的對象。 (還有其他類型的神經網絡,包括循環神經網絡和前饋神經網絡,但是這些神經網絡對于識別諸如圖像的東西不太有用,下面我們會用示例來說明)
神經網絡的訓練過程
那么神經網絡到底是如何學習的? 讓我們看一個非常簡單但有效的流程,它叫作監督學習。我們為神經網絡提供了大量的人類標記的訓練數據,以便神經網絡可以進行基本的自我檢查。
假設這個標簽數據分別由蘋果和橘子的圖片組成。照片是數據;“蘋果”和“橘子”是標簽。當輸入圖像數據時,網絡將它們分解為最基本的組件,即邊緣、紋理和形狀。當圖像數據在網絡中傳遞時,這些基本組件被組合以形成更抽象的概念,即曲線和不同的顏色,這些元素在進一步組合時,就開始看起來像莖、整個的橘子,或是綠色和紅色的蘋果。
在這個過程的***,網絡試圖對圖片中的內容進行預測。首先,這些預測將顯示為隨機猜測,因為真正的學習還未發生。如果輸入圖像是蘋果,但預測為“橘子”,則網絡的內部層需要被調整。
調整的過程稱為反向傳播,以增加下一次將同一圖像預測成“蘋果”的可能性。這一過程持續進行,直到預測的準確度不再提升。正如父母教孩子們在現實生活中認蘋果和橘子一樣,對于計算機來說,訓練造就***。如果你現在已經覺得“這不就是學習嗎?”,那你可能很適合搞人工智能。
很多很多層……
通常,卷積神經網絡除了輸入和輸出層之外還有四個基本的神經元層:
- 卷積層(Convolution)
- 激活層(Activation)
- 池化層(Pooling)
- 完全連接層(Fully connected)
卷積層
在最初的卷積層中,成千上萬的神經元充當***組過濾器,搜尋圖像中的每個部分和像素,找出模式(pattern)。隨著越來越多的圖像被處理,每個神經元逐漸學習過濾特定的特征,這提高了準確性。
比如圖像是蘋果,一個過濾器可能專注于發現“紅色”這一顏色,而另一個過濾器可能會尋找圓形邊緣,另一個過濾器則會識別細細的莖。如果你要清理混亂的地下室,準備在車庫搞個大銷售,你就能理解把一切按不同的主題分類是什么意思了(玩具、電子產品、藝術品、衣服等等)。 卷積層就是通過將圖像分解成不同的特征來做這件事的。
特別強大的是,神經網絡賴以成名的絕招與早期的 AI 方法(比如 Deep Blue 中用到的)不同,這些過濾器不是人工設計的。他們純粹是通過查看數據來學習和自我完善。
卷積層創建了不同的、細分的圖像版本,每個專用于不同的過濾特征——顯示其神經元在哪里看到了紅色、莖、曲線和各種其他元素的實例(但都是部分的) 。但因為卷積層在識別特征方面相當自由,所以需要額外的一雙眼睛,以確保當圖片信息在網絡中傳遞時,沒有任何有價值的部分被遺漏。
神經網絡的一個優點是它們能夠以非線性的方式學習。如果不用數學術語解釋,它們的意思是能夠發現不太明顯的圖像中的特征——樹上的蘋果,陽光下的,陰影下的,或廚房柜臺的碗里的。這一切都要歸功于于激活層,它或多或少地突出了有價值的東西——一些既明了又難以發現的屬性。
在我們的車庫大甩賣中,想像一下,從每一類東西里我們都挑選了幾件珍貴的寶物:書籍,大學時代的經典 T 恤。要命的是,我們可能還不想扔它們。我們把這些“可能”會留下的物品放在它們各自的類別之上,以備再考慮。
池化層
整個圖像中的這種“卷積”會產生大量的信息,這可能會很快成為一個計算噩夢。進入池化層,可將其全部縮小成更通用和可消化的形式。有很多方法可以解決這個問題,但***的是“***池”(Max Pooling),它將每個特征圖編輯成自己的“讀者文摘”版本,因此只有紅色、莖或曲線的***樣本被表征出來。
在車庫春季清理的例子中,如果我們使用著名的日本清理大師 Marie Kondo 的原則,將不得不從每個類別堆中較小的收藏夾里選擇“激發喜悅”的東西,然后賣掉或處理掉其他東西。 所以現在我們仍然按照物品類型來分類,但只包括實際想要保留的物品。其他一切都賣了。
這時,神經網絡的設計師可以堆疊這一分類的后續分層配置——卷積、激活、池化——并且繼續過濾圖像以獲得更高級別的信息。在識別圖片中的蘋果時,圖像被一遍又一遍地過濾,初始層僅顯示邊緣的幾乎不可辨別的部分,比如紅色的一部分或僅僅是莖的***,而隨后的更多的過濾層將顯示整個蘋果。無論哪種方式,當開始獲取結果時,完全連接層就會起作用。
完全連接層
現在是時候得出結果了。在完全連接層中,每個削減的或“池化的”特征圖“完全連接”到表征了神經網絡正在學習識別的事物的輸出節點(神經元)上。 如果網絡的任務是學習如何發現貓、狗、豚鼠和沙鼠,那么它將有四個輸出節點。 在我們描述的神經網絡中,它將只有兩個輸出節點:一個用于“蘋果”,一個用于“橘子”。
如果通過網絡饋送的圖像是蘋果,并且網絡已經進行了一些訓練,且隨著其預測而變得越來越好,那么很可能一個很好的特征圖塊就是包含了蘋果特征的高質量實例。 這是最終輸出節點實現使命的地方,反之亦然。
“蘋果”和“橘子”節點的工作(他們在工作中學到的)基本上是為包含其各自水果的特征圖“投票”。因此,“蘋果”節點認為某圖包含“蘋果”特征越多,它給該特征圖的投票就越多。兩個節點都必須對每個特征圖進行投票,無論它包含什么。所以在這種情況下,“橘子”節點不會向任何特征圖投很多票,因為它們并不真正包含任何“橘子”的特征。***,投出最多票數的節點(在本例中為“蘋果”節點)可以被認為是網絡的“答案”,盡管事實上可能不那么簡單。
因為同一個網絡正在尋找兩個不同的東西——蘋果和橘子——網絡的最終輸出以百分比表示。在這種情況下,我們假設網絡在訓練中表現已經有所下降了,所以這里的預測可能就是75%的“蘋果”,25%的“橘子”。或者如果是在訓練早期,可能會更加不正確,它可能是20%的“蘋果”和80%的“橘子”。這可不妙。
如果一開始沒成功,再試,再試…
所以,在早期階段,神經網絡可能會以百分比的形式給出一堆錯誤的答案。 20%的“蘋果”和80%的“橘子”,預測顯然是錯誤的,但由于這是使用標記的訓練數據進行監督學習,所以網絡能夠通過稱為“反向傳播”的過程來進行系統調整。
避免用數學術語來說,反向傳播將反饋發送到上一層的節點,告訴它答案差了多少。然后,該層再將反饋發送到上一層,再傳到上一層,直到它回到卷積層,來進行調整,以幫助每個神經元在隨后的圖像在網絡中傳遞時更好地識別數據。
這個過程一直反復進行,直到神經網絡以更準確的方式識別圖像中的蘋果和橘子,最終以100%的正確率預測結果——盡管許多工程師認為85%是可以接受的。這時,神經網絡已經準備好了,可以開始真正識別圖片中的蘋果了。
注:谷歌 AlphaGo 用自學習神經網絡評估棋盤位置的方法和我們介紹的方法仍有不同。