神經網路 卷積神經網路

2021-10-08 08:25:16 字數 3187 閱讀 3786

1.卷積神經網路概覽

來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條(都是30),表示是由亮向暗過渡,下面這個圖左邊暗右邊亮,學到的邊界是暗的(權重-30),表示由暗向亮過渡。

上面為了理解卷積到底是如何進行邊緣識別的,在神經網路中,通過將卷積設成引數,反向傳播演算法來進行更新,從而學到這個卷積核,不僅僅可以識別出垂直邊緣、水平邊緣,甚至可以學到70度,45度邊緣等。

為了防止邊緣畫素資訊丟失,可以對輸入矩陣進行填充, 設原始輸入維度n,卷積大小f,步長s,那麼卷積操作後長度為:向上取整(n-f+1/s);填充邊緣長度為p,那麼卷積操作後長度為:向上取整(n+2p-f+1/s);所以可以根據想要的卷積後大小求出填充邊緣長度p。

為什麼卷積通常是奇數長度,只能使用不對稱填充,比如當步長為1,讓輸入和輸出大小相等,p=f-1/2,如果f是偶數,左右兩邊肯定需要一邊多一邊少,奇數卷積,會有乙個中心點,直接指出卷積的位置,

tensorflow中實現卷積前向傳播的函式是tf.nn.conv2d(input,卷積引數,步長,padding='same/valid'表示填充0/不填充)。

識別彩色,輸入的畫素是rgb三個維度的,這裡引入通道的概念,卷積核的通道個數跟輸入通道個數必須一致,這個卷積核的結果是把三個通道的對應乘積求和,這裡淺黃色是乙個卷積核,與輸入相乘後得到27個數,27個數想加得到輸出的乙個點。有多少個卷積核,就是輸出的深度。引數個數就是(3*3*3+1)*2,其中1是每個卷積核有乙個偏置項,2是兩個卷積核。

卷積層連著卷積層也可以做乙個卷積神經網路,如果目標是二分類就用logistic,如果是多分類就用softmax,作用在最後一層的輸出節點上,這裡是7x7x40,共1960個數。下面看看為什麼要有池化層~

池化層,最大池化,與卷積一樣,順次移動池化層矩陣,落入池化層矩陣中的數字取乙個max,最大值可能提取的特徵是乙個邊界,中的乙隻眼睛,就是比較重要的特徵。在卷積核裡提取的特徵,保留其最大值,池化層為什麼不補0,自問一句,卷積層補0是因為邊緣的點被計算的次數較少,防止漏掉邊緣特徵,所以補0,池化層提取最大的特徵值,都在其中了,不會丟失資訊,不需要補0?但是還是會存在邊緣被計算的次數少呀。每個通道都單獨執行池化,3個通道,池化層的深度也是3,池化層引數有,池化視窗大小,步長,常用的是2*2的,相當於長度和寬度各縮小一半,池化層沒有要學習的引數,反向傳播也沒有什麼要更新的,是乙個靜態的層,就長度寬度和步長需要手動設定或者是交叉驗證。

lenet-5網路:輸入32x32x3,通過6個5*5*3卷積核,產生28x28x6輸出,通過2x2最大池化層,得到14x14x6,然後進入下一層,通過16個10x10x6卷積核,然後通過2x2最大池化層,得到5x5x16,也就是400個輸出,然後是兩層全連線,120和84個節點,最後套一層softmax。高度和寬度也就是視窗大小是不斷縮小的,通道數量不斷增加。

卷積層相對於全連線層有啥優勢?引數共享和稀疏連線,距離輸入32x32x3(3072),通過6個5*5*3卷積核(450個引數),產生28x28x6(4704)輸出,如果用全連線,是3072*4704個引數。引數共享,比如乙個垂直邊界檢測的卷積核,適用與的任何乙個子片段,稀疏連線,是指輸出某乙個值只依賴於卷積核視窗裡的元素,其餘元素無關,此外卷積核使得的特徵平移後不變,比如眼睛在左上,移到中間,還是會被卷積核提取出來,原因就是分塊提取區域性特徵。

2.相關問題

(1)卷積的作用

一定大小的卷積核用來提取區域性特徵,比如邊緣濾波,卷積中的引數是通過網路訓練學習出來的,因為卷積核可以包含橫向、縱向濾波,甚至45度70度等傾斜的濾波,多個濾波器,還可以提取上的顏色、邊緣等特徵,再通過非線性啟用、池化,一層層提取特徵。卷積相對於全連線主要起到了,可以減少引數、提公升泛化能力,減少引數通過引數共享和稀疏連線,卷積核可以在上多個位置提取特徵使用即為引數共享,稀疏連線是指卷積核計算後輸出的資料點,只跟上一層部分神經元連線。全連線層沒有考慮畫素位置之間的資訊,影象識別中離得近的畫素點聯絡比較緊密,離得遠的聯絡就很小,全連線表示的意思是所有畫素點都同等對待,那麼網路學習之後可能會發現大部分權重值很小,只有少部分神經元權重很大,那麼耗費大量時間來學習很多無關緊要的引數,這種學習是低效的,卷積考慮了畫素之間的位置資訊,並且提取出有用的區域性特徵。卷積層每層的引數的個數只和這層的fi過濾器的大小、數目有關,而和輸入的規模無關。這樣可以通過控制引數的數量避免過擬合了。

池化層,就是進一步做取樣,縮小引數個數,最大池化層就是抽取卷積層中提取特徵的關鍵部分,平均池化層更多保留整體資訊,比如背景資訊。池化層沒有引數,只有池化大小和步長,在前向傳播時候就是把將池化視窗中的最大值傳給下一層,反向傳播就把後面傳過來的梯度遞給剛才那個max元素,其他梯度都為0.。

常用的啟用函式有sigmoid函式和relu函式.

relu(x)=為了在反向傳播演算法中可以正常使用,將其在x=0x=0處的導數置為1,所以它的導數也就變為了 δrelu(x)=

relu是乙個非常優秀的啟用哈數,相比較於傳統的sigmoid函式,有三個作用

防止梯度瀰散,sigmoid的導數只有在0附近的時候有比較好的啟用性,在正負飽和區的梯度都接近於0,所以這會造成梯度瀰散,而relu函式在大於0的部分梯度為常數,所以不會產生梯度瀰散現象。

稀疏啟用性:elu函式在負半區的導數為0 ,所以一旦神經元啟用值進入負半區,那麼梯度就會為0,也就是說這個神經元不會經歷訓練,即所謂的稀疏性。

加快計算: relu函式的導數計算更快,程式實現就是乙個if-else語句,而sigmoid函式要進行浮點四則運算

神經網路 卷積神經網路

這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...

卷積神經網路和神經網路

在神經網路中,每一層的每個神經元都與下一層的每個神經元相連 如下圖 這種連線關係叫全連線 full connected 如果以影象識別為例,輸入就是是每個畫素點,那麼每乙個畫素點兩兩之間的關係 無論相隔多遠 都被下一層的神經元 計算 了。這種全連線的方法用在影象識別上面就顯得太 笨 了,因為影象識別...

卷積神經網路 有趣的卷積神經網路

一 前言 最近一直在研究深度學習,聯想起之前所學,感嘆數學是一門樸素而神奇的科學。f g m1 m2 r 萬有引力描述了宇宙星河運轉的規律,e mc 描述了恆星發光的奧秘,v h d哈勃定律描述了宇宙膨脹的奧秘,自然界的大部分現象和規律都可以用數學函式來描述,也就是可以求得乙個函式。神經網路 簡單又...