1. 程式人生 > >深度學習中的卷積與反捲積

深度學習中的卷積與反捲積

卷積與反捲積操作在影象分類、影象分割、影象生成、邊緣檢測等領域都有很重要的作用。為了講明白這兩種操作,特別是反捲積操作,本文將依照神經網路中的編碼器——>解碼器——>卷積——>反捲積 的思路來一步步介紹。

編碼器與解碼器

神經網路本質上就是一個線性變換,通過將輸入的多維向量與權重矩陣相乘,得到一個新的多維向量。

  • 當輸入向量的維度高於輸出向量的維度時,神經網路就相當於一個編碼器,實現了對高維向量的低維特徵提取。例如下圖從x到h的變換過程。

  • 當輸入向量維度低於輸出向量維度時,神經網路就相當於一個解碼器,實現了低維向量到高維向量的重構,如圖中h到y的變換。


  • CSDN圖示

然而,普通的神經網路僅能對向量進行操作,常見的影象、音訊等高維資料都需要展開成向量才能輸入給神經網路,這大大破壞了資料在空間上的位置資訊。

卷積與反捲積操作使得神經網路可以處理二維以上的資料。它最大的好處在於:1.保持了資料在空間上的位置資訊;2.權重共享使得計算複雜度大大降低。

卷積

卷積操作的作用類似神經網路中的編碼器,用於對高維資料進行低維特徵提取。

卷積操作的示意圖:


CSDN圖示

藍色影象為input feature map;綠色影象為output feature map
當有多個input and output feature maps時,卷積核用一個4-D陣列表示:

output_channels,input_channels,filter_rows,filter_columns

output feature maps的個數與output_channels數目相等。
卷積操作的計算方式如下:
已知:

  • input size i
  • kernel size k
  • stride s
  • padding size p

則輸出大小為:


卷積計算公式

特殊的卷積操作

  • Half(same) padding
    輸出size與輸入size相同(i.e., o = i)

    Half(same) padding for i = 5, k = 3 and p = 1
  • Full padding
    輸出size大於輸入size

    Half(same) padding for i = 5, k = 3 and p = 2

反捲積

反捲積通常用於將低維特徵對映成高維輸入,與卷積操作的作用相反。

卷積與反捲積中的矩陣操作


Half(same) padding for i = 4, k = 3 and p = 0

將大小為(3,3)的卷積核表示成如下圖所示的(16,4)矩陣C.T(表示矩陣C的轉置):

Half(same) padding for i = 4, k = 3 and p = 0

其中w的下標i,j分別表示卷積核的第i行第j列元素。
  • 卷積的矩陣操作
    將輸入4*4的原始影象A展開成(16,1)向量,則將卷積核作用於影象A等同於下面的矩陣操作:

    C * A = B
    其中,B為卷積後得到的(4,1)向量,再reshape成(2,2)矩陣即為輸出。

  • 誤差的反向傳播


    卷積_誤差反向傳播
  • 反捲積的矩陣操作
    若輸入影象A大小(2,2),則首先展開成(4,1)大小的向量,則將卷積核作用於影象A等同於下面的矩陣操作:

    C.T * A = B
    其中,B為卷積後得到的(16,1)向量,再reshape成(4,4)的矩陣即為反捲積操作的輸出結果。

  • 誤差的反向傳播
    與卷積操作中誤差反向傳播時左乘C.T不同,此時需要左乘C。

下圖為論文《Adaptive Deconvolutional Networks for Mid and High Level Feature Learning》通過deconvolutional networks學習圖片特徵的過程。右邊為卷積通道,左邊為反捲積通道。F、P分別表示卷積及pooling,F.T、U分別表示反捲積及unpooling。


Half(same) padding for i = 4, k = 3 and p = 0

網路通過調整feature maps(z)及filters(f)使得根據feature maps(z)及filters(f)重構的影象y^與原始影象y的差別最小:

Half(same) padding for i = 4, k = 3 and p = 0

網路學習過程:先固定filter學習feature map(inference),
再固定feature map學習filter(learning)。大致步驟如下圖:圖片中的紅框代表inference,藍框代表learning。


Half(same) padding for i = 4, k = 3 and p = 0