現在談人工智慧已經繞不開「神經網路」這個詞了。人造神經網路粗線條地模擬人腦,使得計算機能夠從資料中學習。
機器學習這一強大的分支結束了 ai 的寒冬,迎來了人工智慧的新時代。簡而言之,神經網路可能是今天最具有根本顛覆性的技術。
看完這篇神經網路的指南,你也可以和別人聊聊深度學習了。為此,我們將盡量不用數學公式,而是盡可能用打比方的方法,再加一些動畫來說明。
強力思考
ai 的早期流派之一認為,如果您將盡可能多的資訊載入到功能強大的計算機中,並盡可能多地提供方法來了解這些資料,那麼計算機就應該能夠「思考」。比如 ibm 著名的西洋棋 ai deep blue 背後就是這麼乙個思路:通過對棋子可能走出的每一步進行程式設計,再加上足夠的算力,ibm 程式設計師建立了一台機器,理論上可以計算出每乙個可能的動作和結果,以此來擊敗對手。
通過這種計算,機器依賴於工程師精心預程式設計的固定規則——如果發生了 a,那麼就會發生 b ; 如果發生了 c,就做 d——這並不是如人類一樣的靈活學習。當然,它是強大的超級計算,但不是「思考」本身。
教機器學習
機器——它們和我們很像
這種分層的 ann 是今天機器學習的主要方式之一,通過饋送其大量的標籤資料,可以幫助它學習如何解讀資料(有時甚至比人類做得更好)。
以影象識別為例,它依賴於稱為卷積神經網路(cnn)的特定型別的神經網路,因為它使用稱為卷積的數學過程來以非文字的方式分析影象, 例如識別部分模糊的物件或僅從某些角度可見的物件。 (還有其他型別的神經網路,包括迴圈神經網路和前饋神經網路,但是這些神經網路對於識別諸如影象的東西不太有用,下面我們會用示例來說明)
神經網路的訓練過程
那麼神經網路到底是如何學習的? 讓我們看乙個非常簡單但有效的流程,它叫作監督學習。我們為神經網路提供了大量的人類標記的訓練資料,以便神經網路可以進行基本的自我檢查。
假設這個標籤資料分別由蘋果和橘子的組成。**是資料;「蘋果」和「橘子」是標籤。當輸入影象資料時,網路將它們分解為最基本的元件,即邊緣、紋理和形狀。當影象資料在網路中傳遞時,這些基本元件被組合以形成更抽象的概念,即曲線和不同的顏色,這些元素在進一步組合時,就開始看起來像莖、整個的橘子,或是綠色和紅色的蘋果。
在這個過程的最後,網路試圖對中的內容進行**。首先,這些**將顯示為隨機猜測,因為真正的學習還未發生。如果輸入影象是蘋果,但**為「橘子」,則網路的內部層需要被調整。
調整的過程稱為反向傳播,以增加下一次將同一影象**成「蘋果」的可能性。這一過程持續進行,直到**的準確度不再提公升。正如父母教孩子們在現實生活中認蘋果和橘子一樣,對於計算機來說,訓練造就完美。如果你現在已經覺得「這不就是學習嗎?」,那你可能很適合搞人工智慧。
很多很多層……
通常,卷積神經網路除了輸入和輸出層之外還有四個基本的神經元層:
卷積層(convolution)
啟用層(activation)
池化層(pooling)
完全連線層(fully connected)
卷積層
在最初的卷積層中,成千上萬的神經元充當第一組過濾器,搜尋影象中的每個部分和畫素,找出模式(pattern)。隨著越來越多的影象被處理,每個神經元逐漸學習過濾特定的特徵,這提高了準確性。
比如影象是蘋果,乙個過濾器可能專注於發現「紅色」這一顏色,而另乙個過濾器可能會尋找圓形邊緣,另乙個過濾器則會識別細細的莖。如果你要清理混亂的地下室,準備在車庫搞個大銷售,你就能理解把一切按不同的主題分類是什麼意思了(玩具、電子產品、藝術品、衣服等等)。 卷積層就是通過將影象分解成不同的特徵來做這件事的。
特別強大的是,神經網路賴以成名的絕招與早期的 ai 方法(比如 deep blue 中用到的)不同,這些過濾器不是人工設計的。他們純粹是通過檢視資料來學習和自我完善。
卷積層建立了不同的、細分的影象版本,每個專用於不同的過濾特徵——顯示其神經元在**看到了紅色、莖、曲線和各種其他元素的例項(但都是部分的) 。但因為卷積層在識別特徵方面相當自由,所以需要額外的一雙眼睛,以確保當資訊在網路中傳遞時,沒有任何有價值的部分被遺漏。
神經網路的乙個優點是它們能夠以非線性的方式學習。如果不用數學術語解釋,它們的意思是能夠發現不太明顯的影象中的特徵——樹上的蘋果,陽光下的,陰影下的,或廚房櫃檯的碗裡的。這一切都要歸功於於啟用層,它或多或少地突出了有價值的東西——一些既明了又難以發現的屬性。
在我們的車庫大甩賣中,想像一下,從每一類東西裡我們都挑選了幾件珍貴的寶物:書籍,大學時代的經典 t 恤。要命的是,我們可能還不想扔它們。我們把這些「可能」會留下的物品放在它們各自的類別之上,以備再考慮。
池化層
整個影象中的這種「卷積」會產生大量的資訊,這可能會很快成為乙個計算噩夢。進入池化層,可將其全部縮小成更通用和可消化的形式。有很多方法可以解決這個問題,但最受歡迎的是「最大池」(max pooling),它將每個特徵圖編輯成自己的「讀者文摘」版本,因此只有紅色、莖或曲線的最好樣本被表徵出來。
在車庫春季清理的例子中,如果我們使用著名的日本清理大師 marie kondo 的原則,將不得不從每個類別堆中較小的收藏夾裡選擇「激發喜悅」的東西,然後賣掉或處理掉其他東西。 所以現在我們仍然按照物品型別來分類,但只包括實際想要保留的物品。其他一切都賣了。
這時,神經網路的設計師可以堆疊這一分類的後續分層配置——卷積、啟用、池化——並且繼續過濾影象以獲得更高階別的資訊。在識別中的蘋果時,影象被一遍又一遍地過濾,初始層僅顯示邊緣的幾乎不可辨別的部分,比如紅色的一部分或僅僅是莖的尖端,而隨後的更多的過濾層將顯示整個蘋果。無論哪種方式,當開始獲取結果時,完全連線層就會起作用。
完全連線層
現在是時候得出結果了。在完全連線層中,每個削減的或「池化的」特徵圖「完全連線」到表徵了神經網路正在學習識別的事物的輸出節點(神經元)上。 如果網路的任務是學習如何發現貓、狗、豚鼠和沙鼠,那麼它將有四個輸出節點。 在我們描述的神經網路中,它將只有兩個輸出節點:乙個用於「蘋果」,乙個用於「橘子」。
如果通過網路饋送的影象是蘋果,並且網路已經進行了一些訓練,且隨著其**而變得越來越好,那麼很可能乙個很好的特徵圖塊就是包含了蘋果特徵的高質量例項。 這是最終輸出節點實現使命的地方,反之亦然。
「蘋果」和「橘子」節點的工作(他們在工作中學到的)基本上是為包含其各自水果的特徵圖「投票」。因此,「蘋果」節點認為某圖包含「蘋果」特徵越多,它給該特徵圖的投票就越多。兩個節點都必須對每個特徵圖進行投票,無論它包含什麼。所以在這種情況下,「橘子」節點不會向任何特徵圖投很多票,因為它們並不真正包含任何「橘子」的特徵。最後,投出最多票數的節點(在本例中為「蘋果」節點)可以被認為是網路的「答案」,儘管事實上可能不那麼簡單。
因為同乙個網路正在尋找兩個不同的東西——蘋果和橘子——網路的最終輸出以百分比表示。在這種情況下,我們假設網路在訓練中表現已經有所下降了,所以這裡的**可能就是75%的「蘋果」,25%的「橘子」。或者如果是在訓練早期,可能會更加不正確,它可能是20%的「蘋果」和80%的「橘子」。這可不妙。
如果一開始沒成功,再試,再試…
所以,在早期階段,神經網路可能會以百分比的形式給出一堆錯誤的答案。 20%的「蘋果」和80%的「橘子」,**顯然是錯誤的,但由於這是使用標記的訓練資料進行監督學習,所以網路能夠通過稱為「反向傳播」的過程來進行系統調整。
避免用數學術語來說,反向傳播將反饋傳送到上一層的節點,告訴它答案差了多少。然後,該層再將反饋傳送到上一層,再傳到上一層,直到它回到卷積層,來進行調整,以幫助每個神經元在隨後的影象在網路中傳遞時更好地識別資料。
這個過程一直反覆進行,直到神經網路以更準確的方式識別影象中的蘋果和橘子,最終以100%的正確率**結果——儘管許多任務程師認為85%是可以接受的。這時,神經網路已經準備好了,可以開始真正識別中的蘋果了。
理解神經網路
了解了什麼是神經單元,就很容易理解神經網路,神經網路就是一系列神經單元連線而成構成的網路結構,如下圖 這是乙個5層神經網路,包括輸入層和輸出層,輸入層也叫做資料層,一般接收資料的輸入。這裡每一層的神經單元都與相鄰層的神經單元連線,而與本層的神經單元無連線,因此也叫全連線神經網路。使用神經網路訓練影象...
神經網路 神經網路中的矩陣的理解
在 深度學習入門 基於python的理論與實現 書中,看到講解矩陣的章節,加深了我對矩陣的理解。脫離應用理解數學是很難的。將矩陣放在深度學習的環境裡可以較好的理解矩陣的含義。這裡假設你已經學過矩陣。對於神經網路,我更傾向於理解為 因素 輸入層 影響因子 權重 結果 輸出層 這更貼近實際中的因果關係。...
神經網路概念理解
如果不用非線性激勵函式 其實相當於激勵函式是f x x 每一層輸出都是上層輸入的線性函式,無論該神經網路多少層,輸出都是輸入的線性組合,與沒有隱藏層效果一樣,即為最原始的感知機了。1.對於深層網路,sigmoid函式反向傳播時,很容易出現梯度消失,從而無法完成深層網路的訓練。2.relu會使神經元的...