-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 景觀設(shè)計(jì) > 專題列表 > 正文
圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用(圖卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用疫情)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、PART 4 W1 卷積神經(jīng)網(wǎng)絡(luò)介紹
一個(gè)是圖像分類:如貓臉識(shí)別等;一個(gè)是目標(biāo)檢測:如無人駕駛技術(shù)中的各種交通信號(hào)檢測技術(shù)
1. 卷積操作及過濾器/卷積核的概念
如上圖所示:最左側(cè)矩陣是一個(gè)灰度圖像,中間是一個(gè)3*3的小矩陣,稱為“卷積核”或“過濾器”。
卷積:先把卷積核放到灰度圖像左上角(綠色框),蓋住灰度圖像上一個(gè)3*3的矩陣區(qū)域,然后9對對應(yīng)的元素相乘,然后求和(得到0),然后把卷積核逐漸移動(dòng)一行一行的“掃描”,最終得到最右側(cè)矩陣。上述操作叫做“卷積”,最右側(cè)矩陣是卷積的輸出。
2. 垂直邊緣檢測
仍以上圖為例,可以看到3*3的卷積核具體的數(shù)值構(gòu)成為“左邊一列1,中間一列0,右邊一列-1”,這種卷積核在“掃描”灰度圖像時(shí),可以檢測到灰度圖像的垂直邊緣。分析如下:
1)假設(shè)正在掃描的灰度區(qū)域沒有垂直邊緣,意味著區(qū)域內(nèi)的值在左右方向上分布差不多,與卷積核做完運(yùn)算后,左邊的乘1,右邊的乘-1,相加正好有一定的抵消作用,其實(shí)計(jì)算出來的結(jié)果會(huì)接近0。即:卷積結(jié)果接近0代表沒有邊緣。
2)有垂直邊緣分為兩種情況:目標(biāo)區(qū)域“左邊值較大,右邊值較小” 或“左邊值較小,右邊值較大”。前一種情況在卷積操作后會(huì)得到一個(gè)較大的正值,后一種情況卷積操作后會(huì)得到一個(gè)較大的負(fù)值。
可以看出,較大的正值代表著目標(biāo)區(qū)域的變化趨勢與卷積核相同,即檢測到的是與卷積核相同的邊緣,而較大的負(fù)值代表目標(biāo)區(qū)域的變化趨勢與卷積核相反,即檢測到的是與卷積核相反的邊緣。
3. 卷積應(yīng)用在卷積神經(jīng)網(wǎng)絡(luò)中
卷積操作如何應(yīng)用于神經(jīng)網(wǎng)絡(luò)中?簡言之,卷積核本身就是網(wǎng)絡(luò)要學(xué)習(xí)的參數(shù)。如上圖所示,我們并不是事先設(shè)定好要檢測垂直邊緣或水平邊緣或其它什么邊緣,而是要網(wǎng)絡(luò)去學(xué)習(xí)要檢測什么東西。
1. padding的原因
在上節(jié)展示的卷積操作中,可以看出,假設(shè)輸入圖像的大小為n*n,而卷積核的大小為f*f,那么卷積核從輸入圖像的左上角掃描到右下角,最終得到的結(jié)果大小為(n-f+1)*(n-f+1),意味著如果一次次進(jìn)行卷積,那么結(jié)果的尺寸會(huì)越來越小
另外,顯然輸入圖像邊緣的像素被使用的較少(最邊緣的像素僅被使用一次),這顯然會(huì)造成信息的丟失。
2. 如何進(jìn)行padding
非常簡單:把輸入圖像的四周補(bǔ)充p = (f-1)/2 圈的0,這樣輸入的圖像尺寸變成了(n+2p)*(n+2p),因此卷積后的大小變成了(n+2p -f + 1)*(n+2p -f + 1)=n*n,即與原始的圖像有了相同的大小,且原始圖像邊緣的像素也被較多的利用到。
3. 幾點(diǎn)補(bǔ)充
(1)卷積核的尺寸設(shè)置為 奇數(shù) :因?yàn)棰?這樣(f-1)/2就恰好是整數(shù)了,方便進(jìn)行padding,② 有中心像素,便于表征卷積核的位置,等。
(2)根據(jù)是否進(jìn)行padding,分為 普通卷積(valid) 和 同尺寸卷積(same)
1. 步長概念
在上文中講到卷積,即使用一個(gè)卷積核對輸入圖像進(jìn)行“掃描”并進(jìn)行相應(yīng)計(jì)算時(shí),提到這個(gè)“掃描”是逐個(gè)像素逐個(gè)像素的邁進(jìn)的。但是,并不一定非得這樣,也可以每次跨越兩個(gè)或更多個(gè)像素,這就是“步長”的概念,一般用s表示
2. 卷積結(jié)果尺寸與步長的關(guān)系
前文提到,若輸入圖像尺寸為n*n,卷積核尺寸為f*f,則卷積結(jié)果尺寸為(n+f-1)*(n+f-1),若算上padding操作,則結(jié)果為(n+2p -f + 1)*(n+2p -f + 1)。這是在步長s=1的前提下成立。若步長不為1,則結(jié)果為floor((n+2p-f)/s+1)**2
3. 其它:數(shù)學(xué)中的卷積和神經(jīng)網(wǎng)絡(luò)中的卷積
需要說明的是,神經(jīng)網(wǎng)絡(luò)中所說的卷積和數(shù)學(xué)中說的卷積不是一回事,但數(shù)學(xué)中的卷積是啥就不追究了。
神經(jīng)網(wǎng)絡(luò)中的卷積操作,在數(shù)學(xué)的描述上,更像是一種“交叉相關(guān)性”的計(jì)算,可以看出,若目標(biāo)區(qū)域與卷積核有類似的分布,則會(huì)計(jì)算出較大的正值(正相關(guān)),若有相反的分布,則會(huì)計(jì)算出較大的負(fù)值(負(fù)相關(guān)),若沒什么關(guān)系,則會(huì)計(jì)算出接近0的值(不相關(guān))。卷積操作的確很像一種相關(guān)性的計(jì)算。
1. RGB圖像的數(shù)學(xué)構(gòu)成
灰度圖像是一個(gè)n*n的二維矩陣,彩色圖像則是n*n*3 的三維矩陣,最外圍的三個(gè)維度分別代表了RGB三原色的值,其中數(shù)字“3”在卷積神經(jīng)網(wǎng)絡(luò)中被稱為通道數(shù)或信道數(shù)
2. 對RGB圖像進(jìn)行卷積
在對灰度圖像進(jìn)行卷積時(shí),使用的是f*f的二維卷積核。在對RGB圖像進(jìn)行卷積時(shí),則卷積核的維度也+1,變成了f*f*3。一次卷積的結(jié)果仍然是把所有的值加起來輸出一個(gè)值。即: 一個(gè)三維的圖像,和一個(gè)三維的卷積核,在進(jìn)行完卷積操作后,輸出的是一個(gè)二維的矩陣(如上圖) 。
3. 當(dāng)使用多個(gè)卷積核時(shí)的輸出
如上圖所示,可以使用多個(gè)卷積核(一個(gè)亮黃色,一個(gè)屎黃色)。根據(jù)前文描述,一個(gè)立體的卷積核在一個(gè)立體的矩陣上掃描完,結(jié)果是一個(gè)二維的。但當(dāng)使用多個(gè)卷積核時(shí),則輸出了多個(gè)二維矩陣,這些二維矩陣沿著第三個(gè)維度排列到一起,使得結(jié)果重新變成了三維。此時(shí),第三個(gè)維度的尺寸,反應(yīng)的是卷積核數(shù),也就是說 卷積核數(shù)就是信道數(shù) 。直觀理解,每一個(gè)卷積核代表著檢測了某一種特征,多個(gè)卷積核就是同時(shí)檢測了多種特征,傳遞了多種信息。
1. 一個(gè)卷積層的數(shù)據(jù)的基本流
如上圖所示,由于卷積核本身就是一堆待學(xué)參數(shù)w,所以卷積操作本質(zhì)還是“加權(quán)求和”,之后會(huì)加入偏置值,然后進(jìn)行非線性變換,然后輸出(到下一層),可見還是那一套。
需要提一下的是,卷積的輸入不一定是原始圖像構(gòu)成的矩陣,還有可能是上一個(gè)卷積的結(jié)果。原始圖像是彩色的,有多個(gè)通道。卷積時(shí)可以用多個(gè)卷積核,最終產(chǎn)生的結(jié)果也是立體的。因此原始的輸入與中間卷積層的輸出,在數(shù)學(xué)形式上是統(tǒng)一的。因此可以“輸入->卷積層->卷積層->...”這樣操作。
2. 卷積層的參數(shù)規(guī)模
一個(gè)卷積層總的參數(shù)規(guī)模(包括w,不包括b)為: ,即:卷積核的大小的平方*上層輸出的通道數(shù))*本層所用的卷積核數(shù)。與上層輸入的大小無關(guān)(但與通道數(shù)有關(guān))
3. 一個(gè)卷積層涉及到的超參
卷積核的大小、是否padding、步長、卷積核數(shù)。
1. 一個(gè)示例
上圖為一個(gè)簡單的卷積神經(jīng)網(wǎng)絡(luò)示例: 一層一層的卷積,最后把所有的元素展開成一個(gè)一維向量,然后加一個(gè)全連接層。
2. 注意以下幾點(diǎn):
1⃣️ 實(shí)際上CNN會(huì)有卷積層、池化層、全連接層,而非僅有卷積和全連接;
2⃣️ 從數(shù)據(jù)的構(gòu)成形式上看,按照網(wǎng)絡(luò)從前往后的順序,圖片尺寸不斷減小,信道數(shù)量不斷增加。一般遵從這個(gè)趨勢。
1. 池化
如上圖所示,假設(shè)輸入是一個(gè)4*4的矩陣,現(xiàn)在我們把它分割成2*2四個(gè)子矩陣(或者說使用一個(gè)2*2的核以2為步長掃描矩陣),對四個(gè)子區(qū)域分別求最大值,最終得到一個(gè)值為9、2、6、3的2*2的矩陣輸出。這種操作就叫池化,具體為最大值池化。
2. 池化的作用
1⃣️ 一般來說,較大的值往往代表學(xué)到了一個(gè)重要或典型的特征,把原始輸入以某種方式濾除掉一些不重要的值,只保留一些較大的值,相當(dāng)于 強(qiáng)化了一些重要信息的表達(dá) 。2⃣️ 降低圖片的尺寸,可以節(jié)省空間、加速運(yùn)算等。
3. 池化的特點(diǎn)
并沒有需要學(xué)習(xí)的參數(shù)(w、b之類的),也因此“池化層”一般并不被稱為單獨(dú)的一層。在卷積神經(jīng)網(wǎng)絡(luò)中,通常把一個(gè)卷積層+一個(gè)池化層的組合叫一層。
4. 池化的超參數(shù)及經(jīng)驗(yàn)值
池化層沒有要學(xué)習(xí)的參數(shù),只有核心的兩個(gè)超參:池化核的大小、池化步長。此外還有池化所用的reduce操作:最大或者平均(沒有其它選項(xiàng))。
一般把池化核的大小設(shè)置為3或2,步長為2。注意:步長為2意味著把圖片減小到原來的一半。
reduce操作最常用最大池化,偶爾用平均池化,不會(huì)用其它操作。
上圖為一個(gè)典型的卷積神經(jīng)網(wǎng)絡(luò)示例,描述如下:
輸入層 :彩色的手寫數(shù)字圖片,數(shù)學(xué)構(gòu)成為32*32*3的矩陣,其中3為通道數(shù)。
Layer 1-卷積層 :1)使用6個(gè)5*5*3的卷積核,以步長為1對輸入層進(jìn)行卷積,輸出28*28*6的矩陣,2)然后使用2*2的最大池化,步長為2,最終輸出14*14*6的矩陣。其中14為圖片尺寸,6為信道數(shù)。
Layer2-卷積層 :1)使用16個(gè)5*5*3的卷積核以步長1對上層輸出進(jìn)行卷積,輸出10*10*16的矩陣,2)然后使用2*2的最大池化,步長為2,最終輸出5*5*16的矩陣。
Layer3-全連接層: 把上層輸出的5*5*16矩陣展開成1*400的一維向量,以120*400的權(quán)重矩陣送入本層120個(gè)神經(jīng)元,激活后輸出。
Layer4-全連接層: 120->84,激活后輸出
輸出層 :84 -> 10,然后softmax后輸出。
1. 參數(shù)少
假如原始圖片尺寸為100*100*3,假設(shè)使用全連接,即使第二層僅用100個(gè)神經(jīng)元,那也已經(jīng)產(chǎn)生了100*100*3*100 = 300w個(gè)參數(shù),難以想象。
假設(shè)使用卷積層,使用10個(gè)10*10*3的卷積核,那就是只有3000個(gè)參數(shù),而能輸出的矩陣規(guī)模是91*91*10=81000
2. 參數(shù)少的原因
1)稀疏連接:卷積核掃描矩陣產(chǎn)生輸出,這個(gè)過程就從“神經(jīng)元連接”的角度看,輸入的左上角只連著輸出的左上角,右上角只連右上角,而非“全連接”,參數(shù)就會(huì)少很多。2)參數(shù)共享:這么稀疏的連接,還是使用了同一套參數(shù),進(jìn)一步減少了參數(shù)的量。
3. 參數(shù)共享的其它好處
如果圖片上有一只貓,那么不管這個(gè)貓?jiān)趫D片的什么位置,都不改變“這是一張貓的照片”。使用參數(shù)共享時(shí),相當(dāng)于用同樣的特征提取作用到整個(gè)圖片的各個(gè)區(qū)域,適應(yīng)平移不變性,增強(qiáng)魯棒性。
二、神經(jīng)網(wǎng)絡(luò):卷積神經(jīng)網(wǎng)絡(luò)(CNN)
神經(jīng)網(wǎng)絡(luò) 最早是由心理學(xué)家和神經(jīng)學(xué)家提出的,旨在尋求開發(fā)和測試神經(jīng)的計(jì)算模擬。
粗略地說, 神經(jīng)網(wǎng)絡(luò) 是一組連接的 輸入/輸出單元 ,其中每個(gè)連接都與一個(gè) 權(quán) 相關(guān)聯(lián)。在學(xué)習(xí)階段,通過調(diào)整權(quán)值,使得神經(jīng)網(wǎng)絡(luò)的預(yù)測準(zhǔn)確性逐步提高。由于單元之間的連接,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)又稱 連接者學(xué)習(xí)。
神經(jīng)網(wǎng)絡(luò)是以模擬人腦神經(jīng)元的數(shù)學(xué)模型為基礎(chǔ)而建立的,它由一系列神經(jīng)元組成,單元之間彼此連接。從信息處理角度看,神經(jīng)元可以看作是一個(gè)多輸入單輸出的信息處理單元,根據(jù)神經(jīng)元的特性和功能,可以把神經(jīng)元抽象成一個(gè)簡單的數(shù)學(xué)模型。
神經(jīng)網(wǎng)絡(luò)有三個(gè)要素: 拓?fù)浣Y(jié)構(gòu)、連接方式、學(xué)習(xí)規(guī)則
神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu) :神經(jīng)網(wǎng)絡(luò)的單元通常按照層次排列,根據(jù)網(wǎng)絡(luò)的層次數(shù),可以將神經(jīng)網(wǎng)絡(luò)分為單層神經(jīng)網(wǎng)絡(luò)、兩層神經(jīng)網(wǎng)絡(luò)、三層神經(jīng)網(wǎng)絡(luò)等。結(jié)構(gòu)簡單的神經(jīng)網(wǎng)絡(luò),在學(xué)習(xí)時(shí)收斂的速度快,但準(zhǔn)確度低。
神經(jīng)網(wǎng)絡(luò)的層數(shù)和每層的單元數(shù)由問題的復(fù)雜程度而定。問題越復(fù)雜,神經(jīng)網(wǎng)絡(luò)的層數(shù)就越多。例如,兩層神經(jīng)網(wǎng)絡(luò)常用來解決線性問題,而多層網(wǎng)絡(luò)就可以解決多元非線性問題
神經(jīng)網(wǎng)絡(luò)的連接 :包括層次之間的連接和每一層內(nèi)部的連接,連接的強(qiáng)度用權(quán)來表示。
根據(jù)層次之間的連接方式,分為:
1)前饋式網(wǎng)絡(luò):連接是單向的,上層單元的輸出是下層單元的輸入,如反向傳播網(wǎng)絡(luò),Kohonen網(wǎng)絡(luò)
2)反饋式網(wǎng)絡(luò):除了單項(xiàng)的連接外,還把最后一層單元的輸出作為第一層單元的輸入,如Hopfield網(wǎng)絡(luò)
根據(jù)連接的范圍,分為:
1)全連接神經(jīng)網(wǎng)絡(luò):每個(gè)單元和相鄰層上的所有單元相連
2)局部連接網(wǎng)絡(luò):每個(gè)單元只和相鄰層上的部分單元相連
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)
根據(jù)學(xué)習(xí)方法分:
感知器:有監(jiān)督的學(xué)習(xí)方法,訓(xùn)練樣本的類別是已知的,并在學(xué)習(xí)的過程中指導(dǎo)模型的訓(xùn)練
認(rèn)知器:無監(jiān)督的學(xué)習(xí)方法,訓(xùn)練樣本類別未知,各單元通過競爭學(xué)習(xí)。
根據(jù)學(xué)習(xí)時(shí)間分:
離線網(wǎng)絡(luò):學(xué)習(xí)過程和使用過程是獨(dú)立的
在線網(wǎng)絡(luò):學(xué)習(xí)過程和使用過程是同時(shí)進(jìn)行的
根據(jù)學(xué)習(xí)規(guī)則分:
相關(guān)學(xué)習(xí)網(wǎng)絡(luò):根據(jù)連接間的激活水平改變權(quán)系數(shù)
糾錯(cuò)學(xué)習(xí)網(wǎng)絡(luò):根據(jù)輸出單元的外部反饋改變權(quán)系數(shù)
自組織學(xué)習(xí)網(wǎng)絡(luò):對輸入進(jìn)行自適應(yīng)地學(xué)習(xí)
摘自《數(shù)學(xué)之美》對人工神經(jīng)網(wǎng)絡(luò)的通俗理解:
神經(jīng)網(wǎng)絡(luò)種類很多,常用的有如下四種:
1)Hopfield網(wǎng)絡(luò),典型的反饋網(wǎng)絡(luò),結(jié)構(gòu)單層,有相同的單元組成
2)反向傳播網(wǎng)絡(luò),前饋網(wǎng)絡(luò),結(jié)構(gòu)多層,采用最小均方差的糾錯(cuò)學(xué)習(xí)規(guī)則,常用于語言識(shí)別和分類等問題
3)Kohonen網(wǎng)絡(luò):典型的自組織網(wǎng)絡(luò),由輸入層和輸出層構(gòu)成,全連接
4)ART網(wǎng)絡(luò):自組織網(wǎng)絡(luò)
深度神經(jīng)網(wǎng)絡(luò):
Convolutional Neural Networks(CNN)卷積神經(jīng)網(wǎng)絡(luò)
Recurrent neural Network(RNN)循環(huán)神經(jīng)網(wǎng)絡(luò)
Deep Belief Networks(DBN)深度信念網(wǎng)絡(luò)
深度學(xué)習(xí)是指多層神經(jīng)網(wǎng)絡(luò)上運(yùn)用各種機(jī)器學(xué)習(xí)算法解決圖像,文本等各種問題的算法集合。深度學(xué)習(xí)從大類上可以歸入神經(jīng)網(wǎng)絡(luò),不過在具體實(shí)現(xiàn)上有許多變化。
深度學(xué)習(xí)的核心是特征學(xué)習(xí),旨在通過分層網(wǎng)絡(luò)獲取分層次的特征信息,從而解決以往需要人工設(shè)計(jì)特征的重要難題。
Machine Learning vs. Deep Learning
神經(jīng)網(wǎng)絡(luò)(主要是感知器)經(jīng)常用于 分類
神經(jīng)網(wǎng)絡(luò)的分類知識(shí)體現(xiàn)在網(wǎng)絡(luò)連接上,被隱式地存儲(chǔ)在連接的權(quán)值中。
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)就是通過迭代算法,對權(quán)值逐步修改的優(yōu)化過程,學(xué)習(xí)的目標(biāo)就是通過改變權(quán)值使訓(xùn)練集的樣本都能被正確分類。
神經(jīng)網(wǎng)絡(luò)特別適用于下列情況的分類問題:
1) 數(shù)據(jù)量比較小,缺少足夠的樣本建立模型
2) 數(shù)據(jù)的結(jié)構(gòu)難以用傳統(tǒng)的統(tǒng)計(jì)方法來描述
3) 分類模型難以表示為傳統(tǒng)的統(tǒng)計(jì)模型
缺點(diǎn):
1) 需要很長的訓(xùn)練時(shí)間,因而對于有足夠長訓(xùn)練時(shí)間的應(yīng)用更合適。
2) 需要大量的參數(shù),這些通常主要靠經(jīng)驗(yàn)確定,如網(wǎng)絡(luò)拓?fù)浠颉敖Y(jié)構(gòu)”。
3) 可解釋性差 。該特點(diǎn)使得神經(jīng)網(wǎng)絡(luò)在數(shù)據(jù)挖掘的初期并不看好。
優(yōu)點(diǎn):
1) 分類的準(zhǔn)確度高
2)并行分布處理能力強(qiáng)
3)分布存儲(chǔ)及學(xué)習(xí)能力高
4)對噪音數(shù)據(jù)有很強(qiáng)的魯棒性和容錯(cuò)能力
最流行的基于神經(jīng)網(wǎng)絡(luò)的分類算法是80年代提出的 后向傳播算法 。后向傳播算法在多路前饋神經(jīng)網(wǎng)絡(luò)上學(xué)習(xí)。
定義網(wǎng)絡(luò)拓?fù)?
在開始訓(xùn)練之前,用戶必須說明輸入層的單元數(shù)、隱藏層數(shù)(如果多于一層)、每一隱藏層的單元數(shù)和輸出層的單元數(shù),以確定網(wǎng)絡(luò)拓?fù)洹?
對訓(xùn)練樣本中每個(gè)屬性的值進(jìn)行規(guī)格化將有助于加快學(xué)習(xí)過程。通常,對輸入值規(guī)格化,使得它們落入0.0和1.0之間。
離散值屬性可以重新編碼,使得每個(gè)域值一個(gè)輸入單元。例如,如果屬性A的定義域?yàn)?a0,a1,a2),則可以分配三個(gè)輸入單元表示A。即,我們可以用I0 ,I1 ,I2作為輸入單元。每個(gè)單元初始化為0。如果A = a0,則I0置為1;如果A = a1,I1置1;如此下去。
一個(gè)輸出單元可以用來表示兩個(gè)類(值1代表一個(gè)類,而值0代表另一個(gè))。如果多于兩個(gè)類,則每個(gè)類使用一個(gè)輸出單元。
隱藏層單元數(shù)設(shè)多少個(gè)“最好” ,沒有明確的規(guī)則。
網(wǎng)絡(luò)設(shè)計(jì)是一個(gè)實(shí)驗(yàn)過程,并可能影響準(zhǔn)確性。權(quán)的初值也可能影響準(zhǔn)確性。如果某個(gè)經(jīng)過訓(xùn)練的網(wǎng)絡(luò)的準(zhǔn)確率太低,則通常需要采用不同的網(wǎng)絡(luò)拓?fù)浠蚴褂貌煌某跏紮?quán)值,重復(fù)進(jìn)行訓(xùn)練。
后向傳播算法學(xué)習(xí)過程:
迭代地處理一組訓(xùn)練樣本,將每個(gè)樣本的網(wǎng)絡(luò)預(yù)測與實(shí)際的類標(biāo)號(hào)比較。
每次迭代后,修改權(quán)值,使得網(wǎng)絡(luò)預(yù)測和實(shí)際類之間的均方差最小。
這種修改“后向”進(jìn)行。即,由輸出層,經(jīng)由每個(gè)隱藏層,到第一個(gè)隱藏層(因此稱作后向傳播)。盡管不能保證,一般地,權(quán)將最終收斂,學(xué)習(xí)過程停止。
算法終止條件:訓(xùn)練集中被正確分類的樣本達(dá)到一定的比例,或者權(quán)系數(shù)趨近穩(wěn)定。
后向傳播算法分為如下幾步:
1) 初始化權(quán)
網(wǎng)絡(luò)的權(quán)通常被初始化為很小的隨機(jī)數(shù)(例如,范圍從-1.0到1.0,或從-0.5到0.5)。
每個(gè)單元都設(shè)有一個(gè)偏置(bias),偏置也被初始化為小隨機(jī)數(shù)。
2) 向前傳播輸入
對于每一個(gè)樣本X,重復(fù)下面兩步:
向前傳播輸入,向后傳播誤差
計(jì)算各層每個(gè)單元的輸入和輸出。輸入層:輸出=輸入=樣本X的屬性;即,對于單元j,Oj = Ij = Xj。隱藏層和輸出層:輸入=前一層的輸出的線性組合,即,對于單元j, Ij =wij Oi + θj,輸出=
3) 向后傳播誤差
計(jì)算各層每個(gè)單元的誤差。
輸出層單元j,誤差:
Oj是單元j的實(shí)際輸出,而Tj是j的真正輸出。
隱藏層單元j,誤差:
wjk是由j到下一層中單元k的連接的權(quán),Errk是單元k的誤差
更新 權(quán) 和 偏差 ,以反映傳播的誤差。
權(quán)由下式更新:
其中,△wij是權(quán)wij的改變。l是學(xué)習(xí)率,通常取0和1之間的值。
偏置由下式更新:
其中,△θj是偏置θj的改變。
Example
人類視覺原理:
深度學(xué)習(xí)的許多研究成果,離不開對大腦認(rèn)知原理的研究,尤其是視覺原理的研究。1981 年的諾貝爾醫(yī)學(xué)獎(jiǎng),頒發(fā)給了 David Hubel(出生于加拿大的美國神經(jīng)生物學(xué)家) 和Torsten Wiesel,以及Roger Sperry。前兩位的主要貢獻(xiàn),是“發(fā)現(xiàn)了視覺系統(tǒng)的信息處理”, 可視皮層是分級(jí)的 。
人類的視覺原理如下:從原始信號(hào)攝入開始(瞳孔攝入像素Pixels),接著做初步處理(大腦皮層某些細(xì)胞發(fā)現(xiàn)邊緣和方向),然后抽象(大腦判定,眼前的物體的形狀,是圓形的),然后進(jìn)一步抽象(大腦進(jìn)一步判定該物體是只氣球)。
對于不同的物體,人類視覺也是通過這樣逐層分級(jí),來進(jìn)行認(rèn)知的:
在最底層特征基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特征(輪子、眼睛、軀干等),到最上層,不同的高級(jí)特征最終組合成相應(yīng)的圖像,從而能夠讓人類準(zhǔn)確的區(qū)分不同的物體。
可以很自然的想到:可以不可以模仿人類大腦的這個(gè)特點(diǎn),構(gòu)造多層的神經(jīng)網(wǎng)絡(luò),較低層的識(shí)別初級(jí)的圖像特征,若干底層特征組成更上一層特征,最終通過多個(gè)層級(jí)的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學(xué)習(xí)算法(包括CNN)的靈感來源。
卷積神經(jīng)網(wǎng)絡(luò)是一種多層神經(jīng)網(wǎng)絡(luò),擅長處理圖像特別是大圖像的相關(guān)機(jī)器學(xué)習(xí)問題。卷積網(wǎng)絡(luò)通過一系列方法,成功將數(shù)據(jù)量龐大的圖像識(shí)別問題不斷降維,最終使其能夠被訓(xùn)練。
CNN最早由Yann LeCun提出并應(yīng)用在手寫字體識(shí)別上。LeCun提出的網(wǎng)絡(luò)稱為LeNet,其網(wǎng)絡(luò)結(jié)構(gòu)如下:
這是一個(gè)最典型的卷積網(wǎng)絡(luò),由 卷積層、池化層、全連接層 組成。其中卷積層與池化層配合,組成多個(gè)卷積組,逐層提取特征,最終通過若干個(gè)全連接層完成分類。
CNN通過卷積來模擬特征區(qū)分,并且通過卷積的權(quán)值共享及池化,來降低網(wǎng)絡(luò)參數(shù)的數(shù)量級(jí),最后通過傳統(tǒng)神經(jīng)網(wǎng)絡(luò)完成分類等任務(wù)。
降低參數(shù)量級(jí):如果使用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)方式,對一張圖片進(jìn)行分類,那么,把圖片的每個(gè)像素都連接到隱藏層節(jié)點(diǎn)上,對于一張1000x1000像素的圖片,如果有1M隱藏層單元,一共有10^12個(gè)參數(shù),這顯然是不能接受的。
但是在CNN里,可以大大減少參數(shù)個(gè)數(shù),基于以下兩個(gè)假設(shè):
1)最底層特征都是局部性的,也就是說,用10x10這樣大小的過濾器就能表示邊緣等底層特征
2)圖像上不同小片段,以及不同圖像上的小片段的特征是類似的,也就是說,能用同樣的一組分類器來描述各種各樣不同的圖像
基于以上兩個(gè)假設(shè),就能把第一層網(wǎng)絡(luò)結(jié)構(gòu)簡化
用100個(gè)10x10的小過濾器,就能夠描述整幅圖片上的底層特征。
卷積運(yùn)算的定義如下圖所示:
如上圖所示,一個(gè)5x5的圖像,用一個(gè)3x3的 卷積核 :
101
010
101
來對圖像進(jìn)行卷積操作(可以理解為有一個(gè)滑動(dòng)窗口,把卷積核與對應(yīng)的圖像像素做乘積然后求和),得到了3x3的卷積結(jié)果。
這個(gè)過程可以理解為使用一個(gè)過濾器(卷積核)來過濾圖像的各個(gè)小區(qū)域,從而得到這些小區(qū)域的特征值。在實(shí)際訓(xùn)練過程中, 卷積核的值是在學(xué)習(xí)過程中學(xué)到的。
在具體應(yīng)用中,往往有多個(gè)卷積核,可以認(rèn)為, 每個(gè)卷積核代表了一種圖像模式 ,如果某個(gè)圖像塊與此卷積核卷積出的值大,則認(rèn)為此圖像塊十分接近于此卷積核。如果設(shè)計(jì)了6個(gè)卷積核,可以理解為這個(gè)圖像上有6種底層紋理模式,也就是用6種基礎(chǔ)模式就能描繪出一副圖像。以下就是24種不同的卷積核的示例:
池化 的過程如下圖所示:
可以看到,原始圖片是20x20的,對其進(jìn)行采樣,采樣窗口為10x10,最終將其采樣成為一個(gè)2x2大小的特征圖。
之所以這么做,是因?yàn)榧词棺鐾炅司矸e,圖像仍然很大(因?yàn)榫矸e核比較?。詾榱私档蛿?shù)據(jù)維度,就進(jìn)行采樣。
即使減少了許多數(shù)據(jù),特征的統(tǒng)計(jì)屬性仍能夠描述圖像,而且由于降低了數(shù)據(jù)維度,有效地避免了過擬合。
在實(shí)際應(yīng)用中,分為最大值采樣(Max-Pooling)與平均值采樣(Mean-Pooling)。
LeNet網(wǎng)絡(luò)結(jié)構(gòu):
注意,上圖中S2與C3的連接方式并不是全連接,而是部分連接。最后,通過全連接層C5、F6得到10個(gè)輸出,對應(yīng)10個(gè)數(shù)字的概率。
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)類似,也是參照了反向傳播算法
第一階段,向前傳播階段:
a)從樣本集中取一個(gè)樣本(X,Yp),將X輸入網(wǎng)絡(luò);
b)計(jì)算相應(yīng)的實(shí)際輸出Op
第二階段,向后傳播階段
a)計(jì)算實(shí)際輸出Op與相應(yīng)的理想輸出Yp的差;
b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣。
三、卷積神經(jīng)網(wǎng)絡(luò)主要做什么用的?
卷積網(wǎng)絡(luò)的特點(diǎn)主要是卷積核參數(shù)共享,池化操作。
參數(shù)共享的話的話是因?yàn)橄駡D片等結(jié)構(gòu)化的數(shù)據(jù)在不同的區(qū)域可能會(huì)存在相同的特征,那么就可以把卷積核作為detector,每一層detect不同的特征,但是同層的核是在圖片的不同地方找相同的特征。然后把底層的特征組合傳給后層,再在后層對特征整合(一般深度網(wǎng)絡(luò)是說不清楚后面的網(wǎng)絡(luò)層得到了什么特征的)。
而池化主要是因?yàn)樵谀承┤蝿?wù)中降采樣并不會(huì)影響結(jié)果。所以可以大大減少參數(shù)量,另外,池化后在之前同樣大小的區(qū)域就可以包含更多的信息了。
綜上,所有有這種特征的數(shù)據(jù)都可以用卷積網(wǎng)絡(luò)來處理。有卷積做視頻的,有卷積做文本處理的(當(dāng)然這兩者由于是序列信號(hào),天然更適合用lstm處理)
另外,卷積網(wǎng)絡(luò)只是個(gè)工具,看你怎么使用它,有必要的話你可以隨意組合池化和卷積的順序,可以改變網(wǎng)絡(luò)結(jié)構(gòu)來達(dá)到自己所需目的的,不必太被既定框架束縛。
四、卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò) (Convolutional Neural Networks,CNN)是一種前饋神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)是受生物學(xué)上感受野(Receptive Field)的機(jī)制而提出的。感受野主要是指聽覺系統(tǒng)、本體感覺系統(tǒng)和視覺系統(tǒng)中神經(jīng)元的一些性質(zhì)。比如在視覺神經(jīng)系統(tǒng)中,一個(gè)神經(jīng)元的感受野是指視網(wǎng)膜上的特定區(qū)域,只有這個(gè)區(qū)域內(nèi)的刺激才能夠激活該神經(jīng)元。
卷積神經(jīng)網(wǎng)絡(luò)又是怎樣解決這個(gè)問題的呢?主要有三個(gè)思路:
在使用CNN提取特征時(shí),到底使用哪一層的輸出作為最后的特征呢?
答:倒數(shù)第二個(gè)全連接層的輸出才是最后我們要提取的特征,也就是最后一個(gè)全連接層的輸入才是我們需要的特征。
全連接層會(huì)忽視形狀。卷積層可以保持形狀不變。當(dāng)輸入數(shù)據(jù)是圖像時(shí),卷積層會(huì)以3維數(shù)據(jù)的形式接收輸入數(shù)據(jù),并同樣以3維數(shù)據(jù)的形式輸出至下一層。因此,在CNN中,可以(有可能)正確理解圖像等具有形狀的數(shù)據(jù)。
CNN中,有時(shí)將 卷積層的輸入輸出數(shù)據(jù)稱為特征圖(feature map) 。其中, 卷積層的輸入數(shù)據(jù)稱為輸入特征圖(input feature map) , 輸出數(shù)據(jù)稱為輸出特征圖(output feature map)。
卷積層進(jìn)行的處理就是 卷積運(yùn)算 。卷積運(yùn)算相當(dāng)于圖像處理中的“濾波器運(yùn)算”。
濾波器相當(dāng)于權(quán)重或者參數(shù),濾波器數(shù)值都是學(xué)習(xí)出來的。 卷積層實(shí)現(xiàn)的是垂直邊緣檢測 。
邊緣檢測實(shí)際就是將圖像由亮到暗進(jìn)行區(qū)分,即邊緣的過渡(edge transitions)。
卷積層對應(yīng)到全連接層,左上角經(jīng)過濾波器,得到的3,相當(dāng)于一個(gè)神經(jīng)元輸出為3.然后相當(dāng)于,我們把輸入矩陣?yán)睘?6個(gè)數(shù)據(jù),但是我們只對其中的9個(gè)數(shù)據(jù)賦予了權(quán)重。
步幅為1 ,移動(dòng)一個(gè),得到一個(gè)1,相當(dāng)于另一個(gè)神經(jīng)單元的輸出是1.
并且使用的是同一個(gè)濾波器,對應(yīng)到全連接層,就是權(quán)值共享。
在這個(gè)例子中,輸入數(shù)據(jù)是有高長方向的形狀的數(shù)據(jù),濾波器也一樣,有高長方向上的維度。假設(shè)用(height, width)表示數(shù)據(jù)和濾波器的形狀,則在本例中,輸入大小是(4, 4),濾波器大小是(3, 3),輸出大小是(2, 2)。另外,有的文獻(xiàn)中也會(huì)用“核”這個(gè)詞來表示這里所說的“濾波器”。
對于輸入數(shù)據(jù),卷積運(yùn)算以一定間隔滑動(dòng)濾波器的窗口并應(yīng)用。這里所說的窗口是指圖7-4中灰色的3 × 3的部分。如圖7-4所示,將各個(gè)位置上濾
波器的元素和輸入的對應(yīng)元素相乘,然后再求和(有時(shí)將這個(gè)計(jì)算稱為乘積累加運(yùn)算)。然后,將這個(gè)結(jié)果保存到輸出的對應(yīng)位置。將這個(gè)過程在所有位置都進(jìn)行一遍,就可以得到卷積運(yùn)算的輸出。
CNN中,濾波器的參數(shù)就對應(yīng)之前的權(quán)重。并且,CNN中也存在偏置。
在進(jìn)行卷積層的處理之前,有時(shí)要向輸入數(shù)據(jù)的周圍填入固定的數(shù)據(jù)(比如0等),這稱為填充(padding),是卷積運(yùn)算中經(jīng)常會(huì)用到的處理。比如,在圖7-6的例子中,對大小為(4, 4)的輸入數(shù)據(jù)應(yīng)用了幅度為1的填充?!胺葹?的填充”是指用幅度為1像素的0填充周圍。
應(yīng)用濾波器的位置間隔稱為 步幅(stride) 。
假設(shè)輸入大小為(H, W),濾波器大小為(FH, FW),輸出大小為(OH, OW),填充為P,步幅為S。
但是所設(shè)定的值必須使式(7.1)中的 和 分別可以除盡。當(dāng)輸出大小無法除盡時(shí)(結(jié)果是小數(shù)時(shí)),需要采取報(bào)錯(cuò)等對策。順便說一下,根據(jù)深度學(xué)習(xí)的框架的不同,當(dāng)值無法除盡時(shí),有時(shí)會(huì)向最接近的整數(shù)四舍五入,不進(jìn)行報(bào)錯(cuò)而繼續(xù)運(yùn)行。
之前的卷積運(yùn)算的例子都是以有高、長方向的2維形狀為對象的。但是,圖像是3維數(shù)據(jù),除了高、長方向之外,還需要處理通道方向。
在3維數(shù)據(jù)的卷積運(yùn)算中,輸入數(shù)據(jù)和濾波器的通道數(shù)要設(shè)為相同的值。
因此,作為4維數(shù)據(jù),濾波器的權(quán)重?cái)?shù)據(jù)要按(output_channel, input_channel, height, width)的順序書寫。比如,通道數(shù)為3、大小為5 × 5的濾
波器有20個(gè)時(shí),可以寫成(20, 3, 5, 5)。
對于每個(gè)通道,均使用自己的權(quán)值矩陣進(jìn)行處理,輸出時(shí)將多個(gè)通道所輸出的值進(jìn)行加和即可。
卷積運(yùn)算的批處理,需要將在各層間傳遞的數(shù)據(jù)保存為4維數(shù)據(jù)。具體地講,就是按(batch_num, channel, height, width)的順序保存數(shù)據(jù)。
這里需要注意的是,網(wǎng)絡(luò)間傳遞的是4維數(shù)據(jù),對這N個(gè)數(shù)據(jù)進(jìn)行了卷積運(yùn)算。也就是說,批處理將N次的處理匯總成了1次進(jìn)行。
池化是縮小高、長方向上的空間的運(yùn)算。比如,如圖7-14所示,進(jìn)行將2 × 2的區(qū)域集約成1個(gè)元素的處理,縮小空間大小。
圖7-14的例子是按步幅2進(jìn)行2 × 2的Max池化時(shí)的處理順序?!癕ax池化”是獲取最大值的運(yùn)算,“2 × 2”表示目標(biāo)區(qū)域的大小。如圖所示,從
2 × 2的區(qū)域中取出最大的元素。此外,這個(gè)例子中將步幅設(shè)為了2,所以2 × 2的窗口的移動(dòng)間隔為2個(gè)元素。另外,一般來說,池化的窗口大小會(huì)和步幅設(shè)定成相同的值。比如,3 × 3的窗口的步幅會(huì)設(shè)為3,4 × 4的窗口的步幅會(huì)設(shè)為4等。
除了Max池化之外,還有Average池化等。相對于Max池化是從目標(biāo)區(qū)域中取出最大值,Average池化則是計(jì)算目標(biāo)區(qū)域的平均值。 在圖像識(shí)別領(lǐng)域,主要使用Max池化。 因此,本書中說到“池化層”時(shí),指的是Max池化。
池化層的特征
池化層有以下特征。
沒有要學(xué)習(xí)的參數(shù)
池化層和卷積層不同,沒有要學(xué)習(xí)的參數(shù)。池化只是從目標(biāo)區(qū)域中取最大值(或者平均值),所以不存在要學(xué)習(xí)的參數(shù)。
通道數(shù)不發(fā)生變化
經(jīng)過池化運(yùn)算,輸入數(shù)據(jù)和輸出數(shù)據(jù)的通道數(shù)不會(huì)發(fā)生變化。如圖7-15所示,計(jì)算是按通道獨(dú)立進(jìn)行的。
對微小的位置變化具有魯棒性(健壯)
輸入數(shù)據(jù)發(fā)生微小偏差時(shí),池化仍會(huì)返回相同的結(jié)果。因此,池化對輸入數(shù)據(jù)的微小偏差具有魯棒性。比如,3 × 3的池化的情況下,如圖
7-16所示,池化會(huì)吸收輸入數(shù)據(jù)的偏差(根據(jù)數(shù)據(jù)的不同,結(jié)果有可能不一致)。
經(jīng)過卷積層和池化層之后,進(jìn)行Flatten,然后丟到全連接前向傳播神經(jīng)網(wǎng)絡(luò)。
(找到一張圖片使得某個(gè)filter響應(yīng)最大。相當(dāng)于filter固定,未知的是輸入的圖片。)未知的是輸入的圖片???
k是第k個(gè)filter,x是我們要找的參數(shù)。?這里我不是很明白。我得理解應(yīng)該是去尋找最具有代表性的特征。
使用im2col來實(shí)現(xiàn)卷積層
卷積層的參數(shù)是需要學(xué)習(xí)的,但是池化層沒有參數(shù)需要學(xué)習(xí)。全連接層的參數(shù)需要訓(xùn)練得到。
池化層不需要訓(xùn)練參數(shù)。全連接層的參數(shù)最多。卷積核的個(gè)數(shù)逐漸增多。激活層的size,逐漸減少。
最大池化只是計(jì)算神經(jīng)網(wǎng)絡(luò)某一層的靜態(tài)屬性,沒有什么需要學(xué)習(xí)的,它只是一個(gè)靜態(tài)屬性 。
像這樣展開之后,只需對展開的矩陣求各行的最大值,并轉(zhuǎn)換為合適的形狀即可(圖7-22)。
參數(shù)
• input_dim ― 輸入數(shù)據(jù)的維度:( 通道,高,長 )
• conv_param ― 卷積層的超參數(shù)(字典)。字典的關(guān)鍵字如下:
filter_num ― 濾波器的數(shù)量
filter_size ― 濾波器的大小
stride ― 步幅
pad ― 填充
• hidden_size ― 隱藏層(全連接)的神經(jīng)元數(shù)量
• output_size ― 輸出層(全連接)的神經(jīng)元數(shù)量
• weitght_int_std ― 初始化時(shí)權(quán)重的標(biāo)準(zhǔn)差
LeNet
LeNet在1998年被提出,是進(jìn)行手寫數(shù)字識(shí)別的網(wǎng)絡(luò)。如圖7-27所示,它有連續(xù)的卷積層和池化層(正確地講,是只“抽選元素”的子采樣層),最后經(jīng)全連接層輸出結(jié)果。
和“現(xiàn)在的CNN”相比,LeNet有幾個(gè)不同點(diǎn)。第一個(gè)不同點(diǎn)在于激活函數(shù)。LeNet中使用sigmoid函數(shù),而現(xiàn)在的CNN中主要使用ReLU函數(shù)。
此外,原始的LeNet中使用子采樣(subsampling)縮小中間數(shù)據(jù)的大小,而現(xiàn)在的CNN中Max池化是主流。
AlexNet
在LeNet問世20多年后,AlexNet被發(fā)布出來。AlexNet是引發(fā)深度學(xué)習(xí)熱潮的導(dǎo)火線,不過它的網(wǎng)絡(luò)結(jié)構(gòu)和LeNet基本上沒有什么不同,如圖7-28所示。
AlexNet疊有多個(gè)卷積層和池化層,最后經(jīng)由全連接層輸出結(jié)果。雖然結(jié)構(gòu)上AlexNet和LeNet沒有大的不同,但有以下幾點(diǎn)差異。
• 激活函數(shù)使用ReLU。
• 使用進(jìn)行局部正規(guī)化的LRN(Local Response Normalization)層。
• 使用Dropout
TF2.0實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)
valid意味著不填充,same是填充
or the SAME padding, the output height and width are computed as:
out_height = ceil(float(in_height) / float(strides[1]))
out_width = ceil(float(in_width) / float(strides[2]))
And
For the VALID padding, the output height and width are computed as:
out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))
out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
因此,我們可以設(shè)定 padding 策略。在 tf.keras.layers.Conv2D 中,當(dāng)我們將 padding 參數(shù)設(shè)為 same 時(shí),會(huì)將周圍缺少的部分使用 0 補(bǔ)齊,使得輸出的矩陣大小和輸入一致。
以上就是關(guān)于圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用(圖卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用疫情)
抖音小店男裝代運(yùn)營怎么做品牌推廣(有哪些推廣方法)