HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務(wù)案例
NEWS 熱點資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用(圖卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用疫情)

    發(fā)布時間:2023-04-04 18:47:59     稿源: 創(chuàng)意嶺    閱讀: 139        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(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

    本文目錄:

    圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用(圖卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用疫情)

    一、PART 4 W1 卷積神經(jīng)網(wǎng)絡(luò)介紹

    一個是圖像分類:如貓臉識別等;一個是目標檢測:如無人駕駛技術(shù)中的各種交通信號檢測技術(shù)

    1. 卷積操作及過濾器/卷積核的概念

    如上圖所示:最左側(cè)矩陣是一個灰度圖像,中間是一個3*3的小矩陣,稱為“卷積核”或“過濾器”。

    卷積:先把卷積核放到灰度圖像左上角(綠色框),蓋住灰度圖像上一個3*3的矩陣區(qū)域,然后9對對應(yīng)的元素相乘,然后求和(得到0),然后把卷積核逐漸移動一行一行的“掃描”,最終得到最右側(cè)矩陣。上述操作叫做“卷積”,最右側(cè)矩陣是卷積的輸出。

    2. 垂直邊緣檢測

    仍以上圖為例,可以看到3*3的卷積核具體的數(shù)值構(gòu)成為“左邊一列1,中間一列0,右邊一列-1”,這種卷積核在“掃描”灰度圖像時,可以檢測到灰度圖像的垂直邊緣。分析如下:

    1)假設(shè)正在掃描的灰度區(qū)域沒有垂直邊緣,意味著區(qū)域內(nèi)的值在左右方向上分布差不多,與卷積核做完運算后,左邊的乘1,右邊的乘-1,相加正好有一定的抵消作用,其實計算出來的結(jié)果會接近0。即:卷積結(jié)果接近0代表沒有邊緣。

    2)有垂直邊緣分為兩種情況:目標區(qū)域“左邊值較大,右邊值較小” 或“左邊值較小,右邊值較大”。前一種情況在卷積操作后會得到一個較大的正值,后一種情況卷積操作后會得到一個較大的負值。

    可以看出,較大的正值代表著目標區(qū)域的變化趨勢與卷積核相同,即檢測到的是與卷積核相同的邊緣,而較大的負值代表目標區(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),意味著如果一次次進行卷積,那么結(jié)果的尺寸會越來越小

    另外,顯然輸入圖像邊緣的像素被使用的較少(最邊緣的像素僅被使用一次),這顯然會造成信息的丟失。

    2. 如何進行padding

    非常簡單:把輸入圖像的四周補充p = (f-1)/2 圈的0,這樣輸入的圖像尺寸變成了(n+2p)*(n+2p),因此卷積后的大小變成了(n+2p -f + 1)*(n+2p -f + 1)=n*n,即與原始的圖像有了相同的大小,且原始圖像邊緣的像素也被較多的利用到。

    3. 幾點補充

    (1)卷積核的尺寸設(shè)置為 奇數(shù) :因為① 這樣(f-1)/2就恰好是整數(shù)了,方便進行padding,② 有中心像素,便于表征卷積核的位置,等。

    (2)根據(jù)是否進行padding,分為 普通卷積(valid) 和 同尺寸卷積(same)

    1. 步長概念

    在上文中講到卷積,即使用一個卷積核對輸入圖像進行“掃描”并進行相應(yīng)計算時,提到這個“掃描”是逐個像素逐個像素的邁進的。但是,并不一定非得這樣,也可以每次跨越兩個或更多個像素,這就是“步長”的概念,一般用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)性”的計算,可以看出,若目標區(qū)域與卷積核有類似的分布,則會計算出較大的正值(正相關(guān)),若有相反的分布,則會計算出較大的負值(負相關(guān)),若沒什么關(guān)系,則會計算出接近0的值(不相關(guān))。卷積操作的確很像一種相關(guān)性的計算。

    1. RGB圖像的數(shù)學(xué)構(gòu)成

    灰度圖像是一個n*n的二維矩陣,彩色圖像則是n*n*3 的三維矩陣,最外圍的三個維度分別代表了RGB三原色的值,其中數(shù)字“3”在卷積神經(jīng)網(wǎng)絡(luò)中被稱為通道數(shù)或信道數(shù)

    2. 對RGB圖像進行卷積

    在對灰度圖像進行卷積時,使用的是f*f的二維卷積核。在對RGB圖像進行卷積時,則卷積核的維度也+1,變成了f*f*3。一次卷積的結(jié)果仍然是把所有的值加起來輸出一個值。即: 一個三維的圖像,和一個三維的卷積核,在進行完卷積操作后,輸出的是一個二維的矩陣(如上圖) 。

    3. 當(dāng)使用多個卷積核時的輸出

    如上圖所示,可以使用多個卷積核(一個亮黃色,一個屎黃色)。根據(jù)前文描述,一個立體的卷積核在一個立體的矩陣上掃描完,結(jié)果是一個二維的。但當(dāng)使用多個卷積核時,則輸出了多個二維矩陣,這些二維矩陣沿著第三個維度排列到一起,使得結(jié)果重新變成了三維。此時,第三個維度的尺寸,反應(yīng)的是卷積核數(shù),也就是說 卷積核數(shù)就是信道數(shù) 。直觀理解,每一個卷積核代表著檢測了某一種特征,多個卷積核就是同時檢測了多種特征,傳遞了多種信息。

    1. 一個卷積層的數(shù)據(jù)的基本流

    如上圖所示,由于卷積核本身就是一堆待學(xué)參數(shù)w,所以卷積操作本質(zhì)還是“加權(quán)求和”,之后會加入偏置值,然后進行非線性變換,然后輸出(到下一層),可見還是那一套。

    需要提一下的是,卷積的輸入不一定是原始圖像構(gòu)成的矩陣,還有可能是上一個卷積的結(jié)果。原始圖像是彩色的,有多個通道。卷積時可以用多個卷積核,最終產(chǎn)生的結(jié)果也是立體的。因此原始的輸入與中間卷積層的輸出,在數(shù)學(xué)形式上是統(tǒng)一的。因此可以“輸入->卷積層->卷積層->...”這樣操作。

    2. 卷積層的參數(shù)規(guī)模

    一個卷積層總的參數(shù)規(guī)模(包括w,不包括b)為: ,即:卷積核的大小的平方*上層輸出的通道數(shù))*本層所用的卷積核數(shù)。與上層輸入的大小無關(guān)(但與通道數(shù)有關(guān))

    3. 一個卷積層涉及到的超參

    卷積核的大小、是否padding、步長、卷積核數(shù)。

    1. 一個示例

    上圖為一個簡單的卷積神經(jīng)網(wǎng)絡(luò)示例: 一層一層的卷積,最后把所有的元素展開成一個一維向量,然后加一個全連接層。

    2. 注意以下幾點:

    1⃣️ 實際上CNN會有卷積層、池化層、全連接層,而非僅有卷積和全連接;

    2⃣️ 從數(shù)據(jù)的構(gòu)成形式上看,按照網(wǎng)絡(luò)從前往后的順序,圖片尺寸不斷減小,信道數(shù)量不斷增加。一般遵從這個趨勢。

    1. 池化

    如上圖所示,假設(shè)輸入是一個4*4的矩陣,現(xiàn)在我們把它分割成2*2四個子矩陣(或者說使用一個2*2的核以2為步長掃描矩陣),對四個子區(qū)域分別求最大值,最終得到一個值為9、2、6、3的2*2的矩陣輸出。這種操作就叫池化,具體為最大值池化。

    2. 池化的作用

    1⃣️ 一般來說,較大的值往往代表學(xué)到了一個重要或典型的特征,把原始輸入以某種方式濾除掉一些不重要的值,只保留一些較大的值,相當(dāng)于 強化了一些重要信息的表達 。2⃣️ 降低圖片的尺寸,可以節(jié)省空間、加速運算等。

    3. 池化的特點

    并沒有需要學(xué)習(xí)的參數(shù)(w、b之類的),也因此“池化層”一般并不被稱為單獨的一層。在卷積神經(jīng)網(wǎng)絡(luò)中,通常把一個卷積層+一個池化層的組合叫一層。

    4. 池化的超參數(shù)及經(jīng)驗值

    池化層沒有要學(xué)習(xí)的參數(shù),只有核心的兩個超參:池化核的大小、池化步長。此外還有池化所用的reduce操作:最大或者平均(沒有其它選項)。

    一般把池化核的大小設(shè)置為3或2,步長為2。注意:步長為2意味著把圖片減小到原來的一半。

    reduce操作最常用最大池化,偶爾用平均池化,不會用其它操作。

    上圖為一個典型的卷積神經(jīng)網(wǎng)絡(luò)示例,描述如下:

    輸入層 :彩色的手寫數(shù)字圖片,數(shù)學(xué)構(gòu)成為32*32*3的矩陣,其中3為通道數(shù)。

    Layer 1-卷積層 :1)使用6個5*5*3的卷積核,以步長為1對輸入層進行卷積,輸出28*28*6的矩陣,2)然后使用2*2的最大池化,步長為2,最終輸出14*14*6的矩陣。其中14為圖片尺寸,6為信道數(shù)。

    Layer2-卷積層 :1)使用16個5*5*3的卷積核以步長1對上層輸出進行卷積,輸出10*10*16的矩陣,2)然后使用2*2的最大池化,步長為2,最終輸出5*5*16的矩陣。

    Layer3-全連接層: 把上層輸出的5*5*16矩陣展開成1*400的一維向量,以120*400的權(quán)重矩陣送入本層120個神經(jīng)元,激活后輸出。

    Layer4-全連接層: 120->84,激活后輸出

    輸出層 :84 -> 10,然后softmax后輸出。

    1. 參數(shù)少

    假如原始圖片尺寸為100*100*3,假設(shè)使用全連接,即使第二層僅用100個神經(jīng)元,那也已經(jīng)產(chǎn)生了100*100*3*100 = 300w個參數(shù),難以想象。

    假設(shè)使用卷積層,使用10個10*10*3的卷積核,那就是只有3000個參數(shù),而能輸出的矩陣規(guī)模是91*91*10=81000

    2. 參數(shù)少的原因

    1)稀疏連接:卷積核掃描矩陣產(chǎn)生輸出,這個過程就從“神經(jīng)元連接”的角度看,輸入的左上角只連著輸出的左上角,右上角只連右上角,而非“全連接”,參數(shù)就會少很多。2)參數(shù)共享:這么稀疏的連接,還是使用了同一套參數(shù),進一步減少了參數(shù)的量。

    3. 參數(shù)共享的其它好處

    如果圖片上有一只貓,那么不管這個貓在圖片的什么位置,都不改變“這是一張貓的照片”。使用參數(shù)共享時,相當(dāng)于用同樣的特征提取作用到整個圖片的各個區(qū)域,適應(yī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īng)網(wǎng)絡(luò) 是一組連接的 輸入/輸出單元 ,其中每個連接都與一個 權(quán) 相關(guān)聯(lián)。在學(xué)習(xí)階段,通過調(diào)整權(quán)值,使得神經(jīng)網(wǎng)絡(luò)的預(yù)測準確性逐步提高。由于單元之間的連接,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)又稱 連接者學(xué)習(xí)。

    神經(jīng)網(wǎng)絡(luò)是以模擬人腦神經(jīng)元的數(shù)學(xué)模型為基礎(chǔ)而建立的,它由一系列神經(jīng)元組成,單元之間彼此連接。從信息處理角度看,神經(jīng)元可以看作是一個多輸入單輸出的信息處理單元,根據(jù)神經(jīng)元的特性和功能,可以把神經(jīng)元抽象成一個簡單的數(shù)學(xué)模型。

    神經(jīng)網(wǎng)絡(luò)有三個要素: 拓撲結(jié)構(gòu)、連接方式、學(xué)習(xí)規(guī)則

    神經(jīng)網(wǎng)絡(luò)的拓撲結(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í)時收斂的速度快,但準確度低。

    神經(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)部的連接,連接的強度用權(quán)來表示。

    根據(jù)層次之間的連接方式,分為:

    1)前饋式網(wǎng)絡(luò):連接是單向的,上層單元的輸出是下層單元的輸入,如反向傳播網(wǎng)絡(luò),Kohonen網(wǎng)絡(luò)

    2)反饋式網(wǎng)絡(luò):除了單項的連接外,還把最后一層單元的輸出作為第一層單元的輸入,如Hopfield網(wǎng)絡(luò)

    根據(jù)連接的范圍,分為:

    1)全連接神經(jīng)網(wǎng)絡(luò):每個單元和相鄰層上的所有單元相連

    2)局部連接網(wǎng)絡(luò):每個單元只和相鄰層上的部分單元相連

    神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)

    根據(jù)學(xué)習(xí)方法分:

    感知器:有監(jiān)督的學(xué)習(xí)方法,訓(xùn)練樣本的類別是已知的,并在學(xué)習(xí)的過程中指導(dǎo)模型的訓(xùn)練

    認知器:無監(jiān)督的學(xué)習(xí)方法,訓(xùn)練樣本類別未知,各單元通過競爭學(xué)習(xí)。

    根據(jù)學(xué)習(xí)時間分:

    離線網(wǎng)絡(luò):學(xué)習(xí)過程和使用過程是獨立的

    在線網(wǎng)絡(luò):學(xué)習(xí)過程和使用過程是同時進行的

    根據(jù)學(xué)習(xí)規(guī)則分:

    相關(guān)學(xué)習(xí)網(wǎng)絡(luò):根據(jù)連接間的激活水平改變權(quán)系數(shù)

    糾錯學(xué)習(xí)網(wǎng)絡(luò):根據(jù)輸出單元的外部反饋改變權(quán)系數(shù)

    自組織學(xué)習(xí)網(wǎng)絡(luò):對輸入進行自適應(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)多層,采用最小均方差的糾錯學(xué)習(xí)規(guī)則,常用于語言識別和分類等問題

    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ò)上運用各種機器學(xué)習(xí)算法解決圖像,文本等各種問題的算法集合。深度學(xué)習(xí)從大類上可以歸入神經(jīng)網(wǎng)絡(luò),不過在具體實現(xiàn)上有許多變化。

    深度學(xué)習(xí)的核心是特征學(xué)習(xí),旨在通過分層網(wǎng)絡(luò)獲取分層次的特征信息,從而解決以往需要人工設(shè)計特征的重要難題。

    Machine Learning vs. Deep Learning 

    神經(jīng)網(wǎng)絡(luò)(主要是感知器)經(jīng)常用于 分類

    神經(jīng)網(wǎng)絡(luò)的分類知識體現(xiàn)在網(wǎng)絡(luò)連接上,被隱式地存儲在連接的權(quán)值中。

    神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)就是通過迭代算法,對權(quán)值逐步修改的優(yōu)化過程,學(xué)習(xí)的目標就是通過改變權(quán)值使訓(xùn)練集的樣本都能被正確分類。

    神經(jīng)網(wǎng)絡(luò)特別適用于下列情況的分類問題:

    1) 數(shù)據(jù)量比較小,缺少足夠的樣本建立模型

    2) 數(shù)據(jù)的結(jié)構(gòu)難以用傳統(tǒng)的統(tǒng)計方法來描述

    3) 分類模型難以表示為傳統(tǒng)的統(tǒng)計模型

    缺點:

    1) 需要很長的訓(xùn)練時間,因而對于有足夠長訓(xùn)練時間的應(yīng)用更合適。

    2) 需要大量的參數(shù),這些通常主要靠經(jīng)驗確定,如網(wǎng)絡(luò)拓撲或“結(jié)構(gòu)”。

    3)  可解釋性差 。該特點使得神經(jīng)網(wǎng)絡(luò)在數(shù)據(jù)挖掘的初期并不看好。

    優(yōu)點:

    1) 分類的準確度高

    2)并行分布處理能力強

    3)分布存儲及學(xué)習(xí)能力高

    4)對噪音數(shù)據(jù)有很強的魯棒性和容錯能力

    最流行的基于神經(jīng)網(wǎng)絡(luò)的分類算法是80年代提出的 后向傳播算法 。后向傳播算法在多路前饋神經(jīng)網(wǎng)絡(luò)上學(xué)習(xí)。 

    定義網(wǎng)絡(luò)拓撲

    在開始訓(xùn)練之前,用戶必須說明輸入層的單元數(shù)、隱藏層數(shù)(如果多于一層)、每一隱藏層的單元數(shù)和輸出層的單元數(shù),以確定網(wǎng)絡(luò)拓撲。

    對訓(xùn)練樣本中每個屬性的值進行規(guī)格化將有助于加快學(xué)習(xí)過程。通常,對輸入值規(guī)格化,使得它們落入0.0和1.0之間。

    離散值屬性可以重新編碼,使得每個域值一個輸入單元。例如,如果屬性A的定義域為(a0,a1,a2),則可以分配三個輸入單元表示A。即,我們可以用I0 ,I1 ,I2作為輸入單元。每個單元初始化為0。如果A = a0,則I0置為1;如果A = a1,I1置1;如此下去。

    一個輸出單元可以用來表示兩個類(值1代表一個類,而值0代表另一個)。如果多于兩個類,則每個類使用一個輸出單元。

    隱藏層單元數(shù)設(shè)多少個“最好” ,沒有明確的規(guī)則。

    網(wǎng)絡(luò)設(shè)計是一個實驗過程,并可能影響準確性。權(quán)的初值也可能影響準確性。如果某個經(jīng)過訓(xùn)練的網(wǎng)絡(luò)的準確率太低,則通常需要采用不同的網(wǎng)絡(luò)拓撲或使用不同的初始權(quán)值,重復(fù)進行訓(xùn)練。

    后向傳播算法學(xué)習(xí)過程:

    迭代地處理一組訓(xùn)練樣本,將每個樣本的網(wǎng)絡(luò)預(yù)測與實際的類標號比較。

    每次迭代后,修改權(quán)值,使得網(wǎng)絡(luò)預(yù)測和實際類之間的均方差最小。

    這種修改“后向”進行。即,由輸出層,經(jīng)由每個隱藏層,到第一個隱藏層(因此稱作后向傳播)。盡管不能保證,一般地,權(quán)將最終收斂,學(xué)習(xí)過程停止。

    算法終止條件:訓(xùn)練集中被正確分類的樣本達到一定的比例,或者權(quán)系數(shù)趨近穩(wěn)定。

    后向傳播算法分為如下幾步:

    1) 初始化權(quán)

    網(wǎng)絡(luò)的權(quán)通常被初始化為很小的隨機數(shù)(例如,范圍從-1.0到1.0,或從-0.5到0.5)。

    每個單元都設(shè)有一個偏置(bias),偏置也被初始化為小隨機數(shù)。

    2) 向前傳播輸入

    對于每一個樣本X,重復(fù)下面兩步:

    向前傳播輸入,向后傳播誤差

    計算各層每個單元的輸入和輸出。輸入層:輸出=輸入=樣本X的屬性;即,對于單元j,Oj = Ij = Xj。隱藏層和輸出層:輸入=前一層的輸出的線性組合,即,對于單元j, Ij =wij Oi + θj,輸出=

    3) 向后傳播誤差

    計算各層每個單元的誤差。

    輸出層單元j,誤差:

    Oj是單元j的實際輸出,而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í)的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。1981 年的諾貝爾醫(yī)學(xué)獎,頒發(fā)給了 David Hubel(出生于加拿大的美國神經(jīng)生物學(xué)家) 和Torsten Wiesel,以及Roger Sperry。前兩位的主要貢獻,是“發(fā)現(xiàn)了視覺系統(tǒng)的信息處理”, 可視皮層是分級的 。

    人類的視覺原理如下:從原始信號攝入開始(瞳孔攝入像素Pixels),接著做初步處理(大腦皮層某些細胞發(fā)現(xiàn)邊緣和方向),然后抽象(大腦判定,眼前的物體的形狀,是圓形的),然后進一步抽象(大腦進一步判定該物體是只氣球)。

    對于不同的物體,人類視覺也是通過這樣逐層分級,來進行認知的:

    在最底層特征基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特征(輪子、眼睛、軀干等),到最上層,不同的高級特征最終組合成相應(yīng)的圖像,從而能夠讓人類準確的區(qū)分不同的物體。

    可以很自然的想到:可以不可以模仿人類大腦的這個特點,構(gòu)造多層的神經(jīng)網(wǎng)絡(luò),較低層的識別初級的圖像特征,若干底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學(xué)習(xí)算法(包括CNN)的靈感來源。

    卷積神經(jīng)網(wǎng)絡(luò)是一種多層神經(jīng)網(wǎng)絡(luò),擅長處理圖像特別是大圖像的相關(guān)機器學(xué)習(xí)問題。卷積網(wǎng)絡(luò)通過一系列方法,成功將數(shù)據(jù)量龐大的圖像識別問題不斷降維,最終使其能夠被訓(xùn)練。

    CNN最早由Yann LeCun提出并應(yīng)用在手寫字體識別上。LeCun提出的網(wǎng)絡(luò)稱為LeNet,其網(wǎng)絡(luò)結(jié)構(gòu)如下:

    這是一個最典型的卷積網(wǎng)絡(luò),由 卷積層、池化層、全連接層 組成。其中卷積層與池化層配合,組成多個卷積組,逐層提取特征,最終通過若干個全連接層完成分類。

    CNN通過卷積來模擬特征區(qū)分,并且通過卷積的權(quán)值共享及池化,來降低網(wǎng)絡(luò)參數(shù)的數(shù)量級,最后通過傳統(tǒng)神經(jīng)網(wǎng)絡(luò)完成分類等任務(wù)。

    降低參數(shù)量級:如果使用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)方式,對一張圖片進行分類,那么,把圖片的每個像素都連接到隱藏層節(jié)點上,對于一張1000x1000像素的圖片,如果有1M隱藏層單元,一共有10^12個參數(shù),這顯然是不能接受的。

    但是在CNN里,可以大大減少參數(shù)個數(shù),基于以下兩個假設(shè):

    1)最底層特征都是局部性的,也就是說,用10x10這樣大小的過濾器就能表示邊緣等底層特征

    2)圖像上不同小片段,以及不同圖像上的小片段的特征是類似的,也就是說,能用同樣的一組分類器來描述各種各樣不同的圖像

    基于以上兩個假設(shè),就能把第一層網(wǎng)絡(luò)結(jié)構(gòu)簡化

    用100個10x10的小過濾器,就能夠描述整幅圖片上的底層特征。

    卷積運算的定義如下圖所示:

    如上圖所示,一個5x5的圖像,用一個3x3的 卷積核 :

       101

       010

       101

    來對圖像進行卷積操作(可以理解為有一個滑動窗口,把卷積核與對應(yīng)的圖像像素做乘積然后求和),得到了3x3的卷積結(jié)果。

    這個過程可以理解為使用一個過濾器(卷積核)來過濾圖像的各個小區(qū)域,從而得到這些小區(qū)域的特征值。在實際訓(xùn)練過程中, 卷積核的值是在學(xué)習(xí)過程中學(xué)到的。

    在具體應(yīng)用中,往往有多個卷積核,可以認為, 每個卷積核代表了一種圖像模式 ,如果某個圖像塊與此卷積核卷積出的值大,則認為此圖像塊十分接近于此卷積核。如果設(shè)計了6個卷積核,可以理解為這個圖像上有6種底層紋理模式,也就是用6種基礎(chǔ)模式就能描繪出一副圖像。以下就是24種不同的卷積核的示例:

    池化 的過程如下圖所示:

    可以看到,原始圖片是20x20的,對其進行采樣,采樣窗口為10x10,最終將其采樣成為一個2x2大小的特征圖。

    之所以這么做,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較小),所以為了降低數(shù)據(jù)維度,就進行采樣。

    即使減少了許多數(shù)據(jù),特征的統(tǒng)計屬性仍能夠描述圖像,而且由于降低了數(shù)據(jù)維度,有效地避免了過擬合。

    在實際應(yīng)用中,分為最大值采樣(Max-Pooling)與平均值采樣(Mean-Pooling)。

    LeNet網(wǎng)絡(luò)結(jié)構(gòu):

    注意,上圖中S2與C3的連接方式并不是全連接,而是部分連接。最后,通過全連接層C5、F6得到10個輸出,對應(yīng)10個數(shù)字的概率。

    卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)類似,也是參照了反向傳播算法

    第一階段,向前傳播階段:

    a)從樣本集中取一個樣本(X,Yp),將X輸入網(wǎng)絡(luò);

    b)計算相應(yīng)的實際輸出Op

    第二階段,向后傳播階段

    a)計算實際輸出Op與相應(yīng)的理想輸出Yp的差;

    b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣。

    三、卷積神經(jīng)網(wǎng)絡(luò)主要做什么用的?

    卷積網(wǎng)絡(luò)的特點主要是卷積核參數(shù)共享,池化操作。

    參數(shù)共享的話的話是因為像圖片等結(jié)構(gòu)化的數(shù)據(jù)在不同的區(qū)域可能會存在相同的特征,那么就可以把卷積核作為detector,每一層detect不同的特征,但是同層的核是在圖片的不同地方找相同的特征。然后把底層的特征組合傳給后層,再在后層對特征整合(一般深度網(wǎng)絡(luò)是說不清楚后面的網(wǎng)絡(luò)層得到了什么特征的)。

    而池化主要是因為在某些任務(wù)中降采樣并不會影響結(jié)果。所以可以大大減少參數(shù)量,另外,池化后在之前同樣大小的區(qū)域就可以包含更多的信息了。

    綜上,所有有這種特征的數(shù)據(jù)都可以用卷積網(wǎng)絡(luò)來處理。有卷積做視頻的,有卷積做文本處理的(當(dāng)然這兩者由于是序列信號,天然更適合用lstm處理)

    另外,卷積網(wǎng)絡(luò)只是個工具,看你怎么使用它,有必要的話你可以隨意組合池化和卷積的順序,可以改變網(wǎng)絡(luò)結(jié)構(gòu)來達到自己所需目的的,不必太被既定框架束縛。

    四、卷積神經(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)的機制而提出的。感受野主要是指聽覺系統(tǒng)、本體感覺系統(tǒng)和視覺系統(tǒng)中神經(jīng)元的一些性質(zhì)。比如在視覺神經(jīng)系統(tǒng)中,一個神經(jīng)元的感受野是指視網(wǎng)膜上的特定區(qū)域,只有這個區(qū)域內(nèi)的刺激才能夠激活該神經(jīng)元。

    卷積神經(jīng)網(wǎng)絡(luò)又是怎樣解決這個問題的呢?主要有三個思路:

    在使用CNN提取特征時,到底使用哪一層的輸出作為最后的特征呢?

    答:倒數(shù)第二個全連接層的輸出才是最后我們要提取的特征,也就是最后一個全連接層的輸入才是我們需要的特征。

    全連接層會忽視形狀。卷積層可以保持形狀不變。當(dāng)輸入數(shù)據(jù)是圖像時,卷積層會以3維數(shù)據(jù)的形式接收輸入數(shù)據(jù),并同樣以3維數(shù)據(jù)的形式輸出至下一層。因此,在CNN中,可以(有可能)正確理解圖像等具有形狀的數(shù)據(jù)。

    CNN中,有時將 卷積層的輸入輸出數(shù)據(jù)稱為特征圖(feature map) 。其中, 卷積層的輸入數(shù)據(jù)稱為輸入特征圖(input feature map) , 輸出數(shù)據(jù)稱為輸出特征圖(output feature map)。

    卷積層進行的處理就是 卷積運算 。卷積運算相當(dāng)于圖像處理中的“濾波器運算”。

    濾波器相當(dāng)于權(quán)重或者參數(shù),濾波器數(shù)值都是學(xué)習(xí)出來的。 卷積層實現(xiàn)的是垂直邊緣檢測 。

    邊緣檢測實際就是將圖像由亮到暗進行區(qū)分,即邊緣的過渡(edge transitions)。

    卷積層對應(yīng)到全連接層,左上角經(jīng)過濾波器,得到的3,相當(dāng)于一個神經(jīng)元輸出為3.然后相當(dāng)于,我們把輸入矩陣拉直為36個數(shù)據(jù),但是我們只對其中的9個數(shù)據(jù)賦予了權(quán)重。

    步幅為1 ,移動一個,得到一個1,相當(dāng)于另一個神經(jīng)單元的輸出是1.

    并且使用的是同一個濾波器,對應(yīng)到全連接層,就是權(quán)值共享。

    在這個例子中,輸入數(shù)據(jù)是有高長方向的形狀的數(shù)據(jù),濾波器也一樣,有高長方向上的維度。假設(shè)用(height, width)表示數(shù)據(jù)和濾波器的形狀,則在本例中,輸入大小是(4, 4),濾波器大小是(3, 3),輸出大小是(2, 2)。另外,有的文獻中也會用“核”這個詞來表示這里所說的“濾波器”。

    對于輸入數(shù)據(jù),卷積運算以一定間隔滑動濾波器的窗口并應(yīng)用。這里所說的窗口是指圖7-4中灰色的3 × 3的部分。如圖7-4所示,將各個位置上濾

    波器的元素和輸入的對應(yīng)元素相乘,然后再求和(有時將這個計算稱為乘積累加運算)。然后,將這個結(jié)果保存到輸出的對應(yīng)位置。將這個過程在所有位置都進行一遍,就可以得到卷積運算的輸出。

    CNN中,濾波器的參數(shù)就對應(yīng)之前的權(quán)重。并且,CNN中也存在偏置。

    在進行卷積層的處理之前,有時要向輸入數(shù)據(jù)的周圍填入固定的數(shù)據(jù)(比如0等),這稱為填充(padding),是卷積運算中經(jīng)常會用到的處理。比如,在圖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)輸出大小無法除盡時(結(jié)果是小數(shù)時),需要采取報錯等對策。順便說一下,根據(jù)深度學(xué)習(xí)的框架的不同,當(dāng)值無法除盡時,有時會向最接近的整數(shù)四舍五入,不進行報錯而繼續(xù)運行。

    之前的卷積運算的例子都是以有高、長方向的2維形狀為對象的。但是,圖像是3維數(shù)據(jù),除了高、長方向之外,還需要處理通道方向。

    在3維數(shù)據(jù)的卷積運算中,輸入數(shù)據(jù)和濾波器的通道數(shù)要設(shè)為相同的值。

    因此,作為4維數(shù)據(jù),濾波器的權(quán)重數(shù)據(jù)要按(output_channel, input_channel, height, width)的順序書寫。比如,通道數(shù)為3、大小為5 × 5的濾

    波器有20個時,可以寫成(20, 3, 5, 5)。

    對于每個通道,均使用自己的權(quán)值矩陣進行處理,輸出時將多個通道所輸出的值進行加和即可。

    卷積運算的批處理,需要將在各層間傳遞的數(shù)據(jù)保存為4維數(shù)據(jù)。具體地講,就是按(batch_num, channel, height, width)的順序保存數(shù)據(jù)。

    這里需要注意的是,網(wǎng)絡(luò)間傳遞的是4維數(shù)據(jù),對這N個數(shù)據(jù)進行了卷積運算。也就是說,批處理將N次的處理匯總成了1次進行。

    池化是縮小高、長方向上的空間的運算。比如,如圖7-14所示,進行將2 × 2的區(qū)域集約成1個元素的處理,縮小空間大小。

    圖7-14的例子是按步幅2進行2 × 2的Max池化時的處理順序?!癕ax池化”是獲取最大值的運算,“2 × 2”表示目標區(qū)域的大小。如圖所示,從

    2 × 2的區(qū)域中取出最大的元素。此外,這個例子中將步幅設(shè)為了2,所以2 × 2的窗口的移動間隔為2個元素。另外,一般來說,池化的窗口大小會和步幅設(shè)定成相同的值。比如,3 × 3的窗口的步幅會設(shè)為3,4 × 4的窗口的步幅會設(shè)為4等。

    除了Max池化之外,還有Average池化等。相對于Max池化是從目標區(qū)域中取出最大值,Average池化則是計算目標區(qū)域的平均值。 在圖像識別領(lǐng)域,主要使用Max池化。 因此,本書中說到“池化層”時,指的是Max池化。

    池化層的特征

    池化層有以下特征。

    沒有要學(xué)習(xí)的參數(shù)

    池化層和卷積層不同,沒有要學(xué)習(xí)的參數(shù)。池化只是從目標區(qū)域中取最大值(或者平均值),所以不存在要學(xué)習(xí)的參數(shù)。

    通道數(shù)不發(fā)生變化

    經(jīng)過池化運算,輸入數(shù)據(jù)和輸出數(shù)據(jù)的通道數(shù)不會發(fā)生變化。如圖7-15所示,計算是按通道獨立進行的。

    對微小的位置變化具有魯棒性(健壯)

    ​ 輸入數(shù)據(jù)發(fā)生微小偏差時,池化仍會返回相同的結(jié)果。因此,池化對輸入數(shù)據(jù)的微小偏差具有魯棒性。比如,3 × 3的池化的情況下,如圖

    ​ 7-16所示,池化會吸收輸入數(shù)據(jù)的偏差(根據(jù)數(shù)據(jù)的不同,結(jié)果有可能不一致)。

    經(jīng)過卷積層和池化層之后,進行Flatten,然后丟到全連接前向傳播神經(jīng)網(wǎng)絡(luò)。

    (找到一張圖片使得某個filter響應(yīng)最大。相當(dāng)于filter固定,未知的是輸入的圖片。)未知的是輸入的圖片???

    k是第k個filter,x是我們要找的參數(shù)。?這里我不是很明白。我得理解應(yīng)該是去尋找最具有代表性的特征。

    使用im2col來實現(xiàn)卷積層

    卷積層的參數(shù)是需要學(xué)習(xí)的,但是池化層沒有參數(shù)需要學(xué)習(xí)。全連接層的參數(shù)需要訓(xùn)練得到。

    池化層不需要訓(xùn)練參數(shù)。全連接層的參數(shù)最多。卷積核的個數(shù)逐漸增多。激活層的size,逐漸減少。

    最大池化只是計算神經(jīng)網(wǎng)絡(luò)某一層的靜態(tài)屬性,沒有什么需要學(xué)習(xí)的,它只是一個靜態(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 ― 初始化時權(quán)重的標準差

    LeNet

    LeNet在1998年被提出,是進行手寫數(shù)字識別的網(wǎng)絡(luò)。如圖7-27所示,它有連續(xù)的卷積層和池化層(正確地講,是只“抽選元素”的子采樣層),最后經(jīng)全連接層輸出結(jié)果。

    和“現(xiàn)在的CNN”相比,LeNet有幾個不同點。第一個不同點在于激活函數(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疊有多個卷積層和池化層,最后經(jīng)由全連接層輸出結(jié)果。雖然結(jié)構(gòu)上AlexNet和LeNet沒有大的不同,但有以下幾點差異。

    • 激活函數(shù)使用ReLU。

    • 使用進行局部正規(guī)化的LRN(Local Response Normalization)層。

    • 使用Dropout

    TF2.0實現(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 時,會將周圍缺少的部分使用 0 補齊,使得輸出的矩陣大小和輸入一致。

    以上就是關(guān)于圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。


    推薦閱讀:

    圖卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用(圖卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用疫情)

    工銀商戶之家怎么申請(工商銀行卡線上申請)

    抖音小店男裝代運營怎么做品牌推廣(有哪些推廣方法)