AI入門:卷積神經網絡

2020-12-17 人人都是產品經理

講到AI不得不講深度學習,而講到深度學習,又不能不講卷積神經網絡。如果把深度學習比作中國的網際網路界,那捲積神經網絡和循環神經網絡就是騰訊和阿里級別的地位。今天我們主要討論的卷積神經網絡,到底卷積神經網絡能解決什麼問題,它的結構是怎樣的?是怎麼學習的?應用在哪些具體的產品上?本文將為大家一一解答。

如果對深度學習還不了解的同學,建議你先看下之前的文章《深度學習到底有多深?》,對深度學習有一定的認知,對接來了的討論可能會更容易理解。

以下是本文討論內容的大綱:

下文的卷積神經網絡,我們用簡稱CNN表示。

01 為什麼需要用到CNN?

1. 普通的神經網絡會遇到什麼問題?

假設我們要做圖像識別,把一張圖片丟到機器,機器能理解的就是每個像素點的值,如下圖:

我們在搭建好神經網絡模型之後,需要做的就是用數據訓練,最終需要確定的是每一個神經元參數w和b,這樣我們就可以確定模型了。

假設我們輸入的是50*50像素的圖片(圖片已經很小了),這依然有2500個像素點,而我們生活中基本都是RGB彩色圖像,有三個通道,那麼加起來就有2500*3=7500個像素點。

如果用普通的全連接,深度比較深時,那需要確認的參數太多了,對於計算機的計算能力,和訓練模型來說都是比較困難一件事。

因此,普通神經網絡的問題是:需要確認的參數太多。

那CNN是怎麼解決這個問題的呢?請接著往下看。

2. CNN是怎麼解決這個問題的?

第一步:局部監測

假設我們要看一張圖片中有沒有貓耳朵,也許我們不需要看整張圖片,只需要看一個局部就行了。因此看是否是一隻貓,只需要看是否有貓尾、是否有貓嘴、是否有貓眼,如果都有,那機器就預測說這張圖片是一隻貓。

因為這種方法看的是圖片的局部,而不是全部,也就是說神經元連接的是部分的特徵變量,而不是全部的特徵變量,因此參數比較少。(如果這裡看不懂沒關係,我們後面會詳細解釋)。

看到這裡你可能會疑問,我怎麼知道取哪個局部,我怎麼知道貓耳在圖片的哪個部位?不著急,後面會講到。

第二步:抽樣,縮小圖片

假設我們要識別一張50*50像素的貓相片,如果我們把圖片縮小到25*25個像素點,那其實還是能看出這是一隻貓的照片。

因此,如果把圖片縮小了,就相當於輸入的特徵變量變少了,這樣也能減少參數的量。

卷積神經網絡就是用上面這兩步的思想來減少參數,那具體CNN的架構是怎樣的?又是怎麼運行的?我們接下來詳細討論。

02  CNN的架構

CNN的架構流程圖:

第一步:卷積,即局部監測。

第二步:特徵抽樣,即縮小圖片。

然後重複第一、第二步(具體重複多少次,人為決定)。

第三步:全連接,把第一、二步的結果,輸入到全連接的神經網絡中,最後輸出結果。

1. 卷積(Convolution)

首先,把圖片轉化成機器可以識別的樣子,把每一個像素點的色值用矩陣來表示。這裡為了方便說明,我們就簡化,用6*6像素來表示,且取只RGB圖片一層。

然後,我們用一些過濾器跟輸入的圖片的矩陣做卷積。(如果不知道卷積怎麼運行的話,可以去問下百度)

那過濾器是什麼呢?

——過濾器就是用來檢測圖片是否有某個特徵,卷積的值越大,說明這個特徵越明顯。

說到這裡,我們回顧一下前面提到的問題:我怎麼知道取哪個局部,我怎麼知道貓耳在圖片的哪個部位?

用的辦法就是:移動窗口卷積。

同一個過濾器,會在原圖片矩陣上不斷的移動,每移動一步,就會做一次卷積。(每一移動的距離是人為決定的)

因此移動完之後,就相當於一個過濾器就會檢測完整張圖片,哪裡有相似的特徵。

卷積跟神經元是什麼樣的關係呢?

上圖所示有3點需要說明:

1)每移動一下,其實就是相當於接了一個神經元。

2)每個神經元,連接的不是所有的輸入,只需要連接部分輸出。

說到這裡可能你又會有疑問了,移動一下就是一神經元,這樣不就會有很多神經元了嗎?那不得又有很多參數了嗎?

確實可能有很多神經元,但是同一個過濾器移動時,參數是強行一致的,公用參數的。

3)所以同一個過濾器移動產生的神經元可能有很多個,但是他們的參數是公用的,因此參數不會增加。

跟不同過濾器卷積:

同一層可能不止是跟一個過濾器卷積,可能是多個。

不同的過濾器識別不同的特徵,因此不同的過濾器,參數不一樣。但相同的過濾器,參數是一樣的。

因此卷積的特點是:

3. 池化(Max pooling)

先卷積,再池化,流程圖:

用過濾器1卷積完後,得到了一個4*4的矩陣,假設我們按每4個元素為一組(具體多少個為一組是人為決定的),從每組中選出最大的值為代表,組成一個新的矩陣,得到的就是一個2*2的矩陣。這個過程就是池化。

因此池化後,特徵變量就縮小了,因而需要確定的參數也會變少。

4. 全連接

經過多次的卷積和池化之後,把最後池化的結果,輸入到全連接的神經網絡(層數可能不需要很深了),最後就可以輸出預測結果了。

那到這裡,我們把CNN的工作流程就講完了,但是每一步具體的意義是什麼,怎麼理解?

可能你還不太理的順,接下來我們會用一些可視化的方式幫助大家理解。

03 CNN是怎樣學習的?

我們以AlexNet為例,給大家展示下CNN大致的可視化過程。

AlexNet是Alex Krizhevsky等人於2012年的ImageNet比賽中提出了新型卷積神經網絡,並獲得了圖像分類問題的最好成績(Top-5錯誤率為15.3%)。

AlexNet的網絡架構:

其實AlexNet的結構很簡單,輸入是一個224×224的圖像,經過5個卷積層,3個全連接層(包含一個分類層),達到了最後的標籤空間。

AlexNet學習出來的特徵是什麼樣子的?

  • 第一層:都是一些填充的塊狀物和邊界等特徵。
  • 中間層:學習一些紋理特徵。
  • 更高層:接近於分類器的層級,可以明顯的看到物體的形狀特徵。
  • 最後一層:分類層,完全是物體的不同的姿態,根據不同的物體展現出不同姿態的特徵了。

所以,它的學習過程都是:邊緣→部分→整體。

關於卷積神經網絡的可視化,大家想了解更多的話,可以參考文章《卷積神經網絡超詳細介紹》。

04 AlphaGo

前面我們提到了AlphaGo有用到CNN,那具體是怎麼應用的呢,這裡簡答給大家科普下:

我們把圍棋看成是一個19*19像素的圖片,,每個像素點的取值:有黑子是1、有白子是-1,空為0。

因此,輸入棋盤就是所有像素點的矩陣值,輸出是下一步落子的位置。

那這個跟CNN有什麼關係?

我們知道CNN擅長做的事情就是檢測局部特徵,那也可以把這項技能運用到下圍棋上。

比如說上圖這種特徵,檢測盤面上有沒有這樣的特徵,如果有的話,通常下一步的落子是怎樣。就好比玩剪刀石頭布,檢測到對方出剪刀,那機器的應對策略就是出石頭。

同樣可能有很多不同的特徵,因此需要用不同的過濾器去檢測。

而且,同一個特徵可能會出現在不同的位置,因此也可以用過濾器移動的方法去檢測。

AlphaGo 有沒有池化?

講到這裡你會不會好奇,AlphaGo到底有沒有用到CNN的池化。因為池化是把圖片縮小的,圍棋是19*19個點,如果縮成10*10個點,能行嗎?

實際上AlphaGo是沒有用到池化這一步的,所以說CNN也未見得一定要使用池化,還是需要實際問題實際解決,靈活應用。

好了,到這裡就介紹完了CNN,後續我會寫一篇文章介紹深度學習的另一大門派:循環神經網絡RNN,感興趣的同學記得關注哦。

 

本文由 @Jimmy 原創發布於人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基於CC0協議。

相關焦點

  • ImageNet冠軍帶你入門計算機視覺:卷積神經網絡
    編輯|Vincent,EmilyAI 前線導語: 在第一篇文章《ImageNet 冠軍帶你入門計算機視覺:監督學習與神經網絡的簡單實現》中,我們介紹了神經網絡的基本概念以及 Tensorflow 的基本用法。 本文為系列的第二篇文章,將會介紹卷積神經網絡。
  • 詳解卷積神經網絡
    接下來介紹一種非常重要的神經網絡——卷積神經網絡。這種神經網絡在計算機視覺領域取得了重大的成功,而且在自然語言處理等其它領域也有很好的應用。深度學習受到大家的關注很大一個原因就是Alex等人實現的AlexNet(一種深度卷積神經網絡)在LSVRC-2010 ImageNet這個比賽中取得了非常好的成績。此後,卷積神經網絡及其變種被廣泛應用於各種圖像相關任務。
  • 【四】零基礎入門深度學習:卷積神經網絡基礎之池化和Relu
    【二】零基礎入門深度學習:用一個案例掌握深度學習方法【三】零基礎入門深度學習:卷積神經網絡基礎之初識卷積今天為大家帶來的是卷積神經網絡基礎之池化和Relu。ReLU激活函數前面介紹的網絡結構中,普遍使用Sigmoid函數做激活函數。在神經網絡發展的早期,Sigmoid函數用的比較多,而目前用的較多的激活函數是ReLU。這是因為Sigmoid函數在反向傳播過程中,容易造成梯度的衰減。讓我們仔細觀察Sigmoid函數的形式,就能發現這一問題。
  • 如何入手卷積神經網絡
    本文從基礎入手,介紹了卷積網絡的基本原理以及相關的其它技術,並利用卷積網絡做了一個簡單項目作為示例參考。想入手 CNN 的朋友不可錯過~首先,我們先看看下面這張照片:卷積神經網絡之所以優於其它深度神經網絡是由於它特殊的操作。
  • 人工智慧之卷積神經網絡(CNN)
    ^_^本文引用地址:http://www.eepw.com.cn/article/201806/381807.htm  20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用於局部敏感和方向選擇的神經元時發現其獨特的網絡結構可以有效地降低反饋神經網絡的複雜性,繼而提出了卷積神經網絡CNN(Convolutional Neural Networks)。
  • 李理:詳解卷積神經網絡
    本系列文章面向深度學習研發者,希望通過Image Caption Generation,一個有意思的具體任務,深入淺出地介紹深度學習的知識。
  • 典型的深度學習算法(一):卷積神經網絡(CNN)
    在深度學習領域中,已經驗證的典型成熟算法有卷積神經網絡(CNN)、循環神經網絡(RNN)、生成對抗網絡(GAN)、深度強化學習(DRL)等,下面企通查將帶領大家對典型的深度學習算法之一——卷積神經網絡(CNN)一探究竟。
  • 圖解:卷積神經網絡數學原理解析
    介紹過去我們已經知道被稱為緊密連接的神經網絡。這些網絡的神經元被分成若干組,形成連續的層。每一個這樣的神經元都與相鄰層的每一個神經元相連。下圖顯示了這種體系結構的一個示例。圖1. 密集連接的神經網絡結構當我們根據一組有限的人工設計的特徵來解決分類問題時,這種方法很有效。
  • 圖解:卷積神經網絡的數學原理分析
    卷積神經網絡可能是取得巨大成功的最關鍵的基礎。這次,我們將加深對神經網絡如何在CNN上工作的理解。出於建議,本文將包含非常複雜的數學方程式。如果您不習慣線性代數和微分,請不要氣our。我的目標不是讓您記住這些公式,而是讓您直觀地了解下面發生的事情。 在過去,我們知道了稱為緊密連接的神經網絡。這些網絡的神經元被分為幾組以形成連續的層。每個這樣的神經元連接到相鄰層中的每個神經元。
  • 了解卷積神經網絡的原理與基本結構
    受Hubel和Wiesel對貓視覺皮層電生理研究啟發,有人提出卷積神經網絡(CNN),Yann Lecun 最早將CNN用於手寫數字識別並一直保持了其在該問題的霸主地位。近年來卷積神經網絡在多個方向持續發力,在語音識別、人臉識別、通用物體識別、運動分析、自然語言處理甚至腦電波分析方面均有突破。
  • 一文讓你了解卷積神經網絡
    卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。 它包括卷積層(convolutional layer)和池化層(pooling layer)。對比:卷積神經網絡、全連接神經網絡
  • 深度學習基礎:一步一步講解卷積神經網絡
    我們通過計算,從6×6×3的輸入推導出一個4×4×2矩陣,它是卷積神經網絡的一層,把它映射到標準神經網絡中四個卷積層中的某一層或者一個非卷積神經網絡中。而這節課我想講的重點是,卷積神經網絡的某一卷積層的工作原理,以及如何計算某一卷積層的激活函數,並映射到下一層的激活值。了解了卷積神經網絡中某一卷積層的工作原理,我們就可以把它們堆疊起來形成一個深度卷積神經網絡,我們下節課再講。
  • 深度學習元老Yann Lecun詳解卷積神經網絡
    註:卷積神經網絡(Convolutional Neural Network)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。早在20世紀80年代末,Yann LeCun就作為貝爾實驗室的研究員提出了卷積網絡技術,並展示如何使用它來大幅度提高手寫識別能力。上世紀末本世紀初,當神經網絡失寵時Yann LeCun是少數幾名一直堅持的科學家之一。他於2003年成為紐約大學教授,並從此引領了深度學習的發展,目前任職於Facebook FAIR實驗室。
  • 深度學習之卷積神經網絡經典模型
    雖然層數只有7層,這在如今龐大的神經網絡中可是說是非常少的了,但是包含了卷積層,池化層,全連接層,可謂麻雀雖小五臟俱全了。為了方便,我們把卷積層稱為C層,下採樣層叫做下採樣層。首先,輸入層輸入原始圖像,原始圖像被處理成32×32個像素點的值。然後,後面的隱層計在卷積和子抽樣之間交替進行。C1層是卷積層,包含了六個特徵圖。每個映射也就是28x28個神經元。
  • 乾貨| Excel圖解卷積神經網絡結構
    隨意地應用神經網絡是一回事,理解它是什麼以及背後的發生機制是另外一回事。今天,我將與你共享我的心得,展示我如何上手卷積神經網絡並最終弄明白了它。我將做一個通盤的展示,從而使你對 CNN 的工作機制有一個深入的了解。
  • 薦書丨周志華力薦新書《解析深度學習:卷積神經網絡原理與視覺實踐》
    魏秀參博士在LAMDA 求學數年,對卷積神經網絡及其視覺應用頗有所長,博士未畢業即被曠視科技聘為南京研究院負責人,畢業之際將心得材料轉撰成書請愚致序。師生之誼,盛情難卻。在國內計算機領域,寫書乃吃力不討好之事。
  • 對卷積神經網絡工作原理做一個直觀的解釋
    第二,神經網絡,是指利用一層層神經元構建成一個類似大腦結構的模型,從而自動實現端到端的學習。為什麼要用神經網絡?因為傳統計算機視覺,對圖像的理解非常重要,圖像的特徵有顏色特徵、幾何特徵、邊緣特徵、局部特徵、梯度特徵等等,光學這些就需要大量的時間,然後才能學習計算機視覺的一些方法和模型。
  • Clarifai:卷積神經網絡是什麼,如何工作
    然而,在2012年,第一個深度卷積神經網絡(CNN)被引入競爭,擊敗了它的競爭對手,錯誤率下降到16%。從那以後,每一個獲獎的算法都是CNN,包括2013年,Clarifai獲得了所有前五名獎項,那麼CNN到底是什麼?CNNs是一種特殊類型的神經網絡,通常是深度神經網絡,用於計算機視覺任務。CNN的目的是將原始像素轉換成人類(或算法)能夠理解的有意義的概念。
  • 【GCN】圖卷積網絡(GCN)入門詳解
    機器學習算法與自然語言處理出品@公眾號原創專欄作者 Don.hub單位 | 京東算法工程師學校 | 帝國理工大學圖神經網絡領域算是一個比較新的領域,有非常多的探索潛力,所以我也一直想著要入門。其中圖卷積網絡就非常熱門,我找到了一篇教程:圖卷積網絡(GCN)新手村完全指南, 想著藉此走出新手村,結果因為個人資質有限,簡直成了勸退文,看完了之後還是沒有非常的明白,所以決定自己寫一篇入門介紹。當然這篇文章介紹得非常好,我也參考了很多,所以我會引用很多其中的公式,加上相關的推導補充。本文主要分為兩部分,第一部分介紹什麼是GCN,第二部分將進行詳細的數學推導。
  • 萬字長文|如何直觀解釋卷積神經網絡的工作原理?
    作者:YJango 日本會津大學|人機互動實驗室博士生 量子位 已獲授權編輯發布 該文是對卷積神經網絡的介紹,並假設你理解前饋神經網絡。 如果不是,強烈建議讀完《如何簡單形象又有趣地講解神經網絡是什麼?》