1. 程式人生 > >入門 | 一文看懂卷積神經網路

入門 | 一文看懂卷積神經網路

本文選自Medium,主要介紹了神經網路中的卷積神經網路,適合初學者閱讀。

概述

深度學習和人工智慧是 2016 年的熱詞;2017 年,這兩個詞愈發火熱,但也更加容易混淆。我們將深入深度學習的核心,也就是神經網路。大多數神經網路的變體是難以理解的,並且它們的底層結構元件使得它們在理論上和圖形上是一樣的。

下圖展示了最流行的神經網路變體,可參考這篇部落格 (http://www.asimovinstitute.org/neural-network-zoo/)。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

本文介紹卷積神經網路(CNN)。在開始之前,我們首先了解一下感知機。神經網路是一些被稱作感知機的單元的集合,感知機是二元線性分類器。

640?wx_fmt=png

如上圖所示,輸入 x1 和 x2 分別和各自的權重 w1 和 w2 相乘、求和,所以函式 f=x1*w1+x2*w2+b(偏置項,可以選擇性地新增)。函式 f 可以是任意的運算,但是對於感知機而言通常是求和。函式 f 隨後會通過一個啟用函式來評估,該啟用函式能夠實現期望分類。Sigmoid 函式是用於二元分類的最常見的啟用函式。如果您想進一步瞭解感知機,推薦閱讀這篇文章(https://appliedgo.net/perceptron/)。

如果我們把多個輸入堆疊在一起,並且使用函式 f 將其與位於另一層的多個堆疊在一起的單元連線在一起,這就形成了多個全連線的感知機,這些單元(隱藏層)的輸出成為最後一個單元的輸入,再通過函式 f 和啟用函式得到最終的分類。如下圖所示,這個就是最簡單的神經網路。

640?wx_fmt=png

神經網路有一個獨特的能力,被稱作「泛逼近函式」(Universal Approximation function),所以神經網路的拓撲和結構變體是很多樣化的。這本身就是一個很大的話題,Michael Nielsen 在文章中做了詳細的描述(http://neuralnetworksanddeeplearning.com/chap4.html)。讀完這個我們可以相信:神經網路可以模擬任何函式,不管它是多麼的複雜。上面提到的神經網路也被稱為前饋神經網路(FFNN),因為資訊流是單向、無環的。現在我們已經理解了感知機和前饋神經網路的基本知識,我們可以想象,數百個輸入連線到數個這樣的隱藏層會形成一個複雜的神經網路,通常被稱為深度神經網路或者深度前饋神經網路。

640?wx_fmt=png

那麼深度神經網路和卷積神經網路有什麼不同呢?讓我們來探討一下。

CNN 由於被應用在 ImageNet 等競賽中而廣受歡迎,最近也被應用在自然語言處理和語音識別中。需要記住的關鍵點是,其他的變體,如 RNN、LSTM、GRU 等,基於和 CNN 類似的結構,不過架構存在一些差異。

640?wx_fmt=png

CNN 由三種不同的層組成,即「卷積層」、「池化層」、「密集層或全連線層」。我們之前的神經網路都是典型的全連線層神經網路。如果想了解更多卷積和池化層的知識,可以閱讀 Andrej Karpathy 的解釋(https://cs231n.github.io/convolutional-networks/)。現在繼續我們關於層的討論,下面我們來看一下卷積層。

(在下面的內容裡,我們會以影象分類為例來理解卷積神經網路,後面再轉移到自然語言處理和視訊任務中。)

卷積層:假設一張影象有 5*5 個畫素,1 代表白,0 代表黑,這幅影象被視為 5*5 的單色影象。現在用一個由隨機地 0 和 1 組成的 3*3 矩陣去和影象中的子區域做乘法,每次迭代移動一個畫素,這樣該乘法會得到一個新的 3*3 的矩陣。下面的動圖展示了這個過程。

640?wx_fmt=gif

上述的 3*3 的矩陣被稱作「濾波器」,它的任務是提取影象特徵,它使用「優化演算法」來決定 3*3 矩陣中具體的 0 和 1。我們在神經網路的卷積層中使用好幾個這樣的濾波器來提取多個特徵。3*3 矩陣的每一個單個步驟被稱作「步幅」(stride)。

下圖展示了使用兩個三通道濾波器從三通道(RGB)影象中生成兩個卷積輸出的詳細過程。

640?wx_fmt=png

濾波器 w0 和 w1 是「卷積」,輸出是提取到的特徵,包含這些濾波器的層叫做卷積層。

池化層:這個層主要使用不同的函式為輸入降維。通常,最大池化層(max-pooling layer)出現在卷積層之後。池化層使用 2*2 的矩陣,以卷積層相同的方式處理影象,不過它是給影象本身降維。下面分別是使用「最大池化」和「平均池化」的示例。

640?wx_fmt=png

全連線層:這個層是位於之前一層和啟用函式之間的全連線層。它和之前討論過的簡單「神經網路」是類似的。

注意:卷積神經網路結果也會使用正則化層,不過本文將分開討論。此外,池化層會損失資訊,所以也不是首選的。通常的做法是在卷機層中使用一個較大的步幅。

ILSVRC 2014 的亞軍 VGGNet 是一個流行的卷積神經網路,它使用 16 個層來幫助我們理解 CNN 中深度的重要性,AlexNet 是 ILSVRC 2012 的冠軍,它只有 8 層。Keras 中有可以直接使用的模型 VGG-16。

640?wx_fmt=png

在 Keras 中載入了這個模型之後,我們可以觀察每一層的「output shape」來理解張量維度,觀察「Param#」來了解如何計算引數來得到卷積特徵。「Param#」是每一次獲取卷積特徵時的所有權重更新。

640?wx_fmt=png

現在我們已經熟悉了卷積神經網路的結構,理解了每一層都是如何執行的,那麼我們可以進一步去理解它是如何用在自然語言處理和視訊處理中的了。您可以在這個連結中瞭解自 2012 年以來所有獲得 ImageNet 競賽冠軍的 CNN 模型(https://adeshpande3.github.io/The-9-Deep-Learning-Papers-You-Need-To-Know-About.html)。

∑編輯 | Gemini

來源 | 機器之心640?wx_fmt=gif

演算法數學之美微信公眾號歡迎賜稿

稿件涉及數學、物理、演算法、計算機、程式設計等相關領域
稿件一經採用,我們將奉上稿酬。

投稿郵箱:[email protected]

相關推薦

入門 | 神經網路

本文選自Medium,主要介紹了神經網路中的卷積神經網路,適合初學者閱讀。概述深度學習和人工智慧

【深度學習理論】神經網路

本文主要介紹了神經網路中的卷積神經網路,適合初學者閱讀。概述深度學習和人工智慧是 2016 年的熱詞;2017 年,這兩個詞愈發火熱,但也更加容易混淆。我們將深入深度學習的核心,也就是神經網路。大多數神經網路的變體是難以理解的,並且它們的底層結構元件使得它們在理論上和圖形上是

【CNN】神經網路CNN

本文為大家解讀如何簡單明瞭的解釋卷積,並且分享了學習中的一些方法案例。 首先文章的提綱為: CNN栗子鎮樓 What is CNN             什麼是卷積             什麼是池化 Why CNN 對

神經網路中的1x1

前言 在介紹卷積神經網路中的1x1卷積之前,首先回顧卷積網路的基本概念[1]。 卷積核(convolutional kernel):可以看作對某個區域性的加權求和;它是對應區域性感知,它的原理是在觀察某個物體時我們既不能觀察每個畫素也不能一次觀察整體,而是

帶你神經網路(CNN)讓你意想不到的10創新idea

    全文摘要 卷積神經網路(CNN)可以說是深度學習發展的一個縮影,特別是現在在計算機視覺方面已經得到了非常成熟的應用,在目標檢測、目標追蹤等方面也是獨領風騷,本文將講述卷積神經網路近些年來的發展歷程,以及它到底創新在什麼地方。本文略長,看完大約3

徹底搞神經網路的“感受野”,你來找我!

  一、什麼是“感受野” 1.1 感受野的概念 “感受野”的概念來源於生物神經科學,比如當我們的“感受器”,比如我們的手受到刺激之後,會將刺激傳輸至中樞神經,但是並不是一個神經元就能夠接受整個面板的刺激,因為面板面積大,一個神經元可想而知肯定接受不完,而且我們同

神經網路?別怕,完這幾張萌圖你就明白了

這篇文章用最簡明易懂的方式解釋了卷積神經網路(CNN)的基本原理,並繞開了裡面的數學理論。 同時,如果想對從頭開始構建CNN網路之類的問題感興趣,作者推薦去讀《 Artificial Intelligence for Humans Volume 3: Deep Learning and Neur

深入淺出——搞神經網路誤差分析(

第一部分 全連線網路的權值更新   卷積神經網路使用基於梯度的學習方法進行監督訓練,實踐中,一般使用隨機梯度下降(機器學習中幾種常見的梯度下降方式)的版本,對於每個訓練樣本均更新一次權值,誤差函式使用誤差平方和函式,誤差方式採用平方誤差代價函式。   注:本

PyTorch基礎入門六:PyTorch搭建神經網路實現MNIST手寫數字識別

1)卷積神經網路(CNN)簡介 關於什麼是卷積神經網路(CNN),請自行查閱資料進行學習。如果是初學者,這裡推薦一下臺灣的李巨集毅的深度學習課程。連結就不給了,這些資料網站上隨處可見。 值得一提的是,CNN雖然在影象處理的領域具有不可阻擋的勢頭,但是它絕對不僅僅只能用來影

CNN入門講解:如何理解神經網路的結構

原創文章,一家之言。 個人公眾號:follow_bobo 知乎號:蔣竺波 轉載請通知本人。 大家好,我是波波,歡迎再次來到CNN入門講解。 上次我們講什麼卷積以及卷積在卷積神經網路裡的作用,那我們這一期來理一理卷積神經網路大致的結構 嗎? 我不!! 驚不驚喜?

如何讀神經網路程式碼

https://blog.csdn.net/zzq060143/article/details/81952848 tensorflow中文社群 http://www.tensorfly.cn/tfdoc/tutoria 我們通過操作符號變數來描述這些可

張圖理解神經網路層和感受野

區域性關聯:每個畫素點和她周邊的點廣聯大(影象連續) 形象地說,左邊是32*32*3的影象,我們讓五個小朋友分別看,右邊的12345小盆友分別關注影象的顏色,輪廓,紋理等等資訊。 五個小朋友對應五個神經元,也叫filter,每個小盆友視野有限,每次只看一小塊,慢慢滑動直

讓你徹底瞭解神經網路

卷積神經網路(Convolutional Neural Network,CNN)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型影象處理有出色表現。 它包括卷積層(convolutional layer)和池化層(pooling layer)。 對比:卷積神經網路、

你的計算機也可以世界——十分鐘跑起神經網路(Windows+CPU)

眾所周知,如果你想研究Deep Learning,那麼比較常用的配置是Linux+GPU,不過現在很多非計算機專業的同學有時也會想採用Deep Learning方法來完成一些工作,那麼Linux+GPU的環境就有可能會給他們帶來一定困擾,我寫這篇文章就是為了讓這些同學可以不用去裝Linux系統,不用去涉及GP

10分鐘神經網路( FCN ):語義分割深度模型先驅

大家好,我是為人造的智慧操碎了心的智慧禪師。今天是10月24日,既是程式設計師節,也是程式設計師

卷積神經網路入門一種全卷積神經網路(LeNet),從左至右依次為卷積→子取樣→卷積→子取樣→全連線→全連線→高斯連線測試 最後,為了檢驗 CNN 能否工作,我們準備不同的另組圖片與標記集(不能在訓練

轉載來自:http://blog.csdn.net/maweifei/article/details/52443995 第一層——數學部分 CNN 的第一層通常是卷積層(Convolutional Layer)。輸入內容為一個 32 x 32 x 3 的畫素值陣列。現在

神經網路工作原理

現在談人工智慧已經繞不開“神經網路”這個詞了。人造神經網路粗線條地模擬人腦,使得計算機能夠從資料中學習。 機器學習這一強大的分支結束了 AI 的寒冬,迎來了人工智慧的新時代。簡而言之,神經網路可能是今天最具有根本顛覆性的技術。 看完這篇神經網路的指南,你也可以和別

【深度學習】:小白也能神經網路

小編在市面看了很多介紹計算機視覺的知識,感覺都非常深奧,難以理解和入門。因此總結出了一套容易理解的教程,希望能夠和大家分享。 一.人工神經網路 人工神經網路是一種模擬人腦構建出來的神經網路,每一個神經元都具有一定的權重和閾值。僅有單個神經元的圖例如下所示:     從中可以看到每一個神

世界杯迄今最火的場比賽 世界杯背後的阿裏雲黑科技

bottom 由於 otto 直播平臺 line 關於 變換 cdn 剪輯 摘要: 世界杯“法阿之戰”中帕瓦爾世界波以及姆巴佩梅開二度一定讓你印象深刻,而梅西的飲恨離開也讓不少球迷碎了心。但你知道,比賽當天的阿裏雲藏著什麽秘密嗎?世界杯“法阿之戰”中帕瓦爾世界波以及姆巴佩梅