CNN理解比较好的文章
什么是卷積神經(jīng)網(wǎng)絡(luò)?為什么它們很重要?
卷積神經(jīng)網(wǎng)絡(luò)(ConvNets 或者 CNNs)屬于神經(jīng)網(wǎng)絡(luò)的范疇,已經(jīng)在諸如圖像識別和分類的領(lǐng)域證明了其高效的能力。卷積神經(jīng)網(wǎng)絡(luò)可以成功識別人臉、物體和交通信號,從而為機(jī)器人和自動駕駛汽車提供視力。
在上圖中,卷積神經(jīng)網(wǎng)絡(luò)可以識別場景,也可以提供相關(guān)的標(biāo)簽,比如“橋梁”、“火車”和“網(wǎng)球”;而下圖展示了卷積神經(jīng)網(wǎng)絡(luò)可以用來識別日常物體、人和動物。最近,卷積神經(jīng)網(wǎng)絡(luò)也在一些自然語言處理任務(wù)(比如語句分類)上面展示了良好的效果。
因此,卷積神經(jīng)網(wǎng)絡(luò)對于今天大多數(shù)的機(jī)器學(xué)習(xí)用戶來說都是一個(gè)重要的工具。然而,理解卷積神經(jīng)網(wǎng)絡(luò)以及首次學(xué)習(xí)使用它們有時(shí)會很痛苦。那本篇博客的主要目的就是讓我們對卷積神經(jīng)網(wǎng)絡(luò)如何處理圖像有一個(gè)基本的了解。
如果你是神經(jīng)網(wǎng)絡(luò)的新手,我建議你閱讀下這篇短小的多層感知器的教程,在進(jìn)一步閱讀前對神經(jīng)網(wǎng)絡(luò)有一定的理解。在本篇博客中,多層感知器叫做“全連接層”。
LeNet 架構(gòu) (1990s)
LeNet 是推進(jìn)深度學(xué)習(xí)領(lǐng)域發(fā)展的最早的卷積神經(jīng)網(wǎng)絡(luò)之一。經(jīng)過多次成功迭代,到 1988 年,Yann LeCun 把這一先驅(qū)工作命名為?LeNet5。當(dāng)時(shí),LeNet 架構(gòu)主要用于字符識別任務(wù),比如讀取郵政編碼、數(shù)字等等。
接下來,我們將會了解 LeNet 架構(gòu)是如何學(xué)會識別圖像的。近年來有許多在 LeNet 上面改進(jìn)的新架構(gòu)被提出來,但它們都使用了 LeNet 中的主要概念,如果你對 LeNet 有一個(gè)清晰的認(rèn)識,就相對比較容易理解。
上圖中的卷積神經(jīng)網(wǎng)絡(luò)和原始的 LeNet 的結(jié)構(gòu)比較相似,可以把輸入的圖像分為四類:狗、貓、船或者鳥(原始的 LeNet 主要用于字符識別任務(wù))。正如上圖說示,當(dāng)輸入為一張船的圖片時(shí),網(wǎng)絡(luò)可以正確的從四個(gè)類別中把最高的概率分配給船(0.94)。在輸出層所有概率的和應(yīng)該為一(本文稍后會解釋)。
There are four main operations in the ConvNet shown in Figure 3 above:
在上圖中的 ConvNet 有四個(gè)主要操作:
這些操作對于各個(gè)卷積神經(jīng)網(wǎng)絡(luò)來說都是基本組件,因此理解它們的工作原理有助于充分了解卷積神經(jīng)網(wǎng)絡(luò)。下面我們將會嘗試?yán)斫飧鞑讲僮鞅澈蟮脑怼?/p>
圖像是像素值的矩陣
本質(zhì)上來說,每張圖像都可以表示為像素值的矩陣:
通道?常用于表示圖像的某種組成。一個(gè)標(biāo)準(zhǔn)數(shù)字相機(jī)拍攝的圖像會有三通道 - 紅、綠和藍(lán);你可以把它們看作是互相堆疊在一起的二維矩陣(每一個(gè)通道代表一個(gè)顏色),每個(gè)通道的像素值在 0 到 255 的范圍內(nèi)。
灰度圖像,僅僅只有一個(gè)通道。在本篇文章中,我們僅考慮灰度圖像,這樣我們就只有一個(gè)二維的矩陣來表示圖像。矩陣中各個(gè)像素的值在 0 到 255 的范圍內(nèi)——零表示黑色,255 表示白色。
卷積
卷積神經(jīng)網(wǎng)絡(luò)的名字就來自于其中的卷積操作。卷積的主要目的是為了從輸入圖像中提取特征。卷積可以通過從輸入的一小塊數(shù)據(jù)中學(xué)到圖像的特征,并可以保留像素間的空間關(guān)系。我們在這里并不會詳細(xì)講解卷積的數(shù)學(xué)細(xì)節(jié),但我們會試著理解卷積是如何處理圖像的。
As we discussed above, every image can be considered as a matrix of pixel values. Consider a 5 x 5 image whose pixel values are only 0 and 1 (note that for a grayscale image, pixel values range from 0 to 255, the green matrix below is a special case where pixel values are only 0 and 1):
正如我們上面所說,每張圖像都可以看作是像素值的矩陣。考慮一下一個(gè) 5 x 5 的圖像,它的像素值僅為 0 或者 1(注意對于灰度圖像而言,像素值的范圍是 0 到 255,下面像素值為 0 和 1 的綠色矩陣僅為特例):
同時(shí),考慮下另一個(gè) 3 x 3 的矩陣,如下所示:
接下來,5 x 5 的圖像和 3 x 3 的矩陣的卷積可以按下圖所示的動畫一樣計(jì)算:
現(xiàn)在停下來好好理解下上面的計(jì)算是怎么完成的。我們用橙色的矩陣在原始圖像(綠色)上滑動,每次滑動一個(gè)像素(也叫做“步長”),在每個(gè)位置上,我們計(jì)算對應(yīng)元素的乘積(兩個(gè)矩陣間),并把乘積的和作為最后的結(jié)果,得到輸出矩陣(粉色)中的每一個(gè)元素的值。注意,3 x 3 的矩陣每次步長中僅可以“看到”輸入圖像的一部分。
在 CNN 的術(shù)語中,3x3 的矩陣叫做“濾波器(filter)”或者“核(kernel)”或者“特征檢測器(feature detector)”,通過在圖像上滑動濾波器并計(jì)算點(diǎn)乘得到矩陣叫做“卷積特征(Convolved Feature)”或者“激活圖(Activation Map)”或者“特征圖(Feature Map)”。記住濾波器在原始輸入圖像上的作用是特征檢測器。
從上面圖中的動畫可以看出,對于同樣的輸入圖像,不同值的濾波器將會生成不同的特征圖。比如,對于下面這張輸入圖像:
In the table below, we can see the effects of convolution of the above image with different filters. As shown, we can perform operations such as Edge Detection, Sharpen and Blur just by changing the numeric values of our filter matrix before the convolution operation?8?– this means that different filters can detect different features from an image, for example edges, curves etc. More such examples are available in Section 8.2.4 here.
在下表中,我們可以看到不同濾波器對上圖卷積的效果。正如表中所示,通過在卷積操作前修改濾波矩陣的數(shù)值,我們可以進(jìn)行諸如邊緣檢測、銳化和模糊等操作 —— 這表明不同的濾波器可以從圖中檢測到不同的特征,比如邊緣、曲線等。在這里的 8.2.4 部分中可以看到更多的例子。
另一個(gè)理解卷積操作的好方法是看下面這張圖的動畫:
濾波器(紅色框)在輸入圖像滑過(卷積操作),生成一個(gè)特征圖。另一個(gè)濾波器(綠色框)在同一張圖像上卷積可以得到一個(gè)不同的特征圖。注意卷積操作可以從原圖上獲取局部依賴信息。同時(shí)注意這兩個(gè)不同的濾波器是如何從同一張圖像上生成不同的特征圖。記住上面的圖像和兩個(gè)濾波器僅僅是我們上面討論的數(shù)值矩陣。
在實(shí)踐中,CNN 會在訓(xùn)練過程中學(xué)習(xí)到這些濾波器的值(盡管我們依然需要在訓(xùn)練前指定諸如濾波器的個(gè)數(shù)、濾波器的大小、網(wǎng)絡(luò)架構(gòu)等參數(shù))。我們使用的濾波器越多,提取到的圖像特征就越多,網(wǎng)絡(luò)所能在未知圖像上識別的模式也就越好。
特征圖的大小(卷積特征)由下面三個(gè)參數(shù)控制,我們需要在卷積前確定它們:
- 深度(Depth):深度對應(yīng)的是卷積操作所需的濾波器個(gè)數(shù)。在下圖的網(wǎng)絡(luò)中,我們使用三個(gè)不同的濾波器對原始圖像進(jìn)行卷積操作,這樣就可以生成三個(gè)不同的特征圖。你可以把這三個(gè)特征圖看作是堆疊的 2d 矩陣,那么,特征圖的“深度”就是三。
-
步長(Stride):步長是我們在輸入矩陣上滑動濾波矩陣的像素?cái)?shù)。當(dāng)步長為 1 時(shí),我們每次移動濾波器一個(gè)像素的位置。當(dāng)步長為 2 時(shí),我們每次移動濾波器會跳過 2 個(gè)像素。步長越大,將會得到更小的特征圖。
-
零填充(Zero-padding):有時(shí),在輸入矩陣的邊緣使用零值進(jìn)行填充,這樣我們就可以對輸入圖像矩陣的邊緣進(jìn)行濾波。零填充的一大好處是可以讓我們控制特征圖的大小。使用零填充的也叫做泛卷積,不適用零填充的叫做嚴(yán)格卷積。這個(gè)概念在下面的參考文獻(xiàn) 14 中介紹的非常詳細(xì)。
非線性簡介(ReLU)
An additional operation called ReLU has been used after every Convolution operation in Figure 3 above. ReLU stands for Rectified Linear Unit and is a non-linear operation. Its output is given by:
在上面圖中,在每次的卷積操作后都使用了一個(gè)叫做 ReLU 的操作。ReLU 表示修正線性單元(Rectified Linear Unit),是一個(gè)非線性操作。它的輸入如下所示:
ReLU 是一個(gè)元素級別的操作(應(yīng)用到各個(gè)像素),并將特征圖中的所有小于 0 的像素值設(shè)置為零。ReLU 的目的是在 ConvNet 中引入非線性,因?yàn)樵诖蟛糠值奈覀兿M?ConvNet 學(xué)習(xí)的實(shí)際數(shù)據(jù)是非線性的(卷積是一個(gè)線性操作——元素級別的矩陣相乘和相加,所以我們需要通過使用非線性函數(shù) ReLU 來引入非線性。
ReLU 操作可以從下面的圖中理解。它展示的 ReLU 操作是應(yīng)用到上面圖 6 得到的特征圖之一。這里的輸出特征圖也可以看作是“修正”過的特征圖。
其他非線性函數(shù),比如 tanh 或者 sigmoid 也可以用來替代 ReLU,但 ReLU 在大部分情況下表現(xiàn)是更好的。
池化操作
空間池化(Spatial Pooling)(也叫做亞采用或者下采樣)降低了各個(gè)特征圖的維度,但可以保持大部分重要的信息。空間池化有下面幾種方式:最大化、平均化、加和等等。
對于最大池化(Max Pooling),我們定義一個(gè)空間鄰域(比如,2x2 的窗口),并從窗口內(nèi)的修正特征圖中取出最大的元素。除了取最大元素,我們也可以取平均(Average Pooling)或者對窗口內(nèi)的元素求和。在實(shí)際中,最大池化被證明效果更好一些。
下面的圖展示了使用 2x2 窗口在修正特征圖(在卷積 + ReLU 操作后得到)使用最大池化的例子。
我們以 2 個(gè)元素(也叫做“步長”)滑動我們 2x2 的窗口,并在每個(gè)區(qū)域內(nèi)取最大值。如上圖所示,這樣操作可以降低我們特征圖的維度。
在下圖展示的網(wǎng)絡(luò)中,池化操作是分開應(yīng)用到各個(gè)特征圖的(注意,因?yàn)檫@樣的操作,我們可以從三個(gè)輸入圖中得到三個(gè)輸出圖)。
下圖展示了在圖 9 中我們在 ReLU 操作后得到的修正特征圖的池化操作的效果。
池化函數(shù)可以逐漸降低輸入表示的空間尺度。特別地,池化:
- 使輸入表示(特征維度)變得更小,并且網(wǎng)絡(luò)中的參數(shù)和計(jì)算的數(shù)量更加可控的減小,因此,可以控制過擬合
- 使網(wǎng)絡(luò)對于輸入圖像中更小的變化、冗余和變換變得不變性(輸入的微小冗余將不會改變池化的輸出——因?yàn)槲覀冊诰植苦徲蛑惺褂昧俗畲蠡?平均值的操作。
- 幫助我們獲取圖像最大程度上的尺度不變性(準(zhǔn)確的詞是“不變性”)。它非常的強(qiáng)大,因?yàn)槲覀兛梢詸z測圖像中的物體,無論它們位置在哪里(參考?18?和?19?獲取詳細(xì)信息)。
目前為止的故事
到目前為止我們了解了卷積、ReLU 和池化是如何操作的。理解這些層是構(gòu)建任意 CNN 的基礎(chǔ)是很重要的。正如上圖所示,我們有兩組卷積、ReLU & 池化層 —— 第二組卷積層使用六個(gè)濾波器對第一組的池化層的輸出繼續(xù)卷積,得到一共六個(gè)特征圖。接下來對所有六個(gè)特征圖應(yīng)用 ReLU。接著我們對六個(gè)修正特征圖分別進(jìn)行最大池化操作。
這些層一起就可以從圖像中提取有用的特征,并在網(wǎng)絡(luò)中引入非線性,減少特征維度,同時(shí)保持這些特征具有某種程度上的尺度變化不變性。
第二組池化層的輸出作為全連接層的輸入,我們會在下一部分介紹全連接層。
全連接層
全連接層是傳統(tǒng)的多層感知器,在輸出層使用的是 softmax 激活函數(shù)(也可以使用其他像 SVM 的分類器,但在本文中只使用 softmax)。“全連接(Fully Connected)”這個(gè)詞表明前面層的所有神經(jīng)元都與下一層的所有神經(jīng)元連接。如果你對多層感知器不熟悉的話,我推薦你閱讀這篇文章。
卷積和池化層的輸出表示了輸入圖像的高級特征。全連接層的目的是為了使用這些特征把輸入圖像基于訓(xùn)練數(shù)據(jù)集進(jìn)行分類。比如,在下面圖中我們進(jìn)行的圖像分類有四個(gè)可能的輸出結(jié)果(注意下圖并沒有顯示全連接層的節(jié)點(diǎn)連接)。
除了分類,添加一個(gè)全連接層也(一般)是學(xué)習(xí)這些特征的非線性組合的簡單方法。從卷積和池化層得到的大多數(shù)特征可能對分類任務(wù)有效,但這些特征的組合可能會更好。
從全連接層得到的輸出概率和為 1。這個(gè)可以在輸出層使用 softmax 作為激活函數(shù)進(jìn)行保證。softmax 函數(shù)輸入一個(gè)任意大于 0 值的矢量,并把它們轉(zhuǎn)換為零一之間的數(shù)值矢量,其和為一。
把它們組合起來——使用反向傳播進(jìn)行訓(xùn)練
正如上面討論的,卷積 + 池化層的作用是從輸入圖像中提取特征,而全連接層的作用是分類器。
注意在下面的圖中,因?yàn)檩斎氲膱D像是船,對于船這一類的目標(biāo)概率是 1,而其他三類的目標(biāo)概率是 0,即
- 輸入圖像 = 船
- 目標(biāo)矢量 = [0, 0, 1, 0]
完整的卷積網(wǎng)絡(luò)的訓(xùn)練過程可以總結(jié)如下:
-
第一步:我們初始化所有的濾波器,使用隨機(jī)值設(shè)置參數(shù)/權(quán)重
-
第二步:網(wǎng)絡(luò)接收一張訓(xùn)練圖像作為輸入,通過前向傳播過程(卷積、ReLU 和池化操作,以及全連接層的前向傳播),找到各個(gè)類的輸出概率
- 我們假設(shè)船這張圖像的輸出概率是 [0.2, 0.4, 0.1, 0.3]
- 因?yàn)閷τ诘谝粡堄?xùn)練樣本的權(quán)重是隨機(jī)分配的,輸出的概率也是隨機(jī)的
-
第三步:在輸出層計(jì)算總誤差(計(jì)算 4 類的和)
- Total Error = ∑ ???(target probability?– output probability)?2
-
第四步:使用反向傳播算法,根據(jù)網(wǎng)絡(luò)的權(quán)重計(jì)算誤差的梯度,并使用梯度下降算法更新所有濾波器的值/權(quán)重以及參數(shù)的值,使輸出誤差最小化
- 權(quán)重的更新與它們對總誤差的占比有關(guān)
- 當(dāng)同樣的圖像再次作為輸入,這時(shí)的輸出概率可能會是 [0.1, 0.1, 0.7, 0.1],這就與目標(biāo)矢量 [0, 0, 1, 0] 更接近了
- 這表明網(wǎng)絡(luò)已經(jīng)通過調(diào)節(jié)權(quán)重/濾波器,可以正確對這張?zhí)囟▓D像的分類,這樣輸出的誤差就減小了
- 像濾波器數(shù)量、濾波器大小、網(wǎng)絡(luò)結(jié)構(gòu)等這樣的參數(shù),在第一步前都是固定的,在訓(xùn)練過程中保持不變——僅僅是濾波器矩陣的值和連接權(quán)重在更新
-
第五步:對訓(xùn)練數(shù)據(jù)中所有的圖像重復(fù)步驟 1 ~ 4
上面的這些步驟可以訓(xùn)練?ConvNet —— 這本質(zhì)上意味著對于訓(xùn)練數(shù)據(jù)集中的圖像,ConvNet 在更新了所有權(quán)重和參數(shù)后,已經(jīng)優(yōu)化為可以對這些圖像進(jìn)行正確分類。
當(dāng)一張新的(未見過的)圖像作為 ConvNet 的輸入,網(wǎng)絡(luò)將會再次進(jìn)行前向傳播過程,并輸出各個(gè)類別的概率(對于新的圖像,輸出概率是使用已經(jīng)在前面訓(xùn)練樣本上優(yōu)化分類的參數(shù)進(jìn)行計(jì)算的)。如果我們的訓(xùn)練數(shù)據(jù)集非常的大,網(wǎng)絡(luò)將會(有希望)對新的圖像有很好的泛化,并把它們分到正確的類別中去。
注 1: 上面的步驟已經(jīng)簡化,也避免了數(shù)學(xué)詳情,只為提供訓(xùn)練過程的直觀內(nèi)容。可以參考文獻(xiàn)?4?和?12?了解數(shù)學(xué)公式和完整過程。
注 2:在上面的例子中我們使用了兩組卷積和池化層。然而請記住,這些操作可以在一個(gè) ConvNet 中重復(fù)多次。實(shí)際上,現(xiàn)在有些表現(xiàn)最好的 ConvNet 擁有多達(dá)十幾層的卷積和池化層!同時(shí),每次卷積層后面不一定要有池化層。如下圖所示,我們可以在池化操作前連續(xù)使用多個(gè)卷積 + ReLU 操作。還有,請注意 ConvNet 的各層在下圖中是如何可視化的。
卷積神經(jīng)網(wǎng)絡(luò)的可視化
一般而言,越多的卷積步驟,網(wǎng)絡(luò)可以學(xué)到的識別特征就越復(fù)雜。比如,ConvNet 的圖像分類可能在第一層從原始像素中檢測出邊緣,然后在第二層使用邊緣檢測簡單的形狀,接著使用這些形狀檢測更高級的特征,比如更高層的人臉。下面的圖中展示了這些內(nèi)容——我們使用卷積深度置信網(wǎng)絡(luò)學(xué)習(xí)到的特征,這張圖僅僅是用來證明上面的內(nèi)容(這僅僅是一個(gè)例子:真正的卷積濾波器可能會檢測到對我們毫無意義的物體)。
Adam Harley 創(chuàng)建了一個(gè)卷積神經(jīng)網(wǎng)絡(luò)的可視化結(jié)果,使用的是 MNIST 手寫數(shù)字的訓(xùn)練集13。我強(qiáng)烈建議使用它來理解 CNN 的工作原理。
我們可以在下圖中看到網(wǎng)絡(luò)是如何識別輸入 “8” 的。注意下圖中的可視化并沒有單獨(dú)展示 ReLU 操作。
輸入圖像包含 1024 個(gè)像素(32 x 32 大小),第一個(gè)卷積層(卷積層 1)由六個(gè)獨(dú)特的 5x5 (步長為 1)的濾波器組成。如圖可見,使用六個(gè)不同的濾波器得到一個(gè)深度為六的特征圖。
卷積層 1 后面是池化層 1,在卷積層 1 得到的六個(gè)特征圖上分別進(jìn)行 2x2 的最大池化(步長為 2)的操作。你可以在池化層上把鼠標(biāo)移動到任意的像素上,觀察在前面卷積層(如上圖所示)得到的 4x4 的小格。你會發(fā)現(xiàn) 4x4 小格中的最大值(最亮)的像素將會進(jìn)入到池化層。
池化層 1 后面的是十六個(gè) 5x5 (步長為 1)的卷積濾波器,進(jìn)行卷積操作。后面就是池化層 2,進(jìn)行 2x2 的最大池化(步長為 2)的操作。這兩層的概念和前面描述的一樣。
接下來我們就到了三個(gè)全連接層。它們是:
- 第一個(gè)全連接層有 120 個(gè)神經(jīng)元
- 第二層全連接層有 100 個(gè)神經(jīng)元
- 第三個(gè)全連接層有 10 個(gè)神經(jīng)元,對應(yīng) 10 個(gè)數(shù)字——也就做輸出層
注意在下圖中,輸出層中的 10 個(gè)節(jié)點(diǎn)的各個(gè)都與第二個(gè)全連接層的所有 100 個(gè)節(jié)點(diǎn)相連(因此叫做全連接)。
同時(shí),注意在輸出層那個(gè)唯一的亮的節(jié)點(diǎn)是如何對應(yīng)于數(shù)字 “8” 的——這表明網(wǎng)絡(luò)把我們的手寫數(shù)字正確分類(越亮的節(jié)點(diǎn)表明從它得到的輸出值越高,即,8 是所有數(shù)字中概率最高的)。
同樣的 3D 可視化可以在這里看到。
其他的 ConvNet 架構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)從上世紀(jì) 90 年代初期開始出現(xiàn)。我們上面提到的 LeNet 是早期卷積神經(jīng)網(wǎng)絡(luò)之一。其他有一定影響力的架構(gòu)如下所示3:
- LeNet (1990s): 本文已介紹。
- 1990s to 2012:在上世紀(jì) 90 年代后期至 2010 年初期,卷積神經(jīng)網(wǎng)絡(luò)進(jìn)入孵化期。隨著數(shù)據(jù)量和計(jì)算能力的逐漸發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)可以處理的問題變得越來越有趣。
- AlexNet (2012) – 在 2012,Alex Krizhevsky (與其他人)發(fā)布了?AlexNet,它是比 LeNet 更深更寬的版本,并在 2012 年的 ImageNet 大規(guī)模視覺識別大賽(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)中以巨大優(yōu)勢獲勝。這對于以前的方法具有巨大的突破,當(dāng)前 CNN 大范圍的應(yīng)用也是基于這個(gè)工作。
- ZF Net (2013) – ILSVRC 2013 的獲勝者是來自 Matthew Zeiler 和 Rob Fergus 的卷積神經(jīng)網(wǎng)絡(luò)。它以?ZFNet?(Zeiler & Fergus Net 的縮寫)出名。它是在 AlexNet 架構(gòu)超參數(shù)上進(jìn)行調(diào)整得到的效果提升。
- GoogLeNet (2014) – ILSVRC 2014 的獲勝者是來自于 Google 的?Szegedy等人的卷積神經(jīng)網(wǎng)絡(luò)。它的主要貢獻(xiàn)在于使用了一個(gè) Inception 模塊,可以大量減少網(wǎng)絡(luò)的參數(shù)個(gè)數(shù)(4M,AlexNet 有 60M 的參數(shù))。
- VGGNet (2014) – 在 ILSVRC 2014 的領(lǐng)先者中有一個(gè)?VGGNet?的網(wǎng)絡(luò)。它的主要貢獻(xiàn)是展示了網(wǎng)絡(luò)的深度(層數(shù))對于性能具有很大的影響。
- ResNets (2015) –?殘差網(wǎng)絡(luò)是何凱明(和其他人)開發(fā)的,并贏得 ILSVRC 2015 的冠軍。ResNets 是當(dāng)前卷積神經(jīng)網(wǎng)絡(luò)中最好的模型,也是實(shí)踐中使用 ConvNet 的默認(rèn)選擇(截至到 2016 年五月)。
- DenseNet (2016 八月) – 近來由 Gao Huang (和其他人)發(fā)表的,the Densely Connected Convolutional Network?的各層都直接于其他層以前向的方式連接。DenseNet 在五種競爭積累的目標(biāo)識別基準(zhǔn)任務(wù)中,比以前最好的架構(gòu)有顯著的提升。可以在這里看 Torch 實(shí)現(xiàn)。
總結(jié)
在本篇文章中,我嘗試使用簡單的方式來解釋卷積神經(jīng)網(wǎng)絡(luò)背后的主要概念。我簡化/跳過了一些細(xì)節(jié),但希望本篇文章可以讓你對它們有一定的了解。
本文最開始是受 Denny Britz 的理解用于自然語言處理的卷積神經(jīng)網(wǎng)絡(luò)(我強(qiáng)烈建議閱讀)啟發(fā),大量的解釋也是基于那篇文章。如果你想要對這些概念有更深的理解,我建議你瀏覽一下?Stanford 的 ConvNet 課程中的筆記,以及下面所列的參考文獻(xiàn)。如果你對上面的概念有什么疑問,或者有問題和建議,歡迎在下面留言。
本文中使用的所有圖像和動畫的版權(quán)都?xì)w下面參考文獻(xiàn)中對應(yīng)作者所有。
參考文獻(xiàn)
Vincent Dumoulin, et al, “A guide to convolution arithmetic for deep learning”, 2015,arXiv:1603.07285
轉(zhuǎn)自http://www.hackcv.com/index.php/archives/104/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的CNN理解比较好的文章的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 室内定位系列 ——WiFi位置指纹(译)
- 下一篇: 逻辑回归(Logistic Regres