一文看懂神經網路工作原理
現在談人工智慧已經繞不開“神經網路”這個詞了。人造神經網路粗線條地模擬人腦,使得計算機能夠從資料中學習。
機器學習這一強大的分支結束了 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%是可以接受的。這時,神經網路已經準備好了,可以開始真正識別圖片中的蘋果了。
原文連結:https://techcrunch.com/2017/04/13/neural-networks-made-easy/