給你一個卷積神經網絡工作原理最直觀的解釋

2020-12-04 36氪

編者按:本文來自知乎帳號 Owl of Minerva,36氪經授權發布。

卷積神經網絡(Convolutional Neural Network, CNN)是人工神經網絡的一種,是當下語音分析和圖像識別領域的研究熱點。

這篇文章用最簡明的語言和最直觀的圖像,帶你入門CNN。準備好了嗎?Let’s go——

我們先從最基礎的內容說起。

對二維數位訊號(圖像)的操作,可以寫成矩陣形式。

比如對圖像做平滑,一個典型的8領域平滑,其結果中的每個值都來源於原對應位置和其周邊8個元素與一個3X3矩陣的乘積:

也就相當於對原矩陣,按照順序將各區域元素與W矩陣相乘,W 矩陣為:

這也被稱作核(Kernel, 3X3)

其處理效果如下:

也就是,這個核對圖像進行操作,相當於對圖像進行了低通濾波。因此這個核也被稱為濾波器,整個操作過程按照概念稱為卷積。

擴展來講,對二維圖像的濾波操作可以寫成卷積,比如常見的高斯濾波、拉普拉斯濾波(算子)等。

濾波器跟卷積神經網絡有什麼關係呢。不如我們預想一個識別問題:我們要識別圖像中的某種特定曲線,也就是說,這個濾波器要對這種曲線有很高的輸出,對其他形狀則輸出很低,這也就像是神經元的激活。

我們設計的濾波器和想要識別的曲線如下:

假設上面的核(濾波器)按照卷積順序沿著下圖移動:

那麼當它移動到上面的位置時,按照矩陣操作,將這個區域的圖像像素值與濾波器相乘,我們得到一個很大的值(6600):

而當這個濾波器移動到其他區域時,我們得到一個相對很小的值:

如此,我們對整個原圖進行一次卷積,得到的結果中,在那個特定曲線和周邊區域,值就很高,在其他區域,值相對低。這就是一張激活圖。對應的高值區域就是我們所要檢測曲線的位置。

在訓練卷積審計網絡(CNN)的某一個卷積層時,我們實際上是在訓練一系列的濾波器(filter)。比如,對於一個32x32x3(寬32像素x高32像素xRGB三通道)的圖像,如果我們在CNN的第一個卷積層定義訓練12個濾波器,那就這一層的輸出便是32X32X12.按照不同的任務,我們可以對這個輸出做進一步的處理,這包括激活函數,池化,全連接等。

簡單來說,訓練CNN在相當意義上是在訓練每一個卷積層的濾波器。讓這些濾波器組對特定的模式有高的激活,以達到CNN網絡的分類/檢測等目的。

一個實際CNN(AlexNet)第一個卷積層的濾波器>

卷積神經網絡的第一個卷積層的濾波器用來檢測低階特徵,比如邊、角、曲線等。隨著卷積層的增加,對應濾波器檢測的特徵就更加複雜(理性情況下,也是我們想要的情況)。

比如第二個卷積層的輸入實際上是第一層的輸出(濾波器激活圖),這一層的濾波器便是用來檢測低價特徵的組合等情況(半圓、四邊形等),如此累積,以檢測越來越複雜的特徵。實際上,我們的人類大腦的視覺信息處理也遵循這樣的低階特徵到高階特徵的模式。

可參考之前文章《為什麼無彩色系(黑白灰色)在色彩搭配中可以和諧地與任何彩色搭配?》

最後一層的濾波器按照訓練CNN目的的不同,可能是在檢測到人臉、手寫字體等時候激活[1]。

所以,在相當程度上,構建卷積神經網絡的任務就在於構建這些濾波器。也就是,將這些濾波器變成這樣(改變濾波器矩陣的值,也就是Weight)的——能識別特定的特徵。這個過程叫做訓練。

在訓練開始之時,卷積層的濾波器是完全隨機的,它們不會對任何特徵激活(不能檢測任何特徵)。這就像剛出生的孩子,TA不知道什麼是人臉、什麼是狗,什麼是上下左右。

TA需要學習才知道這些概念,也就是通過接觸人臉、狗、上下左右,並被告知這些東西分別是人臉、狗、上下左右。然後TA才能在頭腦中記住這些概念,並在之後的某一次見到之後能準確的給出結果。

把一個空白的濾波其,修改其權重(weights)以使它能檢測特定的模式,整個過程就如工程裡面的反饋。

想想一下,如果有一隻無意識的猴子,完全隨機的修改一個5X5濾波器矩陣的25個值,那完全可能經過一定的輪次之後,這個濾波器能夠檢測稜角等特徵。這是一種無反饋的訓練情況。對神經網絡的訓練當然不能如此,我們不可能靠運氣去做這件事情。

舉個例子,我們要訓練一個用於分類的神經網絡,讓它能判定輸入圖像中的物體最可能是十個類別的哪一類。那麼,訓練過程就是這樣的:

第一次訓練,輸入一張圖像,這個圖像通過各層卷積處理輸出量一組向量[1,1,1,1,1,1,1,1,1,1], 也就是,對於完全由隨機濾波器構建的網絡,其輸出認為這張圖等概率的是十個類別中的某一種。

但是對於訓練,我們有一個Gound Thuth, 也就是這張圖中物體所屬的類別:[0,0,1,0,0,0,0,0,0,0],也就是屬於第三類。這時候我們可以定義一個損失函數,比如常見的MSE(mean squared error)。

我們假定L是這個損失函數的輸出。這時候我們的目的就是,讓L的值反饋(這種神經網絡概念下稱為 back propagation, 反向傳輸)給整個卷積神經網絡,以修改各個濾波器的權重,使得損失值L最小。

這是一個典型的最優化問題。當然地,在工程上我們幾乎不可能一次就把濾波器的權重W修改到使L最小的情況,而是需要多次訓練和多次修改。

如果情況理想的話,權重修改的方向是使得L的變化收斂的。這也就是說很可能達到了我們訓練這個神經網絡的目的——讓各個卷積層的濾波器能夠組合起來最優化的檢測特定的模式。

參考文獻:

[1] Zeiler, M. D., & Fergus, R. (2014, September). Visualizing and understanding convolutional networks. In European conference on computer vision (pp. 818-833). Springer, Cham.

相關焦點

  • 一文讀懂卷積神經網絡工作原理
    卷積神經網絡(Convolutional Neural Network, CNN)是人工神經網絡的一種,是當下語音分析和圖像識別領域的研究熱點。這篇文章用最簡明的語言和最直觀的圖像,帶你入門CNN。準備好了嗎?
  • 萬字長文|如何直觀解釋卷積神經網絡的工作原理?
    0表示最暗,255表示最亮。 你可以把這堆數字用一個長長的向量來表示,也就是tensorflow的mnist教程。然而,這樣會失去平面結構的信息,為保留該結構信息,通常選擇矩陣的表示方式:28x28的矩陣。
  • 卷積神經網絡數學原理解析
    事實上,我們每天都在使用計算機視覺——當我們用面部解鎖手機或在社交媒體上發照片前使用自動修圖。卷積神經網絡可能是這一巨大成功背後最關鍵的構建模塊。這一次,我們將加深理解神經網絡如何工作於CNNs。出於建議,這篇文章將包括相當複雜的數學方程,如果你不習慣線性代數和微分,請不要氣餒。我的目標不是讓你們記住這些公式,而是讓你們對下面發生的事情有一個直觀的認識。
  • 卷積神經網絡(CNN)新手指南
    然而最經典的,或者說最流行的神經網絡使用範例是將其用於圖像處理領域。提到圖像處理,本文主要介紹的是如何使用卷積神經網絡來進行圖像分類。以類似的方式計算機能夠進行圖像分類任務,通過尋找低層次的特徵如邊緣和曲線,然後運用一系列的卷積層建立一個更抽象的概念。這是卷積神經網絡應用的一個總體概述,接下來我們來探討下細節。生物聯繫首先要稍微普及下一點背景知識,當你第一次聽到卷積神經網絡這個詞時,你也許會想這是是不與神經科學或者生物學有關?恭喜你,猜對了一部分。卷
  • 卷積神經網絡理解(一):濾波器的意義
    卷積神經網絡的發展二. 卷積神經網絡的重要性三. 卷積神經網絡與圖像識別四.並讓卷積神經網絡在如今計算機視覺領域中佔據著很重要的一部分。卷積神經網絡和人的視覺細胞工作原理類似,卷積神經網絡也是一開始通過尋找這幅圖片的邊緣或者曲線等低級特徵來分類圖片,然後再通過一系列卷積層將這些低級的特徵匯聚成更加高級的特徵,同時這些高級的特徵由多個低級特徵卷積構成,則高級特徵能覆蓋原始圖片更多的信息。這樣卷積神經網絡在處理一些經過平移變換的圖像識別時,具有檢測平移不變性的能力。更加增強了卷積神經網絡在圖像識別的能力。
  • 神奇GIF動畫讓你秒懂各種深度學習卷積神經網絡操作原理
    打開APP 神奇GIF動畫讓你秒懂各種深度學習卷積神經網絡操作原理 深度學習思考者 發表於 2017-11-15 18:58:34
  • 改進卷積神經網絡,你需要這14種設計模式
    然而,訓練神經網絡的技巧並不容易掌握。與之前的機器學習方法一樣,細節是最恐怖的地方,然而在卷積神經網絡中有更多的細節需要去管理:你所用的數據和硬體的限制是什麼?你應該以哪種網絡作為開始呢?AlexNet、VGG、GoogLeNet 還是 ResNet 呢?甚至 ResNet 裡面還有 ResNet 分支選項。你應當建立多少與卷積層相對應的密集層?
  • 「範例卷積神經網絡」和信息最大化
    我們在案例中只使用了一個數量適中的訓練圖像集,「範例卷積神經網絡」恰恰利用了這一點,把數據分布表示為一個經驗分布(離散有限可能性的分布)。假設我們離散了分布,使之變得不連續,那麼「範例卷積神經網絡」就能夠被推導成為「種子圖像」和其表徵之間的互信息的一個下界。
  • 卷積神經網絡(CNN)介紹與實踐
    為了說明這些情況,請看下面這張圖片:資料來源:https://medium.freecodecamp.org/an-intuitive-guide-to-convolutional-neural-networks-260c2de0a050你可能會想到「這是一個快樂的小男孩站在椅子上」。或者也許你認為他看起來像是在尖叫,即將在他面前攻擊這塊蛋糕。
  • 卷積神經網絡算法結構分析及其工作效率的影響因素
    2012年Krizhevsky等提出的卷積神經網絡卷積神經網絡算法結構分析。就目前算法的發展狀況而言,卷及神經網絡作為當前在圖像識別領域的主流算法,被諸多工作團隊所廣泛接受,而對於圖像識別的研究重點,也從尋找更為優秀的算法,轉移到了對卷積神經網絡算法本身的優化上,並且在應用領域,也在近年取得了長足進展。
  • 淺析人工智慧的卷積神經網絡與圖像處理
    淺析人工智慧的卷積神經網絡與圖像處理 demi 發表於 2019-11-02 11:23:43 在人工智慧深度學習技術中,有一個很重要的概念就是卷積神經網絡 CNN(Convolutional Neural
  • YJango的卷積神經網絡——介紹
    圖像在計算機中是一堆按順序排列的數字,數值為0到255。0表示最暗,255表示最亮。圖片識別--卷積神經網絡卷積神經網絡就是讓權重在不同位置共享的神經網絡。局部連接在卷積神經網絡中,我們先選擇一個局部區域,用這個局部區域去掃描整張圖片。 局部區域所圈起來的所有節點會被連接到下一層的一個節點上。為了更好的和前饋神經網絡做比較,我將這些以矩陣排列的節點展成了向量。
  • 圖像識別技術——卷積神經網絡CNN詳解
    前言卷積神經網絡不同於神經網絡,在圖片處理這方面有更好的表現。本文主要對神經網絡和卷積神經網絡做了簡要的對比,著重介紹了卷積神經網絡的層次基礎,同時也簡要介紹了卷積神經網絡參數更新方式和其優缺點,並結合具體實例對卷積神經網絡的工作方式做了介紹。
  • 幾個簡單的機械動圖,直觀解釋其工作原理!
    【機械cax360第183期】通過幾個簡單的機械動圖,直觀解釋其工作原理,漲姿勢!01 板材衝壓成型▼衝壓成型是指靠壓力機和模具對板材、帶材、管材和型材等施加外力,使之產生塑性變形或分離,從而獲得所需形狀和尺寸的工件(衝壓件)的加工成型方法。
  • 通俗易懂:圖卷積神經網絡入門詳解
    GCN,圖卷積神經網絡,實際上跟CNN的作用一樣,就是一個特徵提取器,只不過它的對象是圖數據。所以對於不需要去了解數學原理、只想應用GCN來解決實際問題的人來說,你只用知道:哦,這個GCN設計了一個牛逼的公式,用這個公式就可以很好地提取圖的特徵。這就夠了,畢竟不是什麼事情都需要知道內部原理,這是根據需求決定的。
  • 使用TensorFlow構建卷積神經網絡CNN
    卷積神經網絡(CNN)是計算機視覺應用背後的架構。本文將闡述CNN和計算機視覺的基礎,例如卷積運算,填充,跨步卷積和池化層。然後,我們將使用TensorFlow構建用於圖像識別的CNN。理解卷積該卷積運算是卷積神經網絡的積木。現在,在計算機視覺領域,圖像可以表示為RGB值的矩陣。這個概念實際上是在之前的文章中介紹。要完成卷積操作,我們需要一個圖像和一個過濾器。
  • 梯度上升可視化卷積神經網絡
    最近為自己所在的公司寫了一個工具來分析訓練出來的CNN網絡模型,如下圖所示:從第一張圖我們可以看到這張圖有一些goldfish金魚的模型,好像有很多條魚尾巴,然後中間有好多鱗片,一張很奇怪的圖像,但是別嫌棄這張圖像,因為假設你把這張圖像扔到經過ImageNet數據集訓練過的VGGNet模型,出來為goldfish的概率絕對是99%的,你多試100次看是不是都為goldfish。
  • 深度學習入門:淺析卷積神經網絡
    圖像分類是從固定的一組分類中分配輸入圖像一個標籤的任務,在本案例中,我們將以Fashion-MNIST圖像數據集為例,了解並使用不同的神經網絡模型來對其進行分類,並比較不同網絡的預測效果。本案例的學習分為三個部分,首先是目標問題的數據集介紹,了解數據背景是解決問題的重要前提;接著,我們會介紹基本的邏輯回歸模型,在此基礎上引入本案例的核心——卷積神經網絡。
  • 解析卷積神經網絡的應用
    近年來,一個稱之為「深度學習」的領域大幅提升了計算機理解所見事物的能力。深度學習,尤其是卷積神經網絡的使用,並沒有依賴傳統的圖像處理技術,而是賦予計算機理解世界的能力,且這方面已取得重大進展。 卷積神經網絡最早可以追溯到20世紀80年代末,其創建是基於20世紀60年代早期的人工神經網絡(ANN)和多層感知器(MLP)。它們最初的設計旨在模擬人腦的工作方式。
  • 卷積神經網絡超詳細總結
    1)網絡結構**卷積神經網絡整體架構:**卷積神經網絡是一種多層的監督學習神經網絡,隱含層的卷積層和池採樣層是實現卷積神經網絡特徵提取功能的核心模塊。該網絡模型通過採用梯度下降法最小化損失函數對網絡中的權重參數逐層反向調節,通過頻繁的迭代訓練提高網絡的精度。