深度学习4 -- 卷积神经网络 2
该文仅作为CNN原理理解的辅助只用,具体请看参考资料
·
引言
- 第二部分主要介绍卷积神经网络的训练,该文为总结方便后续复习使用。
Pooling层输出值的计算
- Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在n * n的样本中取最大值,作为采样后的样本值。下图是2*2 max pooling:
- 除了Max Pooing之外,常用的还有Mean Pooling——取各样本的平均值,经过pooling层后深度是不变的
卷积神经网络的反向传播:
关于卷积层的训练
n e t l = c o n v ( W l , a l − 1 + w b ) (1) net^{l} = conv(W^{l}, a^{l - 1} + w_{b})\tag{1} netl=conv(Wl,al−1+wb)(1)
a i , j l − 1 = f l − 1 ( n e t i , j l − 1 ) (2) a_{i,j}^{l-1} = f^{l-1}(net^{l-1}_{i,j})\tag{2} ai,jl−1=fl−1(neti,jl−1)(2)
- 上式中,net,a都是数组,W是由Wij组成的数组,conv表示卷积操作。
- 在这里,我们假设第中的每个δ值都已经算好,我们要做的是用链式求导法则计算第层l-1层每个神经元的误差项。
δ i , j l − 1 = ∂ E d ∂ n e t i , j l − 1 = ∂ E d ∂ a i , j l − 1 ∗ ∂ a i , j l − 1 ∂ n e t i , j l − 1 (3) \delta_{i,j}^{l-1} = \frac{\partial{Ed}}{\partial{net_{i,j}^{l-1}}} = \frac{\partial{Ed}}{\partial{a_{i,j}^{l-1}}}*\frac{\partial{a_{i,j}^{l-1}}}{\partial{net_{i,j}^{l-1}}}\tag{3} δi,jl−1=∂neti,jl−1∂Ed=∂ai,jl−1∂Ed∗∂neti,jl−1∂ai,jl−1(3) - 互相关的概念以及当步长为S的时候如何求解可以查看主要参考资料
卷积层filter权重梯度的计算

参考资料
更多推荐
所有评论(0)