机器学习基础---神经网络---卷积神经网络CNN

卷积神经网络CNN

相关概念

卷积
  • 不同于学意义上的卷积,深度学习中的卷积是卷积核在原始图像上遍历,对应元素相乘再求和

  • 单核在单通道张量上卷积过程大致如下:

在这里插入图片描述

  • 卷积神经网络中,数据的格式主要是以张量(多维向量)形式存储,一般格式为行*列*通道数,卷积核格式为核数×行×列×通道数

  • 多通道卷积操作是每次取出卷积核中的一个(通道数与张量一致),对应通道的张量和卷积核进行二维卷积,得到各通道结果,再将各通道卷积结果相加得到输出张量的一个通道。每个卷积核处理张量生成一个输出通道,输出张量的通道数等于卷积核的个数,其目的是提取多种不同的特征
    在这里插入图片描述

  • 卷积的特点:

    • 局部感知野:卷积方法考虑到图像数据在空间上像素点的局部性,每次卷积操作都是针对局部图像进行处理,然后在更高层将局部的信息综合起来得到全局的信息
    • 权值共享:卷积操作可以视作提取特征过程,其位置无关,因此对于图像上的所有位置,我们都能使用同样的学习特征(即使用同一个卷积核在整张图上遍历)
池化
  • 即对图片进行降采样,最大池化就是在图片中用每个区域的最大值代表这个区域,平均池化就是用每个区域平均值代表这个区域
  • 池化操作同样是将池化滤波器(矩阵)在原始图像上遍历

正向传播

在这里插入图片描述

  • 输入:经过预处理的三维矩阵/多通道图像(行*列*通道数)
  • 一般会以卷积操作,池化操作交替对输入图像进行处理(特征提取)
  • 将最终得到feature map扁平化处理,然后加上全连接网络完成下游任务

反向传播

  • 参考先前全连接网络BP方法中的定义,定义第 l l l层未激活输出值 Z l Z^l Zl,输出到 Z l Z^l Zl的偏导为 δ l \delta^l δl

  • 在全连接网络的BP方法中,主要通过 δ l \delta^l δl之间的递推关系及 δ l \delta^l δl到变换矩阵 W W W及偏置 b b b的偏导完成对参数的更新

  • 在卷积网络的BP方法中类似,先求 δ l \delta^l δl之间的递推关系:

    • 当第 l l l层为池化层时:

      • 对池化操作来说,经过一次降采样之后存在数据损失,因此只能尽可能还原,该过程称作upsample,大体思路是

        • 均值池化平摊误差
        • 最大池化在正向传播时记录下最大值位置,反向时误差全部传播到相应记录位置
      • 操作步骤:

        • 先将 δ k l \delta_k^l δkl所有子矩阵大小还原到池化前大小
        • 再按照上述策略对还原矩阵进行填充,即得到 ∂ J ( W , b ) ∂ α k l − 1 \frac{\partial J(W,b)}{\partial{\alpha_k^{l-1}}} αkl1J(W,b)
      • 有:
        δ k l − 1 = ∂ J ( W , b ) ∂ Z k l − 1 = ( ∂ α k l − 1 ∂ Z k l − 1 ) T ∂ J ( W , b ) ∂ α k l − 1 = u p s a m p l e ( δ k l ) ⊙ σ ′ ( z k l − 1 ) \delta_k^{l-1}=\frac{\partial J(W,b)}{\partial{Z_k^{l-1}}}=(\frac{\partial{\alpha_k^{l-1}}}{\partial{Z_k^{l-1}}})^T\frac{\partial J(W,b)}{\partial{\alpha_k^{l-1}}}=upsample(\delta^l_k)⊙\sigma'(z_k^{l-1}) δkl1=Zkl1J(W,b)=(Zkl1αkl1)Tαkl1J(W,b)=upsample(δkl)σ(zkl1)
        即:
        δ k l − 1 = u p s a m p l e ( δ k l ) ⊙ σ ′ ( z k l − 1 ) \delta_k^{l-1}=upsample(\delta^l_k)⊙\sigma'(z_k^{l-1}) δkl1=upsample(δkl)σ(zkl1)

    • l l l层为卷积层时:
      z l = α l − 1 ∗ W l + b l = σ ( Z l − 1 ) ∗ W l + b l z^l=\alpha^{l-1}*W^l+b^l=\sigma(Z^{l-1})*W^l+b^l zl=αl1Wl+bl=σ(Zl1)Wl+bl

      • 卷积核求导(二维):

        下图中绿色2*2矩阵为卷积后结果的 δ \delta δ误差,彩色2*2矩阵是卷积核,各子图是对填充后4*4原图步长为1的卷积过程

        传播到原图第i行j列的误差是卷积过程中对相应位置产生影响的 δ \delta δ误差与相应卷积核权重乘积的累加

        在这里插入图片描述

        有:原图的delta误差,等于卷积结果的delta误差经过零填充后,与卷积核旋转180度后的卷积

        即:
        δ l − 1 = ( ∂ z l ∂ z l − 1 ) δ l = δ l ∗ r o t ( W l ) ⊙ σ ′ ( z l − 1 ) \delta^{l-1}=(\frac{\partial{z^l}}{\partial{z^{l-1}}})\delta^l=\delta^l*rot(W^l)⊙\sigma'(z^{l-1}) δl1=(zl1zl)δl=δlrot(Wl)σ(zl1)
        举例说明:
        对 : α l − 1 W l = Z l [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] ∗ [ w 11 w 12 w 21 w 22 ] = [ z 11 z 12 z 21 z 22 ] 对:\alpha^{l-1}W^l=Z^l\\ \left[\begin{aligned} \begin{matrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33}\\ \end{matrix} \end{aligned}\right]* \left[\begin{aligned} \begin{matrix} w_{11}&w_{12}\\ w_{21}&w_{22} \end{matrix} \end{aligned}\right]= \left[\begin{aligned} \begin{matrix} z_{11}&z_{12}\\ z_{21}&z_{22} \end{matrix} \end{aligned}\right] :αl1Wl=Zla11a21a31a12a22a32a13a23a33[w11w21w12w22]=[z11z21z12z22]

        z 11 = a 11 w 11 + a 12 w 12 + a 21 w 21 + a 22 w 22 z 12 = a 12 w 11 + a 13 w 12 + a 22 w 21 + a 23 w 22 z 21 = a 21 w 11 + a 22 w 12 + a 31 w 21 + a 32 w 22 z 22 = a 22 w 11 + a 23 w 12 + a 32 w 21 + a 33 w 22 z_{11}=a_{11}w_{11}+a_{12}w_{12}+a_{21}w_{21}+a_{22}w_{22}\\ z_{12}=a_{12}w_{11}+a_{13}w_{12}+a_{22}w_{21}+a_{23}w_{22}\\ z_{21}=a_{21}w_{11}+a_{22}w_{12}+a_{31}w_{21}+a_{32}w_{22}\\ z_{22}=a_{22}w_{11}+a_{23}w_{12}+a_{32}w_{21}+a_{33}w_{22}\\ z11=a11w11+a12w12+a21w21+a22w22z12=a12w11+a13w12+a22w21+a23w22z21=a21w11+a22w12+a31w21+a32w22z22=a22w11+a23w12+a32w21+a33w22

        { ∇ a 11 = δ 11 w 11 ∇ a 12 = δ 11 w 21 + δ 21 w 11 ∇ a 13 = δ 12 w 12 ∇ a 21 = δ 11 w 21 + δ 21 w 11 ∇ a 22 = δ 11 w 22 + δ 12 w 21 + δ 21 w 12 + δ 22 w 11 ∇ a 23 = δ 12 w 22 + δ 22 w 12 ∇ a 31 = δ 21 w 21 ∇ a 32 = δ 21 w 22 + δ 22 w 21 ∇ a 33 = δ 22 w 22 \begin{cases} \nabla_{a_{11}}=\delta_{11}w_{11}\\ \nabla_{a_{12}}=\delta_{11}w_{21}+\delta_{21}w_{11}\\ \nabla_{a_{13}}=\delta_{12}w_{12}\\ \nabla_{a_{21}}=\delta_{11}w_{21}+\delta_{21}w_{11}\\ \nabla_{a_{22}}=\delta_{11}w_{22}+\delta_{12}w_{21}+\delta_{21}w_{12}+\delta_{22}w_{11}\\ \nabla_{a_{23}}=\delta_{12}w_{22}+\delta_{22}w_{12}\\ \nabla_{a_{31}}=\delta_{21}w_{21}\\ \nabla_{a_{32}}=\delta_{21}w_{22}+\delta_{22}w_{21}\\ \nabla_{a_{33}}=\delta_{22}w_{22}\\ \end{cases} a11=δ11w11a12=δ11w21+δ21w11a13=δ12w12a21=δ11w21+δ21w11a22=δ11w22+δ12w21+δ21w12+δ22w11a23=δ12w22+δ22w12a31=δ21w21a32=δ21w22+δ22w21a33=δ22w22

        有:
        [ 0 0 0 0 0 δ 11 δ 12 0 0 δ 21 δ 22 0 0 0 0 0 ] ∗ [ w 22 w 21 w 12 w 11 ] = [ ∇ a 11 ∇ a 12 ∇ a 13 ∇ a 21 ∇ a 22 ∇ a 23 ∇ a 31 ∇ a 32 ∇ a 33 ] \left[\begin{aligned} \begin{matrix} 0 & 0 & 0 & 0\\ 0 & \delta_{11} & \delta_{12} & 0\\ 0 & \delta_{21} & \delta_{22} & 0\\ 0 & 0 & 0 & 0 \end{matrix} \end{aligned}\right]* \left[\begin{aligned} \begin{matrix} w_{22}&w_{21}\\ w_{12}&w_{11} \end{matrix} \end{aligned}\right]= \left[\begin{aligned} \begin{matrix} \nabla_{a_{11}} & \nabla_{a_{12}} & \nabla_{a_{13}}\\ \nabla_{a_{21}} & \nabla_{a_{22}} & \nabla_{a_{23}}\\ \nabla_{a_{31}} & \nabla_{a_{32}} & \nabla_{a_{33}}\\ \end{matrix} \end{aligned}\right] 00000δ11δ2100δ12δ2200000[w22w12w21w11]=a11a21a31a12a22a32a13a23a33

  • 已知卷积层 δ l \delta^l δl,求 W , b W,b W,b的梯度

    • 由:
      Z l = α l − 1 ∗ W l + b l Z^l=\alpha^{l-1}*W^l+b^l Zl=αl1Wl+bl
      有:
      ∂ J ( W , b ) ∂ W l = α l − 1 ∗ δ l ∂ J ( W , b ) ∂ b l = ∑ u , v ( δ l ) u , v \frac{\partial{J(W,b)}}{\partial{W^l}}=\alpha^{l-1}*\delta^l\\ \frac{\partial{J(W,b)}}{\partial{b^l}}=\sum_{u,v}(\delta^l)_{u,v} WlJ(W,b)=αl1δlblJ(W,b)=u,v(δl)u,v
  • 综上,CNN反向传播过程如下:

    • 初始化各隐藏层与输出层的各 W l , b l W^l,b^l Wl,bl的值为一个随机值

    • i = 1 , 2 , . . . , n i=1,2,...,n i=1,2,...,n

      • α 1 = x i \alpha_1=x_i α1=xi

      • l = 2 , 3 , . . . , L − 1 l=2,3,...,L-1 l=2,3,...,L1

        • l l l是全连接层
          α i , l = σ ( W l α i , l − 1 + b l ) \alpha^{i,l}=\sigma(W^l\alpha^{i,l-1}+b^l) αi,l=σ(Wlαi,l1+bl)

        • l l l是卷积层
          α i , l = σ ( W l ∗ α i , l − 1 + b l ) \alpha^{i,l}=\sigma(W^l*\alpha^{i,l-1}+b^l) αi,l=σ(Wlαi,l1+bl)

        • l l l是池化层
          α i , l = p o o l ( α i , l − 1 ) \alpha^{i,l}=pool(\alpha^{i,l-1}) αi,l=pool(αi,l1)

      • 对第 L L L层(输出层)
        α i , L = s o f t m a x ( W L α i , L − 1 + b L ) \alpha^{i,L}=softmax(W^L\alpha^{i,L-1}+b^L) αi,L=softmax(WLαi,L1+bL)

      • 通过损失函数计算输出层 δ L \delta^L δL

      • l = L − 1 , . . . , 2 l=L-1,...,2 l=L1,...,2

        • l l l是全连接层
          δ i , l = ( W i , l + 1 ) T δ i , l + 1 ⊙ σ ′ ( z k l − 1 ) \delta^{i,l}=(W^{i,l+1})^T\delta^{i,l+1}⊙\sigma'(z_k^{l-1}) δi,l=(Wi,l+1)Tδi,l+1σ(zkl1)

        • l l l是卷积层
          δ i , l = δ l ∗ r o t ( W l ) ⊙ σ ′ ( z l − 1 ) \delta^{i,l}=\delta^l*rot(W^l)⊙\sigma'(z^{l-1}) δi,l=δlrot(Wl)σ(zl1)

        • l l l是池化层
          δ i , l = u p s a m p l e ( δ i , l + 1 ) ⊙ σ ′ ( z i , l ) \delta^{i,l}=upsample(\delta^{i,l+1})⊙\sigma'(z^{i,l}) δi,l=upsample(δi,l+1)σ(zi,l)

      • l = 2 , 3 , . . . , L l=2,3,...,L l=2,3,...,L,更新第 l l l层参数

        • l l l是全连接层
          W l = W l − 1 − α ∑ i = 1 n δ i , l ( α i , l − 1 ) T b l = b l − α ∑ i = 1 n δ i , l W^l=W^{l-1}-\alpha\sum_{i=1}^n\delta^{i,l}{(\alpha^{i,l-1})}^T\\ b^l=b^l-\alpha\sum_{i=1}^n\delta^{i,l} Wl=Wl1αi=1nδi,l(αi,l1)Tbl=blαi=1nδi,l

        • l l l是卷积层
          W l = W l − α ∑ i = 1 n α i , l − 1 ∗ δ i , l b l = b l − α ∑ i = 1 n ∑ u , v ( δ i , l ) u , v W^l=W^l-\alpha\sum_{i=1}^n\alpha^{i,l-1}*\delta^{i,l}\\ b^l=b^l-\alpha\sum_{i=1}^n\sum_{u,v}(\delta^{i,l})_{u,v} Wl=Wlαi=1nαi,l1δi,lbl=blαi=1nu,v(δi,l)u,v

    • 如果所有 W , b W,b Wb的变化值都小于停止迭代阈值 ϵ ϵ ϵ,则跳出迭代

    • 得到优化后的参数,模型确定

参考资料

【1】[卷积神经网络(CNN)反向传播算法推导][https://zhuanlan.zhihu.com/p/61898234]

【2】[卷积神经网络概念与原理][https://blog.csdn.net/yunpiao123456/article/details/52437794]

【3】卷积神经网络(CNN)反向传播算法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值