卷積的矩陣形式
二維卷積可以寫成矩陣乘積的形式焕济,比如一個3x3的卷積核w纷妆,可以寫成下面的矩陣形式C:
如果存在一個4x4的圖像,那么則可以將其轉化為一個16x1維度的向量X晴弃,矩陣乘法則變化為:
C*X = Y
得到的結果Y為4x1維向量掩幢,將其reshape為2x2維塔粒,就是我們需要的卷積后結果锐峭。
根據(jù)矩陣求導公式(下圖第一行),我們可以看到腔彰,該卷積運算的梯度其實就是C^T芍阎。當你反向傳播誤差時世曾,該運算就是將一個4維度的向量作為輸入,然后產生一個16維度的輸出谴咸,并且由于C矩陣的結構性轮听,反向傳播時的連接關系和正向傳播時是一樣的,只是方向相反岭佳。
Deconvolution(反向卷積)
Deconvolution從字面意義上看的話血巍,應該意為反卷積。容易給人造成一種錯誤的印象珊随,以為它的作用是復原卷積之前的圖像值(或者特征值)述寡,事實上并非如此,也是不可能的叶洞。試想一下辨赐,如果一個4x4的圖像和一個3x3的模板進行卷積,最后得到的結果應該是2x2京办。如果要想求出4x4的圖像中的值,那么存在16個未知數(shù)帆焕,而只能聯(lián)立2x2=4個方程惭婿,所以準確的值是無法求解出來的不恭。
在A guide to convolution arithmetic for deep learning一文中有下面這樣一句話:
Let’s now consider what would be required to go the other way around, i.e., map from a 4-dimensional space to a 16-dimensional space, while keeping the connectivity pattern of the convolution depicted in Figure 2.1. This operation is known as a transposed convolution.
這一句話說明Transposed convolution(也就是deconvolution)的目的是將一個低維度的空間映射到高維度,同時保持他們之間的連接關系/模式(這里的連接關系即是指卷積時候的連接關系)财饥。聯(lián)系到剛剛介紹的卷積的矩陣形式换吧,我們剛好可以用這樣一個C^T矩陣來實現(xiàn)這一目的。所以Deconvolution也被稱作Transposed convolution钥星。
更加直白的一種表示是沾瓦,在我們的神經網絡計算卷積的時候,我們會設定一個Kernel w谦炒,這樣一個Kernel被首先按照規(guī)律展開成為C的矩陣形式贯莺。如果我們要計算卷積的時候則計算C*input = output
來得到從高維度向低維度的計算。如果我們的神經網絡中設計了deconv層的話宁改,那么我們就采用C^T*input= output
來得到從低維度向高維度的計算缕探。