我們用一個例子來說明:
令
x∗w=y
並且
x=⎣⎡x11x21x31x12x22x32x13x23x33⎦⎤,w=[w11w21w12w22],y=[y11y21y12y22]
則
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧y11=w11x11+w12x12+w21x21+w22x22y12=w11x12+w12x13+w21x22+w22x23y21=w11x21+w12x22+w21x31+w22x32y22=w11x22+w12x23+w21x32+w22x33
梯度
∂x∂L=∂y∂L∂x∂y=⎣⎡δ11w11δ11w21+δ21w11δ21w21δ11w12+δ12w11δ11w22+δ12w21+δ21w12+δ22w11δ21w22+δ22w21δ12w12δ12w22+δ22w12δ22w22⎦⎤
其計算過程如下圖所示(其中不同顏色塊對應位置的值相加):
另外,可以用卷積的形式計算x的梯度:
∂x∂L=⎝⎜⎜⎛00000δ11δ2100δ12δ2200000⎠⎟⎟⎞∗(w22w12w21w11)
此時卷積核w需要旋轉180度,也即上下翻轉一次,然後左右翻轉一次。輸入矩陣需要增加padding。
設正向卷積的padding爲p,反向卷積的padding爲p′,則需要增加的padding爲:
p′=k−p−1
其中k是卷積核的大小,另外假設正向卷積的stride爲1。