模型构成
相比于一般的神经网络,卷积的输入数据更多,同时模型的相关参数也会更多,这就导致了其训练的消耗会比一般的神经网络大,但是基本的结构还是有类似的地方的。
输入数据
输入的数据一般为图像数据,但是由于图形数据中的色彩特征,往往会存在一些预处理,将相应的图形分解为rgb三个色彩通道;或者仅仅关注图像的轮廓特征,进行灰度处理;有些还会在正式的卷积训练前额外加一层,将图片进行一些放缩操作,最终获得的数据以数字形式表示。
输出数据
一般卷积用来构建分类器,输出就是对应的标签数据,一般以0,1表示,0表示不属于这个类型,或者是输出这一类型分类的概率。一般最后输出都是来自全连接层的。
评估函数
输出的数据是要有一个评估的,使用这个评估我们可以了解模型参数对数据的拟合情况,对于多分类我们一般用 H ( y ) = ∑ i n ( y i − y ^ i ) 2 H(y)=sum_i^n(y_i-hat y_i)^2 H(y)=∑in(yi−y^i)2 来表示, y i y_i yi为实际的分类标签值, y ^ i hat y_i y^i为预测的标签值,我们训练的目的也就是尽可能的减小该函数的值,使得我们的模型能够尽可能的拟合数据情况。通过梯度下降等方式,对参数进行求偏导这与一般的神经网络也是一致的。
卷积核
模型中主要的参数承担者就是卷积核了,一个卷积核往往含有多个参数,对于一般的二维卷积核(以矩阵的形式表示):
[
a
11
a
12
a
21
a
22
]
egin{bmatrix}a_{11} & a_{12} \a_{21} & a_{22} end{bmatrix}
[a11a21a12a22](为了表示方便使用
2
∗
2
2*2
2∗2的形状,一般的卷积核形状都是奇数
∗
*
∗奇数,这里按互相关运算来卷积)
相应的函数定义为
f
(
x
)
=
x
11
∗
a
11
+
x
12
∗
a
12
+
x
21
∗
a
21
+
x
22
∗
a
22
+
b
f(x)=x_{11}*a_{11}+x_{12}*a_{12}+x_{21}*a_{21}+x_{22}*a_{22}+b
f(x)=x11∗a11+x12∗a12+x21∗a21+x22∗a22+b(还有一个偏置值)
对于多通道的卷积核:
[
a
11
a
12
a
21
a
22
]
egin{bmatrix}a_{11} & a_{12} \a_{21} & a_{22} end{bmatrix}
[a11a21a12a22]
[
b
11
b
12
b
21
b
22
]
egin{bmatrix}b_{11} & b_{12} \b_{21} & b_{22} end{bmatrix}
[b11b21b12b22]
[
c
11
c
12
c
21
c
22
]
egin{bmatrix}c_{11} & c_{12} \c_{21} & c_{22} end{bmatrix}
[c11c21c12c22]
相应的函数定义为
f
(
x
)
=
(
x
111
∗
a
11
+
x
112
∗
a
12
+
x
121
∗
a
21
+
x
122
∗
a
22
)
+
(
x
211
∗
b
11
+
x
212
∗
b
12
+
x
221
∗
b
21
+
x
222
∗
b
22
)
+
(
x
311
∗
c
11
+
x
312
∗
c
12
+
x
321
∗
c
21
+
x
322
∗
c
22
)
+
b
f(x)=(x_{111}*a_{11}+x_{112}*a_{12}+x_{121}*a_{21}+x_{122}*a_{22})+(x_{211}*b_{11}+x_{212}*b_{12}+x_{221}*b_{21}+x_{222}*b_{22})+(x_{311}*c_{11}+x_{312}*c_{12}+x_{321}*c_{21}+x_{322}*c_{22})+b
f(x)=(x111∗a11+x112∗a12+x121∗a21+x122∗a22)+(x211∗b11+x212∗b12+x221∗b21+x222∗b22)+(x311∗c11+x312∗c12+x321∗c21+x322∗c22)+b(还有一个偏置值)
池化函数
最大池化
m
a
x
(
[
x
11
x
12
x
21
x
22
]
)
=
m
a
x
(
x
11
,
x
12
,
x
21
,
x
22
)
max(egin{bmatrix}x_{11} & x_{12} \x_{21} & x_{22} end{bmatrix})=max(x_{11},x_{12},x_{21},x_{22})
max([x11x21x12x22])=max(x11,x12,x21,x22)
平均池化
m
e
a
n
(
[
x
11
x
12
x
21
x
22
]
)
=
(
x
11
+
x
12
+
x
21
+
x
22
)
/
4
mean(egin{bmatrix}x_{11} & x_{12} \x_{21} & x_{22} end{bmatrix})=(x_{11}+x_{12}+x_{21}+x_{22})/4
mean([x11x21x12x22])=(x11+x12+x21+x22)/4
池化的操作就与之间的神经网络有很大的不同了,在池化之前一般经过了激活函数的处理(激活函数与池化的处理顺序可以互换,池化之后进行激活可以减少激活函数的运算量,但是对应的池化消去的数据就无法在之后使用了)
激活函数
相应的激活函数与一般的神经网络一致,常用的有Sigmoid函数与Relu函数等。
参数初始化
为网络中的诸多参数确定初值,为了保证训练的效果,需要对这些参数的初值进行一些要求。
这些参数的初值不能全部相同,否则运算过程中相同形状的卷积核对相同的输入进行运算,会导致多个卷积核仅仅只能提取一个特征。(多个卷积核对应的运算实际是等效的(“对称性”))
要打破这种对称性,可以进行随机初始化,同时为了保证在之后的偏导计算中(特别是链式法则的乘法运算)不会出现过大或过小的梯度值,取得随机值不宜过大,也不宜为0。根据不同的激活函数,可以选择不同的初始化方式。
前向传播
前向传播的过程是从输入层向后进行的逐层的参数计算,直至得到输出并且计算到相应的评估函数。
顺序为卷积运算得到特征图,特征图经由激活函数(可能还有归一化),再进行池化(可能有多层次),最终到全连接层前将数据展开,之后逐层进行线性运算,激活(可能还有归一化),直到最后输出,转到评估函数。
感受野
网络的前向计算中,实际是对输入的多个参数的处理,但是在每一层的计算中参与的输入数据是有数量(感受野的大小)差别的,越向后面的计算,实际展开时包含的输入参数就越多,相应的一个参数能涵盖的输入数据的区域(感受野)也就越大。
图中第二层中的每个参数都需要最底层中9个输入参与计算,所以其感受野为对应的9个元素,而最上层的元素计算需要第二层的9个元素,对应到最底层中就是底层的全部元素参与计算,相应的感受野就是底层的全部元素。(步幅为1,无填充)
反向传播
主要通过梯度下降来进行训练,与一般的神经网络类似,只是在卷积与池化的处理上与一般的神经网络不同。利用偏导计算来进行,逐步减小评估函数值。
参数更新:新的参数的值
w
w
w(新值)
=
w
=w
=w(旧值)
+
η
+eta
+η(学习率)
∗
h
*h
∗h(偏导值)
全连接层
全连接层的训练就是一般的反向传播,从评估函数开始逐层传递,并进行偏导计算,多个层次的参数相当于多个函数的复合形式,对应的使用链式法则对其进行处理,相应的可以参考深度学习笔记------神经网络。
池化层
对于池化层的反向传播只要根据不同的池化函数将误差对应分配。
最大池化
对于最大池化,返回给上层的有两类数据,一个是在池化中保留下来最大值的上层元素,对应将误差传递,其余的元素对应返回误差为0。
例如:池化层得到的偏导误差为
[
3
4
6
7
]
egin{bmatrix}3 &4 \6 &7end{bmatrix}
[3647]
上层的数据为
[
1
3
6
0
2
4
5
2
3
5
6
3
3
1
1
3
]
egin{bmatrix}1 &3 &6 &0 \2 &4& 5&2\3 &5 & 6&3\3 &1 & 1&3 end{bmatrix}
⎣⎢⎢⎡1233345165610233⎦⎥⎥⎤对应分配到的误差为
[
0
0
4
0
0
3
0
0
0
6
7
0
0
0
0
0
]
egin{bmatrix}0 &0&4 &0 \0 &3& 0&0\0 &6 & 7&0\0 &0 & 0&0 end{bmatrix}
⎣⎢⎢⎡0000036040700000⎦⎥⎥⎤
平均池化
平均池化则是将相应的误差数据均分,并且传递给所有的上层元素。
例如:池化层得到的偏导误差为
[
4
4
8
8
]
egin{bmatrix}4 &4 \8 &8end{bmatrix}
[4848]
上层的数据为
[
1
3
6
0
2
4
5
2
3
5
6
3
3
1
1
3
]
egin{bmatrix}1 &3 &6 &0 \2 &4& 5&2\3 &5 & 6&3\3 &1 & 1&3 end{bmatrix}
⎣⎢⎢⎡1233345165610233⎦⎥⎥⎤对应分配到的误差为
[
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
]
egin{bmatrix}1 &1&1 &1 \1 &1&1 &1\2 &2 & 2&2\2 &2 & 2&2 end{bmatrix}
⎣⎢⎢⎡1122112211221122⎦⎥⎥⎤
卷积层
先从一个简单的互相关运算开始(步幅为1):
[
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
]
c
o
n
v
[
w
11
w
12
w
21
w
22
]
egin{bmatrix}a_{11} &a_{12} &a_{13} \a_{21} &a_{22} &a_{23} \a_{31} &a_{32} &a_{33} end{bmatrix}convegin{bmatrix}w_{11} &w_{12} \w_{21} &w_{22} end{bmatrix}
⎣⎡a11a21a31a12a22a32a13a23a33⎦⎤conv[w11w21w12w22]展开一下有:
[
w
11
w
12
0
w
21
w
22
0
0
0
0
0
w
11
w
12
0
w
21
w
22
0
0
0
0
0
0
w
11
w
12
0
w
21
w
22
0
0
0
0
0
w
11
w
12
0
w
21
w
22
]
[
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
]
egin{bmatrix}w_{11} &w_{12}&0&w_{21}&w_{22}&0&0&0&0\0&w_{11} &w_{12}&0&w_{21}&w_{22}&0&0&0\0&0&0&w_{11} &w_{12}&0&w_{21}&w_{22}&0\0&0&0&0&w_{11} &w_{12}&0&w_{21}&w_{22} end{bmatrix}egin{bmatrix}a_{11} \a_{12} \a_{13} \a_{21} \a_{22} \a_{23} \a_{31} \a_{32} \a_{33} end{bmatrix}
⎣⎢⎢⎡w11000w12w11000w1200w210w110w22w21w12w110w220w1200w21000w22w21000w22⎦⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡a11a12a13a21a22a23a31a32a33⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤得到:
[ a 11 w 11 + a 12 w 12 + a 21 w 21 + a 22 w 22 a 12 w 11 + a 13 w 12 + a 22 w 21 + a 23 w 22 a 21 w 11 + a 22 w 12 + a 31 w 21 + a 32 w 22 a 22 w 11 + a 23 w 12 + a 32 w 21 + a 33 w 22 ] egin{bmatrix}a_{11} w_{11}+a_{12}w_{12}+a_{21}w_{21}+a_{22}w_{22}&a_{12} w_{11}+a_{13}w_{12}+a_{22}w_{21}+a_{23}w_{22}\a_{21} w_{11}+a_{22}w_{12}+a_{31}w_{21}+a_{32}w_{22}&a_{22} w_{11}+a_{23}w_{12}+a_{32}w_{21}+a_{33}w_{22}end{bmatrix} [a11w11+a12w12+a21w21+a22w22a21w11+a22w12+a31w21+a32w22a12w11+a13w12+a22w21+a23w22a22w11+a23w12+a32w21+a33w22]
对应于上层传过来的误差为: [ δ 11 δ 12 δ 21 δ 22 ] egin{bmatrix}delta_{11} &delta_{12} \delta_{21} &delta_{22} end{bmatrix} [δ11δ21δ12δ22]
对于 a i j a_{ij} aij进行求偏导对应的为:
a
11
a_{11}
a11为
w
11
δ
11
+
0
δ
12
+
0
δ
21
+
0
δ
22
w_{11}delta_{11}+0delta_{12} +0delta_{21}+0delta_{22}
w11δ11+0δ12+0δ21+0δ22
a
12
a_{12}
a12为
w
12
δ
11
+
w
11
δ
12
+
0
δ
21
+
0
δ
22
w_{12}delta_{11}+w_{11}delta_{12} +0delta_{21}+0delta_{22}
w12δ11+w11δ12+0δ21+0δ22
a
13
a_{13}
a13为
0
δ
11
+
w
12
δ
12
+
0
δ
21
+
0
δ
22
0delta_{11}+w_{12}delta_{12} +0delta_{21}+0delta_{22}
0δ11+w12δ12+0δ21+0δ22
a
21
a_{21}
a21为
w
21
δ
11
+
0
δ
12
+
w
11
δ
21
+
0
δ
22
w_{21}delta_{11}+0delta_{12} +w_{11}delta_{21}+0delta_{22}
w21δ11+0δ12+w11δ21+0δ22
a
22
a_{22}
a22为
w
22
δ
11
+
w
21
δ
12
+
w
12
δ
21
+
w
11
δ
22
w_{22}delta_{11}+w_{21}delta_{12} +w_{12}delta_{21}+w_{11}delta_{22}
w22δ11+w21δ12+w12δ21+w11δ22
a
23
a_{23}
a23为
w
22
δ
11
+
0
δ
12
+
w
12
δ
21
+
0
δ
22
w_{22}delta_{11}+0delta_{12} +w_{12}delta_{21}+0delta_{22}
w22δ11+0δ12+w12δ21+0δ22
a
31
a_{31}
a31为
0
δ
11
+
0
δ
12
+
w
21
δ
21
+
0
δ
22
0delta_{11}+0delta_{12} +w_{21}delta_{21}+0delta_{22}
0δ11+0δ12+w21δ21+0δ22
a
32
a_{32}
a32为
0
δ
11
+
0
δ
12
+
w
22
δ
21
+
w
21
δ
22
0delta_{11}+0delta_{12} +w_{22}delta_{21}+w_{21}delta_{22}
0δ11+0δ12+w22δ21+w21δ22
a
33
a_{33}
a33为
0
δ
11
+
0
δ
12
+
0
δ
21
+
w
22
δ
22
0delta_{11}+0delta_{12} +0delta_{21}+w_{22}delta_{22}
0δ11+0δ12+0δ21+w22δ22
即为
w
w
w上对应的列向量,组成为矩阵为
[ w 11 δ 11 w 12 δ 11 + w 11 δ 12 w 12 δ 12 w 21 δ 11 + w 11 δ 21 w 22 δ 11 + w 21 δ 12 + w 12 δ 21 + w 11 δ 22 w 22 δ 11 + w 12 δ 21 w 21 δ 21 w 22 δ 21 + w 21 δ 22 w 22 δ 22 ] egin{bmatrix}w_{11}delta_{11} &w_{12}delta_{11}+w_{11}delta_{12} &w_{12}delta_{12} \w_{21}delta_{11} +w_{11}delta_{21} &w_{22}delta_{11}+w_{21}delta_{12} +w_{12}delta_{21}+w_{11}delta_{22} &w_{22}delta_{11}+w_{12}delta_{21}\w_{21}delta_{21}&w_{22}delta_{21}+w_{21}delta_{22}&w_{22}delta_{22}end{bmatrix} ⎣⎡w11δ11w21δ11+w11δ21w21δ21w12δ11+w11δ12w22δ11+w21δ12+w12δ21+w11δ22w22δ21+w21δ22w12δ12w22δ11+w12δ21w22δ22⎦⎤
变化一下有: [ 0 0 0 0 0 δ 11 δ 12 0 0 δ 21 δ 22 0 0 0 0 0 ] c o n v [ w 22 w 21 w 12 w 11 ] egin{bmatrix}0&0&0&0\0&delta_{11} &delta_{12} &0\0&delta_{21} &delta_{22}&0 \0&0&0&0end{bmatrix}convegin{bmatrix}w_{22} &w_{21} \w_{12} &w_{11} end{bmatrix} ⎣⎢⎢⎡00000δ11δ2100δ12δ2200000⎦⎥⎥⎤conv[w22w12w21w11](步幅为1)
反转卷积核(关于中心对称反转,或者反转返回的误差 δ delta δ),再将返回的误差 δ delta δ填充为0,最后进行互相关操作就可以得到对应的偏导了。对于步幅为1的卷积层关于输入参数a的偏导就完成了。(有些参数后面只有一层就不许要后续的输入参数,在求偏导时也就不需要这一过程了)
之后是对卷积函数中的参数w求偏导。
将上面的式子 [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] c o n v [ w 11 w 12 w 21 w 22 ] egin{bmatrix}a_{11} &a_{12} &a_{13} \a_{21} &a_{22} &a_{23} \a_{31} &a_{32} &a_{33} end{bmatrix}convegin{bmatrix}w_{11} &w_{12} \w_{21} &w_{22} end{bmatrix} ⎣⎡a11a21a31a12a22a32a13a23a33⎦⎤conv[w11w21w12w22]再次展开:
[ a 11 a 12 a 21 a 22 a 12 a 13 a 22 a 23 a 21 a 22 a 31 a 32 a 22 a 23 a 32 a 33 ] [ w 11 w 12 w 21 w 22 ] egin{bmatrix}a_{11}&a_{12}&a_{21}& a_{22} \a_{12} &a_{13}&a_{22}& a_{23} \a_{21} &a_{22}&a_{31}& a_{32} \a_{22} &a_{23}&a_{32}& a_{33} end{bmatrix}egin{bmatrix}w_{11} \w_{12} \w_{21} \w_{22}end{bmatrix} ⎣⎢⎢⎡a11a12a21a22a12a13a22a23a21a22a31a32a22a23a32a33⎦⎥⎥⎤⎣⎢⎢⎡w11w12w21w22⎦⎥⎥⎤(转换回二维)得到:
[ a 11 w 11 + a 12 w 12 + a 21 w 21 + a 22 w 22 a 12 w 11 + a 13 w 12 + a 22 w 21 + a 23 w 22 a 21 w 11 + a 22 w 12 + a 31 w 21 + a 32 w 22 a 22 w 11 + a 23 w 12 + a 32 w 21 + a 33 w 22 ] egin{bmatrix}a_{11} w_{11}+a_{12}w_{12}+a_{21}w_{21}+a_{22}w_{22}&a_{12} w_{11}+a_{13}w_{12}+a_{22}w_{21}+a_{23}w_{22}\a_{21} w_{11}+a_{22}w_{12}+a_{31}w_{21}+a_{32}w_{22}&a_{22} w_{11}+a_{23}w_{12}+a_{32}w_{21}+a_{33}w_{22}end{bmatrix} [a11w11+a12w12+a21w21+a22w22a21w11+a22w12+a31w21+a32w22a12w11+a13w12+a22w21+a23w22a22w11+a23w12+a32w21+a33w22]
对应于上层传过来的误差为: [ δ 11 δ 12 δ 21 δ 22 ] egin{bmatrix}delta_{11} &delta_{12} \delta_{21} &delta_{22} end{bmatrix} [δ11δ21δ12δ22]
对于 w i j w_{ij} wij进行求偏导对应的为:
w
11
w_{11}
w11为
a
11
δ
11
+
a
12
δ
12
+
a
21
δ
21
+
a
22
δ
22
a_{11}delta_{11}+a_{12}delta_{12} +a_{21}delta_{21}+a_{22}delta_{22}
a11δ11+a12δ12+a21δ21+a22δ22
w
12
w_{12}
w12为
a
12
δ
11
+
a
13
δ
12
+
a
22
δ
23
+
a
22
δ
22
a_{12}delta_{11}+a_{13}delta_{12} +a_{22}delta_{23}+a_{22}delta_{22}
a12δ11+a13δ12+a22δ23+a22δ22
w
21
w_{21}
w21为
a
21
δ
11
+
a
22
δ
12
+
a
31
δ
21
+
a
32
δ
22
a_{21}delta_{11}+a_{22}delta_{12} +a_{31}delta_{21}+a_{32}delta_{22}
a21δ11+a22δ12+a31δ21+a32δ22
w
22
w_{22}
w22为
a
22
δ
11
+
a
23
δ
12
+
a
32
δ
21
+
a
33
δ
22
a_{22}delta_{11}+a_{23}delta_{12} +a_{32}delta_{21}+a_{33}delta_{22}
a22δ11+a23δ12+a32δ21+a33δ22
即为a上对应的列向量,组成为矩阵为:
[ a 11 δ 11 + a 12 δ 12 + a 21 δ 21 + a 22 δ 22 a 12 δ 11 + a 13 δ 12 + a 22 δ 23 + a 22 δ 22 a 21 δ 11 + a 22 δ 12 + a 31 δ 21 + a 32 δ 22 a 22 δ 11 + a 23 δ 12 + a 32 δ 21 + a 33 δ 22 ] egin{bmatrix}a_{11}delta_{11}+a_{12}delta_{12} +a_{21}delta_{21}+a_{22}delta_{22} &a_{12}delta_{11}+a_{13}delta_{12} +a_{22}delta_{23}+a_{22}delta_{22} \a_{21}delta_{11}+a_{22}delta_{12} +a_{31}delta_{21}+a_{32}delta_{22} &a_{22}delta_{11}+a_{23}delta_{12} +a_{32}delta_{21}+a_{33}delta_{22}end{bmatrix} [a11δ11+a12δ12+a21δ21+a22δ22a21δ11+a22δ12+a31δ21+a32δ22a12δ11+a13δ12+a22δ23+a22δ22a22δ11+a23δ12+a32δ21+a33δ22]
变化一下有: [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] c o n v [ δ 11 δ 12 δ 21 δ 22 ] egin{bmatrix}a_{11} &a_{12} &a_{13} \a_{21} &a_{22} &a_{23} \a_{31} &a_{32} &a_{33} end{bmatrix}convegin{bmatrix}delta_{11} &delta_{12} \delta_{21} &delta_{22} end{bmatrix} ⎣⎡a11a21a31a12a22a32a13a23a33⎦⎤conv[δ11δ21δ12δ22]
关于卷积核的参数
w
i
j
w_{ij}
wij的偏导即为返回的误差与输入层参数的互相关运算。
但是上面我们没有考虑步幅的因素(填充相当于固定某些位置为0)。
步幅为2的卷积
[ a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ] c o n v [ w 11 w 12 w 21 w 22 ] = [ t 11 t 12 t 21 t 22 ] egin{bmatrix}a_{11} &a_{12} &a_{13}&a_{14} \a_{21} &a_{22} &a_{23} &a_{24}\a_{31} &a_{32} &a_{33} &a_{34}\a_{41} &a_{42} &a_{43} &a_{44}end{bmatrix}convegin{bmatrix}w_{11} &w_{12} \w_{21} &w_{22} end{bmatrix}=egin{bmatrix}t_{11} &t_{12} \t_{21} &t_{22} end{bmatrix} ⎣⎢⎢⎡a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44⎦⎥⎥⎤conv[w11w21w12w22]=[t11t21t12t22]
t
11
=
a
11
w
11
+
a
12
w
12
+
a
21
w
21
+
a
22
w
22
t_{11}=a_{11} w_{11}+a_{12}w_{12}+a_{21}w_{21}+a_{22}w_{22}
t11=a11w11+a12w12+a21w21+a22w22
t
12
=
a
13
w
11
+
a
14
w
12
+
a
23
w
21
+
a
24
w
22
t_{12}=a_{13} w_{11}+a_{14}w_{12}+a_{23}w_{21}+a_{24}w_{22}
t12=a13w11+a14w12+a23w21+a24w22
t
21
=
a
31
w
11
+
a
32
w
12
+
a
41
w
21
+
a
42
w
22
t_{21}=a_{31} w_{11}+a_{32}w_{12}+a_{41}w_{21}+a_{42}w_{22}
t21=a31w11+a32w12+a41w21+a42w22
t
22
=
a
33
w
11
+
a
34
w
12
+
a
43
w
21
+
a
44
w
22
t_{22}=a_{33} w_{11}+a_{34}w_{12}+a_{43}w_{21}+a_{44}w_{22}
t22=a33w11+a34w12+a43w21+a44w22
展开一下有:
[
w
11
w
12
0
0
w
21
w
22
0
0
0
0
0
0
0
0
0
0
0
0
w
11
w
12
0
0
w
21
w
22
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
w
11
w
12
0
0
w
21
w
22
0
0
0
0
0
0
0
0
0
0
0
0
w
11
w
12
0
0
w
21
w
22
]
[
a
11
a
12
a
13
a
14
a
21
a
22
a
23
a
24
a
31
a
32
a
33
a
34
a
41
a
42
a
43
a
44
]
egin{bmatrix}w_{11} &w_{12}&0&0&w_{21}&w_{22}&0&0&0&0&0&0&0&0&0&0\0&0&w_{11} &w_{12}&0&0&w_{21}&w_{22}&0&0&0&0&0&0&0&0\0&0&0&0&0&0&0&0&w_{11} &w_{12}&0&0&w_{21}&w_{22}&0&0\0&0&0&0&0&0&0&0&0&0&w_{11} &w_{12}&0&0&w_{21}&w_{22} end{bmatrix}egin{bmatrix}a_{11} \a_{12} \a_{13}\a_{14} \a_{21} \a_{22} \a_{23}\a_{24} \a_{31} \a_{32} \a_{33}\a_{34} \a_{41} \a_{42} \a_{43}\a_{44}end{bmatrix}
⎣⎢⎢⎡w11000w120000w11000w1200w21000w220000w21000w220000w11000w120000w11000w1200w21000w220000w21000w22⎦⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
对应于上层传过来的误差为:
[
δ
11
δ
12
δ
21
δ
22
]
egin{bmatrix}delta_{11} &delta_{12} \delta_{21} &delta_{22} end{bmatrix}
[δ11δ21δ12δ22]
对于 a i j a_{ij} aij进行求偏导对应的为: [ w 11 δ 11 w 12 δ 11 w 11 δ 12 w 12 δ 12 w 21 δ 11 w 22 δ 11 w 21 δ 12 w 22 δ 12 w 11 δ 21 w 12 δ 21 w 11 δ 22 w 12 δ 22 w 21 δ 21 w 22 δ 21 w 21 δ 22 w 22 δ 22 ] egin{bmatrix}w_{11}delta_{11} &w_{12}delta_{11} &w_{11}delta_{12}&w_{12}delta_{12} \w_{21}delta_{11} &w_{22}delta_{11} &w_{21}delta_{12}&w_{22}delta_{12}\w_{11}delta_{21} &w_{12}delta_{21} &w_{11}delta_{22}&w_{12}delta_{22}\w_{21}delta_{21} &w_{22}delta_{21} &w_{21}delta_{22}&w_{22}delta_{22}end{bmatrix} ⎣⎢⎢⎡w11δ11w21δ11w11δ21w21δ21w12δ11w22δ11w12δ21w22δ21w11δ12w21δ12w11δ22w21δ22w12δ12w22δ12w12δ22w22δ22⎦⎥⎥⎤即为 w w w上对应的列向量.
同样可以进行对应的变换于是得到:
[ 0 0 0 0 0 0 δ 11 0 δ 12 0 0 0 0 0 0 0 δ 21 0 δ 22 0 0 0 0 0 0 ] c o n v [ w 22 w 21 w 12 w 11 ] egin{bmatrix}0&0&0&0&0\0&delta_{11} &0&delta_{12} &0\0&0&0&0&0\0&delta_{21} &0&delta_{22}&0 \0&0&0&0&0end{bmatrix}convegin{bmatrix}w_{22} &w_{21} \w_{12} &w_{11} end{bmatrix} ⎣⎢⎢⎢⎢⎡000000δ110δ210000000δ120δ22000000⎦⎥⎥⎥⎥⎤conv[w22w12w21w11](步幅为1)
与步幅为一的操作差不多,只不过在返回误差的元素之间加上了一个填充。对于更大的步幅可以同样的进行推导。
卷积函数中的参数
w
w
w求偏导
一样进行展开有:
[ a 11 a 12 a 21 a 22 a 13 a 14 a 23 a 24 a 31 a 32 a 41 a 42 a 33 a 34 a 43 a 44 ] [ w 11 w 12 w 21 w 22 ] egin{bmatrix}a_{11}&a_{12}&a_{21}& a_{22} \a_{13} &a_{14}&a_{23}& a_{24} \a_{31} &a_{32}&a_{41}& a_{42} \a_{33} &a_{34}&a_{43}& a_{44} end{bmatrix}egin{bmatrix}w_{11} \w_{12} \w_{21} \w_{22}end{bmatrix} ⎣⎢⎢⎡a11a13a31a33a12a14a32a34a21a23a41a43a22a24a42a44⎦⎥⎥⎤⎣⎢⎢⎡w11w12w21w22⎦⎥⎥⎤
[ a 11 w 11 + a 12 w 12 + a 21 w 21 + a 22 w 22 a 13 w 11 + a 14 w 12 + a 23 w 21 + a 24 w 22 a 31 w 11 + a 32 w 12 + a 41 w 21 + a 42 w 22 a 33 w 11 + a 34 w 12 + a 43 w 21 + a 44 w 22 ] egin{bmatrix}a_{11} w_{11}+a_{12}w_{12}+a_{21}w_{21}+a_{22}w_{22}&a_{13} w_{11}+a_{14}w_{12}+a_{23}w_{21}+a_{24}w_{22}\a_{31} w_{11}+a_{32}w_{12}+a_{41}w_{21}+a_{42}w_{22}&a_{33} w_{11}+a_{34}w_{12}+a_{43}w_{21}+a_{44}w_{22}end{bmatrix} [a11w11+a12w12+a21w21+a22w22a31w11+a32w12+a41w21+a42w22a13w11+a14w12+a23w21+a24w22a33w11+a34w12+a43w21+a44w22]
对应于上层传过来的误差为: [ δ 11 δ 12 δ 21 δ 22 ] egin{bmatrix}delta_{11} &delta_{12} \delta_{21} &delta_{22} end{bmatrix} [δ11δ21δ12δ22]
对于 w i j w_{ij} wij进行求偏导对应的为:
w
11
w_{11}
w11为
a
11
δ
11
+
a
13
δ
12
+
a
31
δ
21
+
a
33
δ
22
a_{11}delta_{11}+a_{13}delta_{12} +a_{31}delta_{21}+a_{33}delta_{22}
a11δ11+a13δ12+a31δ21+a33δ22
w
12
w_{12}
w12为
a
12
δ
11
+
a
14
δ
12
+
a
32
δ
23
+
a
34
δ
22
a_{12}delta_{11}+a_{14}delta_{12} +a_{32}delta_{23}+a_{34}delta_{22}
a12δ11+a14δ12+a32δ23+a34δ22
w
21
w_{21}
w21为
a
21
δ
11
+
a
23
δ
12
+
a
41
δ
21
+
a
43
δ
22
a_{21}delta_{11}+a_{23}delta_{12} +a_{41}delta_{21}+a_{43}delta_{22}
a21δ11+a23δ12+a41δ21+a43δ22
w
22
w_{22}
w22为
a
22
δ
11
+
a
24
δ
12
+
a
42
δ
21
+
a
44
δ
22
a_{22}delta_{11}+a_{24}delta_{12} +a_{42}delta_{21}+a_{44}delta_{22}
a22δ11+a24δ12+a42δ21+a44δ22
即为a上对应的列向量,组成为矩阵为:
[ a 11 δ 11 + a 13 δ 12 + a 31 δ 21 + a 33 δ 22 a 12 δ 11 + a 14 δ 12 + a 32 δ 23 + a 34 δ 22 a 21 δ 11 + a 23 δ 12 + a 41 δ 21 + a 43 δ 22 a 22 δ 11 + a 24 δ 12 + a 42 δ 21 + a 44 δ 22 ] egin{bmatrix}a_{11}delta_{11}+a_{13}delta_{12} +a_{31}delta_{21}+a_{33}delta_{22} &a_{12}delta_{11}+a_{14}delta_{12} +a_{32}delta_{23}+a_{34}delta_{22} \a_{21}delta_{11}+a_{23}delta_{12} +a_{41}delta_{21}+a_{43}delta_{22} &a_{22}delta_{11}+a_{24}delta_{12} +a_{42}delta_{21}+a_{44}delta_{22}end{bmatrix} [a11δ11+a13δ12+a31δ21+a33δ22a21δ11+a23δ12+a41δ21+a43δ22a12δ11+a14δ12+a32δ23+a34δ22a22δ11+a24δ12+a42δ21+a44δ22]
变化一下有: [ a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ] c o n v [ δ 11 0 δ 12 0 0 0 δ 21 0 δ 22 ] egin{bmatrix}a_{11} &a_{12} &a_{13} &a_{14}\a_{21} &a_{22} &a_{23} &a_{24}\a_{31} &a_{32} &a_{33}&a_{34} \a_{41} &a_{42} &a_{43}&a_{44}end{bmatrix}convegin{bmatrix}delta_{11}&0 &delta_{12} \0&0&0 \delta_{21} &0&delta_{22} end{bmatrix} ⎣⎢⎢⎡a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44⎦⎥⎥⎤conv⎣⎡δ110δ21000δ120δ22⎦⎤(步幅为1)
也在返回误差的元素之间加上了一个填充,得到了关于
w
i
j
w_{ij}
wij的偏导。
还有关于偏置
b
b
b的偏导,在卷积运算中(线性运算),最后还要加上一个相应的偏置值。
每一个卷积核定义一个偏置值
b
b
b,在计算中这一个偏置是共享的,上面的卷积运算改变一下有:
t
11
=
a
11
w
11
+
a
12
w
12
+
a
21
w
21
+
a
22
w
22
+
b
t_{11}=a_{11} w_{11}+a_{12}w_{12}+a_{21}w_{21}+a_{22}w_{22}+b
t11=a11w11+a12w12+a21w21+a22w22+b
t
12
=
a
13
w
11
+
a
14
w
12
+
a
23
w
21
+
a
24
w
22
+
b
t_{12}=a_{13} w_{11}+a_{14}w_{12}+a_{23}w_{21}+a_{24}w_{22}+b
t12=a13w11+a14w12+a23w21+a24w22+b
t
21
=
a
31
w
11
+
a
32
w
12
+
a
41
w
21
+
a
42
w
22
+
b
t_{21}=a_{31} w_{11}+a_{32}w_{12}+a_{41}w_{21}+a_{42}w_{22}+b
t21=a31w11+a32w12+a41w21+a42w22+b
t
22
=
a
33
w
11
+
a
34
w
12
+
a
43
w
21
+
a
44
w
22
+
b
t_{22}=a_{33} w_{11}+a_{34}w_{12}+a_{43}w_{21}+a_{44}w_{22}+b
t22=a33w11+a34w12+a43w21+a44w22+b
同样根据返回的误差有: [ δ 11 δ 12 δ 21 δ 22 ] egin{bmatrix}delta_{11} &delta_{12} \delta_{21} &delta_{22} end{bmatrix} [δ11δ21δ12δ22]
于是关于 b b b的偏导为 δ 11 + δ 12 + δ 21 + δ 22 delta_{11} +delta_{12}+delta_{21} +delta_{22} δ11+δ12+δ21+δ22,步幅的改变对其没有影响,上面步幅为1的运算关于 b b b的偏导也是相应返回误差的和。
卷积完成后的激活函数操作与一般的神经网络相同,也是直接求其偏导加入到链式法则中运算。
最终得到的相应的误差值进行梯度下降,使用相应的学习率参数来控制迭代的速度。
参数更新:新的参数的值
w
w
w(新值)
=
w
=w
=w(旧值)
+
η
+eta
+η(学习率)
∗
h
*h
∗h(偏导值)