在近些年,深度學(xué)習(xí)領(lǐng)域的卷積神經(jīng)網(wǎng)絡(luò)(CNNs或ConvNets)在各行各業(yè)為我們解決了大量的實(shí)際問題。但是對于大多數(shù)人來說,CNN仿佛戴上了神秘的面紗。 CNN是深度學(xué)習(xí)算法在圖像處理領(lǐng)域的一個(gè)應(yīng)用。主要被用來找尋圖片中的模式。這個(gè)過程主要有兩個(gè)步驟,首先要對圖片做卷積,然后找尋模式。在神經(jīng)網(wǎng)絡(luò)中,前幾層是用來尋找邊界和角,隨著層數(shù)的增加,我們就能識(shí)別更加復(fù)雜的特征。這個(gè)性質(zhì)讓CNN非常擅長識(shí)別圖片中的物體。 學(xué)習(xí)CNN之前,我們需要對CNN和Deep Learning有一個(gè)簡單的了解。 簡要介紹下神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)的每個(gè)單元如下: 對應(yīng)的公式: 該單元也可以被稱作是Logistic回歸模型。當(dāng)將多個(gè)單元組合起來并具有分層結(jié)構(gòu)時(shí),就形成了神經(jīng)網(wǎng)絡(luò)模型。其對于的結(jié)構(gòu)圖如下: 其對應(yīng)的公式如下: 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法也同Logistic類似,不過由于其多層性,還需要利用鏈?zhǔn)角髮?dǎo)法則對隱含層的節(jié)點(diǎn)進(jìn)行求導(dǎo),即梯度下降+鏈?zhǔn)角髮?dǎo)法則,專業(yè)名稱為反向傳播。 正如你所見的那樣,特征矩陣中的每一個(gè)項(xiàng)都和原圖中的一個(gè)區(qū)域相關(guān)。 池化層池化層和卷積層很類似,也是用一個(gè)卷積核在圖上移動(dòng)。唯一的不同就是池化層中核和圖片窗口的操作不再是線性的。最大池化和平均池化是最常見的池化函數(shù)。最大池化選取當(dāng)前核覆蓋的圖片窗口中最大的數(shù),而平均池化則是選擇圖片窗口的均值。 在CNN中,激活函數(shù)和其他網(wǎng)絡(luò)一樣,函數(shù)將數(shù)值壓縮在一個(gè)范圍內(nèi)。下面列出了一些常見的函數(shù)。 CNN中主要有三種層,分別是:卷積層、池化層和激活層。 讓我們來看一個(gè)實(shí)例,實(shí)現(xiàn)使用keras識(shí)別貓咪。 這張圖長400像素寬320像素,有三個(gè)通道(rgb)的顏色。那么經(jīng)過一層卷積運(yùn)算之后會(huì)變成什么樣子呢? 這是用一個(gè)3*3的卷積核和三個(gè)濾波器處理的效果。 我們可以看到,由于內(nèi)核太大,我們失去了一些細(xì)節(jié)。還要注意,從數(shù)學(xué)角度來看,卷積核越大,圖像的形狀會(huì)變得越小。 ![]() 這張看起來好多了!現(xiàn)在我們可以看到我們的過濾器看到的一些事情??雌饋砑t色替換掉了黑色的鼻子和黑色眼睛,藍(lán)色替換掉了貓邊界的淺灰色。我們可以開始看到圖層如何捕獲照片中的一些更重要的細(xì)節(jié)。 ![]() 如果我們增加內(nèi)核大小,我們得到的細(xì)節(jié)就會(huì)越來越明顯,當(dāng)然圖像也比其他兩個(gè)都小。 增加一個(gè)激活層![]() 我們通過添加一個(gè)relu,去掉了很多不是藍(lán)色的部分。 增加一個(gè)池化層我們添加一個(gè)池化層(擺脫激活層最大限度地讓圖片更加更容易顯示)。 ![]() 正如預(yù)期的那樣,貓咪變成了斑駁的,而我們可以讓它更加斑駁。 ![]() 激活和最大池化 ![]() 如果我們將貓咪的圖片放到LeNet模型中做卷積和池化,那么效果會(huì)怎么樣呢? LeNet![]() CNN是非常強(qiáng)大的,雖然這些可視化并不完美,但我希望他們能夠幫助像我這樣正在嘗試更好地理解ConvNets的人。 博客原文:https:///@erikreppel |
|