卷积神经网络反向传播算法

卷积神经网络中的反向传播算法学习


在常规神经网络的基础上,CNN的正向传播原理比较容易理解,而反向传播算法的学习比较难以掌握,根据网上的一些教学,以批量梯度下降法为例来描述反向传播算法。对算法的主要公式和解释整理如下:


    
  输入:m个图片样本.
  
  CNN模型的层数L和所有隐藏层的类型,对于卷积层,要定义卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步幅S。对于池化层,要定义池化区域大小k和池化标准(MAX或Average),对于全连接层,要定义全连接层的激活函数(输出层除外)和各层的神经元个数。梯度迭代参数迭代步长α,最大迭代次数MAX与停止迭代阈值ϵ.
   
  输出:CNN模型各隐藏层与输出层的 W , b W,b W,b.
  
    1) 初始化各隐藏层与输出层的各 W , b W,b W,b的值为一个随机值;
    
    2)for iter to 1 to MAX:    
    
    2_1) for i =1 to m:
      a) 将CNN输入a1设置为xi对应的张量
      
      b) for l=2 to L-1,根据下面3种情况进行前向传播算法计算:
      
      b_1) 如果当前是全连接层,则有 a i , l = σ ( z i , l ) = σ ( W l a i , l − 1 + b l ) a^{i,l} = \sigma(z^{i,l}) = \sigma(W^la^{i,l-1} + b^{l}) ai,l=σ(zi,l)=σ(Wlai,l1+bl)
      
      b_2) 如果当前是卷积层,则有 a i , l = σ ( z i , l ) = σ ( W l ∗ a i , l − 1 + b l ) a^{i,l} = \sigma(z^{i,l}) = \sigma(W^l*a^{i,l-1} + b^{l}) ai,l=σ(zi,l)=σ(Wlai,l1+bl)
      
      b_3) 如果当前是池化层,则有 a i , l = p o o l ( a i , l − 1 ) a^{i,l}= pool(a^{i,l-1}) ai,l=pool(ai,l1),
        这里的pool指按照池化区域大小k和池化标准将输入张量缩小的过程。
      
      c) 对于输出层第L层: a i , L = s o f t m a x ( z i , L ) = s o f t m a x ( W L a i , L − 1 + b L ) a^{i,L}= softmax(z^{i,L}) = softmax(W^{L}a^{i,L-1} +b^{L}) ai,L=softmax(zi,L)=softmax(WLai,L1+bL)
      
      c_1) 通过损失函数计算输出层的: δ i , L \delta^{i,L} δi,L
      
      d) for l= L-1 to 2, 根据下面3种情况进行进行反向传播算法计算:
      
      d_1) 如果当前是全连接层: δ i , l = ( W l + 1 ) T δ i , l + 1 ⊙ σ ′ ( z i , l ) \delta^{i,l} = (W^{l+1})^T\delta^{i,l+1}\odot \sigma^{'}(z^{i,l}) δi,l=(Wl+1)Tδi,l+1σ(zi,l)
      
      d_2) 如果当前是卷积层: δ i , l = δ i , l + 1 ∗ r o t 180 ( W l + 1 ) ⊙ σ ′ ( z i , l ) \delta^{i,l} = \delta^{i,l+1}*rot180(W^{l+1}) \odot \sigma^{'}(z^{i,l}) δi,l=δi,l+1rot180(Wl+1)σ(zi,l)
      
      d_3) 如果当前是池化层: δ i , l = u p s a m p l e ( δ i , l + 1 ) ⊙ σ ′ ( z i , l ) \delta^{i,l} = upsample(\delta^{i,l+1}) \odot \sigma^{'}(z^{i,l}) δi,l=upsample(δi,l+1)σ(zi,l)
      
    2_2) for l = 2 to L,根据下面2种情况更新第l层的 W l , b l W^l,b^l Wl,bl:
    
      2_2-1) 如果当前是全连接层: W l = W l − α ∑ i = 1 m δ i , l ( a i , l − 1 ) T W^l = W^l -\alpha \sum\limits_{i=1}^m \delta^{i,l}(a^{i, l-1})^T Wl=Wlαi=1mδi,l(ai,l1)T b l = b l − α ∑ i = 1 m δ i , l b^l = b^l -\alpha \sum\limits_{i=1}^m \delta^{i,l} bl=blαi=1mδi,l
      
      2_2-2) 如果当前是卷积层,对于每一个卷积核有: W l = W l − α ∑ i = 1 m δ i , l ∗ a i , l − 1 W^l = W^l -\alpha \sum\limits_{i=1}^m \delta^{i,l}*a^{i, l-1} Wl=Wlαi=1mδi,lai,l1 b l = b l − α ∑ i = 1 m ∑ u , v ( δ i , l ) u , v b^l = b^l -\alpha \sum\limits_{i=1}^m \sum\limits_{u,v}(\delta^{i,l})_{u,v} bl=blαi=1mu,v(δi,l)u,v
      
    2_3) 如果所有W,b的变化值都小于停止迭代阈值ϵ,则跳出迭代循环到步骤3。
    
    3) 输出各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b。
    
参考资源:
1.刘建平Pinard
2.Neural Networks and Deep Learning by By Michael Nielsen
3.CS231n Convolutional Neural Networks for Visual Recognition, Stanford

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值