深度学习Deep Learning(02):CNN推导

22 篇文章 1 订阅
15 篇文章 2 订阅

8、CNN公式推导

(1)说明
(2)符号说明
  • l………………当前层
  • $${​{M_j}}$$………………输入maps的集合
  • up()………………上采样函数
  • ㅇ………………..表示对应每个元素相乘
  • β………………..下采样对应的“权重”(定义为常量)
  • $${p_i^{l - 1}}$$……………….$${​{\rm{x}}_i^{l - 1}}$$中在卷积运算中逐个与$${k_{ij}^l}$$相乘的patch
  • down()………………下采样函数
(3)卷积层
  • 1)卷积层计算公式

    • $${\rm{x}}_j^l = f(\sum\limits_{i \in {M_j}} {​{\rm{x}}_i^{l - 1}*k_{ij}^l + b_j^l} )$$
    • $${\rm{x}}_j^l$$ 表示第l层的第jfeature map特征图
    • 可以对照到上面多个卷积核的例子看
    • j相当于是第几个卷积核
    • i相当于对应卷积核或是map的维度
  • 2)卷积层梯度计算

    • paper中叫做使用BP计算当前层layer单元的灵敏度(sensitivity)
    • 也就是误差的计算,之前我在BP神经网络中推导过,这里不再给出
    • 当前层的第j个unit的灵敏度$$\delta _{\rm{j}}^l$$结果就是:先对下一层的节点(连接到当前层l的感兴趣节点的第l+1层的节点)的灵敏度求和(得到$$\delta _{\rm{j}}^{l + 1}$$),然后乘以这些连接对应的权值(连接第l层感兴趣节点和第l+1层节点的权值)W。再乘以当前层l的该神经元节点的输入u的激活函数f的导数值
    • $$\delta _{\rm{j}}^l = \beta _j^{l + 1}({f^'}(u_j^l) \circ up(\delta _{\rm{j}}^{l + 1}))$$
    • 下采样的“weights”可以定义为常量β(可以查看下面Pooling层输出的表示)
    • up表示上采样操作,因为我们之前假设每个卷积层之后跟着一个Pooling层,所以反向传播需要进行上采样
    • up上采样可以使用克罗内克积(Kronecker)实现,如果A是一个 m x n 的矩阵,而B是一个 p x q 的矩阵,克罗内克积则是一个 mp x nq 的矩阵,$$up({\rm{x}}) = {\rm{x}} \otimes {1_{n \times n}}$$
      这里写图片描述
    • 所以偏置梯度为:$${​{\partial E} \over {\partial {b_j}}} = \sum\limits_{u,v} {​{​{(\delta _{\rm{j}}^l)}_{uv}}} $$ (因为神经网络中对b的梯度为:($${​{\partial E} \over {\partial b}} = {​{\partial E} \over {\partial u}}{​{\partial u} \over {\partial b}} = \delta $$(δ就是误差,根据定义的代价函数E得来的),其中u为layer的输入:$${u^l} = {W^l}{​{\rm{x}}^{l - 1}} + {b^l}$$
    • 所以卷积核权值的梯度为:$${​{\partial E} \over {\partial k_{ij}^l}} = \sum\limits_{u,v} {​{​{(\delta _{\rm{j}}^l)}_{uv}}(p_i^{l - 1})uv} $$ (其中:$${p_i^{l - 1}}$$$${​{\rm{x}}_i^{l - 1}}$$中在卷积运算中逐个与$${k_{ij}^l}$$相乘的patch,因为权重的系数就是对应的patch,对权重求导,就是这个系数)
(4)子采样层(Sub-sampling Layers)
  • 1)子采样层计算公式

    • $${\rm{x}}_j^l = f(\beta _j^ldown({\rm{x}}_{\rm{j}}^{l - 1}) + b_j^l)$$
    • 乘以一个常数权重β,再加上偏置,然后再调用激活函数(这里和上面的pooling的操作有所不同,但总的来数还是下采样的过程)
  • 2)梯度计算

    • 敏感度公式:$$\delta _{\rm{j}}^l = {f^'}(u_j^l) \circ conv2(\delta _{\rm{j}}^{l + 1},rot180(k_j^{l + 1}),'full')$$
    • 和上面的其实类似,就是换成下一层对应的权重k,rot180()是旋转180度,因为卷积的时候是将卷积核旋转180度之后然后在点乘求和的
    • 对偏置b的梯度与上面的一样
    • 对于乘法偏置(文中叫 multiplicative bias)β的梯度为:$${​{\partial E} \over {\partial {\beta _j}}} = \sum\limits_{u,v} {​{​{(\delta _{\rm{j}}^l \circ d_j^l)}_{uv}}} $$,其中$$d_j^l = down({\rm{x}}_j^{l - 1})$$
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值