引言
- 第二部分主要介绍卷积神经网络的训练,该文为总结方便后续复习使用。
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权重梯度的计算
