卷積神經網絡架構詳解:它與神經網絡有何不同?

 2016-08-01 17:40:22.0

這是作者 Harsh Pokharna 在 Medium 上介紹神經網絡系列文章中的一篇,他在這裡詳細介紹了卷積神經網絡。卷積神經網絡在圖像識別、視頻識別、推薦系統以及自然語言處理中都有很廣的應用。

跟神經網絡一樣,卷積神經網絡由神經元構成,這些神經元帶有可學習的權重和偏差(bias)。每個神經元接收若干輸入,並對輸入進行加權求和,然後通過一個激活功能將它們傳遞出去,再用一個輸出作為反應。整個神經網絡有一個損失函數,我們為神經網絡開發的所有貼士和技巧,仍然適用於卷積神經網絡。

那麼,卷積神經網絡是怎麼不同於神經網絡的呢?

這是什麼意思?

1.一個 RGB 圖像的例子(稱它為『輸入圖像』)

在神經網絡中,輸入是一個向量,但是在卷積神經網絡中,輸入是一個多通道圖像(這個例子中的圖像有 3 個通道)。

2.用濾波器來卷積圖像

我們用了一個 5×5×3 的濾波器在整個圖像上滑動,在滑動過程中,採集在濾波器與輸入圖像的塊之間的點積。

3.看上去就是這樣子

對於採集到的每個點積來說,其結果都是一個標量。

所以當我們用這個濾波器卷積一個完整的圖像時會發生什麼呢?

4.就是這個!

你可以自己想想這個『 28 』是怎麼來的。(提示:有 28×28 個獨特的位置,在這些位置上,濾波器可以被放在這個圖像上)

這個卷積層是卷積神經網絡的主構建塊。

5.卷積層

卷積層包括一組獨立的濾波器(該例子中有 6 個)。每個濾波器都獨立地與圖像卷積,我們以 6 個形狀為 28×28×1 的特徵圖結束。

假設我們有一個序列卷積層。那麼會發生什麼呢?

6.序列卷基層

所有這些濾波器都被隨機初始化,併成為我們的參數,隨後將被這個網絡學習。

下面是一個訓練過的網絡的例子:

7.一個訓練過的網絡中的濾波器

看下最表層的濾波器(這些都是我們的5×5×3 的濾波器。)通過反向傳播,他們將自己調整為彩色片和邊緣的斑點。在我們深入到其他卷積層時,這些濾波器在做之前的卷積層的輸入的點積。所以,它們正在採集這些較小的彩色片或邊緣,並通過這些小的彩色片和邊緣做出較大的彩色片。

看看圖 4 ,並將這個 28×28×1 的網格想象成 28×28 個神經元。對於一個特定的特徵圖來說(在卷積帶有一個濾波器的圖像上接受的輸出被稱為一個特徵圖),每個神經元只連接這個輸入圖像的一小塊,而且所有的神經元都具有相同的連接權重。因此,再次回到卷積神經網絡和神經網絡之間的差異。

參數共享,通過一張特定的特徵圖中所有神經元來共享權重。

局部連通性的概念是每個神經只連接一個輸入圖像的子集(不像神經網絡中的所有神經元都完全連接在一起)。

這幫助減少了整個系統中的參數數量,讓計算變得更有效。

為了簡單一些,這裡不討論零填充(zero padding)的概念。有興趣的可以自己去閱讀相關資料。

一個池化層是卷積神經網絡的另一個構建塊

池化

它的功能是通過逐步減小表徵的空間尺寸來減小參數量和網絡中的計算。池化層在每一個特徵圖上獨立操作。

最大池化

卷積神經網絡的典型架構

我們已經討論過卷積層(用 CONV 表示)和池化層(用 POOL 表示)

RELU 只是一個被應用的非線性特徵,類似於神經網絡。

這個全連接與神經元層完全相連在卷積神經網絡的末端。完全連接層中的神經元連接著之前層中的所有激活,這在常規的神經網絡中能看到,並以相似的方式運行。

希望你現在能理解一個卷積神經網絡的這種架構了。這種架構還要很多變體,但是之前提到過,基本的概念都是相同。


參考:http://cs231n.github.io/convolutional-networks/#overview

文章來源:機器之心