1. 程式人生 > >神經網路中的卷積和反捲積原理

神經網路中的卷積和反捲積原理

一.卷積

在深度學習的過程中,很多神經網路都會用到各種卷積核來進行操作,那麼我們就簡單講一下卷積的原理和實現過程。

那麼卷積在神經網路中的作用是什麼呢?一開始的傳統神經網路是沒有卷積層的,都是隱藏層加生全連線層的結構,這樣在中間得到的特徵都是線性的,不能提取到一個區域性的特徵。而卷積神經網路的出現解決了這個問題,通過對一個區域性區域進行卷積操作得到這個區域性區域的特徵值傳入下層大大提升了神經網路提取特徵的能力,並且還減小了資料的大小。

那麼看看卷積的過程:
在這裡插入圖片描述

可以看到這是一個3*3的卷積核在步長為1的方式遍歷這個矩陣,卷積核與其遍歷的覆蓋區域進行一個點乘(其實是協相關)的運算得到一個值存入後面的矩陣,這樣通過卷積核與資料矩陣的遍歷運算就可以直接提取(區域性感受野)一小塊區域的特徵,而不必像傳統神經網路一樣一個值一個值的提取。

卷積操作的計算方式如下:
已知:

input size i
kernel size k
stride s
padding size p
則輸出大小為:
在這裡插入圖片描述

卷積計算公式

同樣的上面這種具有縮放功能的卷積操作,如果這時候我們需要的是跟原來的資料一樣大小矩陣傳出要怎麼做呢?這就是Padding的意義:

在這裡插入圖片描述
可以看到上圖輸入和輸出都是一樣大小的矩陣,因為我們在其外圍加了一個大小為1 的Padding,這樣就可以滿足輸入輸出都是一樣的。同理想要擴大或者縮小隻要對外圍Padding引數根據上面的公式進行調節即可。
二.反捲積
  既然有卷積過程那麼肯定也有反捲積的過程對不對。不然怎麼進行卷積神經網路的反向傳導呢?嘿嘿

反捲積通常用於將低維特徵對映成高維輸入,與卷積操作的作用相反。還是看圖比較舒服是吧:
在這裡插入圖片描述
上圖就是將卷積後的區域,反捲積後變成原來的矩陣,其實看推導看原理肯定是很煩很枯燥的,這裡就不細說推導和原理了,那都是(線性代數)裡的知識了,我們這裡就講講怎麼反捲積回去。

其實說來一句話就好了。-------對於反捲積過程,採用卷積過程轉置後的濾波器(引數一樣,只不過把引數矩陣水平和垂直方向翻轉了一下),這樣反著乘回去就行了。大家好好動筆體會一下這反捲積的神奇。嘿嘿

好了今天得深度學習筆記就到這裡了,飛機我得去拿快遞了嘿嘿。