zoukankan      html  css  js  c++  java
  • 深度学习笔记------卷积训练

    模型构成

    相比于一般的神经网络,卷积的输入数据更多,同时模型的相关参数也会更多,这就导致了其训练的消耗会比一般的神经网络大,但是基本的结构还是有类似的地方的。

    输入数据

    输入的数据一般为图像数据,但是由于图形数据中的色彩特征,往往会存在一些预处理,将相应的图形分解为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(yiy^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 22的形状,一般的卷积核形状都是奇数 ∗ * 奇数,这里按互相关运算来卷积)
    相应的函数定义为 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)=x11a11+x12a12+x21a21+x22a22+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)=(x111a11+x112a12+x121a21+x122a22)+(x211b11+x212b12+x221b21+x222b22)+(x311c11+x312c12+x321c21+x322c22)+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} a11a21a31a12a22a32a13a23a33conv[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} w11000w12w11000w1200w210w110w22w21w12w110w220w1200w21000w22w21000w22a11a12a13a21a22a23a31a32a33得到:

    [ 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δ2200000conv[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} a11a21a31a12a22a32a13a23a33conv[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} a11a12a21a22a12a13a22a23a21a22a31a32a22a23a32a33w11w12w21w22(转换回二维)得到:

    [ 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} a11a21a31a12a22a32a13a23a33conv[δ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} a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44conv[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} w11000w120000w11000w1200w21000w220000w21000w220000w11000w120000w11000w1200w21000w220000w21000w22a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44
    对应于上层传过来的误差为: [ δ 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δ22000000conv[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} a11a13a31a33a12a14a32a34a21a23a41a43a22a24a42a44w11w12w21w22

    [ 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} a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44convδ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(偏导值)

  • 相关阅读:
    leetcode-832-Flipping an Image
    leetcode-830-Positions of Large Groups
    leetcode-824-Goat Latin(字符串的处理)
    leetcode-821-Shortest Distance to a Character
    leetcode-819-Most Common Word(词频统计)
    HDU 4729 An Easy Problem for Elfness(树链剖分边权+二分)
    python爬虫(1)——正则表达式
    利用MySQL之federated引擎实现DBLink功能
    HTTPS原理及流程
    NIO、多路复用的终极奥义
  • 原文地址:https://www.cnblogs.com/yanzs/p/13788233.html
Copyright © 2011-2022 走看看