卷积神经网络中的参数学习

参数学习

在卷积网络中,参数为卷积核中权重以及偏置。和全连接前馈网络类似,卷
积网络也可以通过误差反向传播算法来进行参数学习。

在全连接前馈神经网络中,梯度主要通过每一层的误差项δ进行反向传播,
并进一步计算每层参数的梯度。
参见公式:
δ ( l ) ≜ ∂ L ( y , y ^ ) ∂ z ( l ) = = f l ′ ( z ( l ) ) ⊙ ( ( W ( l + 1 ) ) T δ ( l + 1 ) ) \delta^{(l)}\triangleq\dfrac{\partial\mathcal{L}(\mathbf{y},\hat{\mathbf{y}})}{\partial\mathbf{z}^{(l)}} ==f'_l(\mathbf z^{(l)})\odot\big((W^{(l+1)})^{\mathrm T}\delta^{(l+1)}\big) δ(l)z(l)L(y,y^)==fl(z(l))((W(l+1))Tδ(l+1))

在卷积神经网络中,主要有两种不同功能的神经层:卷积层和汇聚层。而
参数为卷积核以及偏置,因此只需要计算卷积层中参数的梯度。

不失一般性,对第 l l l 层为卷积层,第 l − 1 l − 1 l1层的输入特征映射为 X ( l − 1 ) X^{(l−1)} X(l1) R M × N × D R^{M×N×D} RM×N×D ,通过卷积计算得到第l层的特征映射净输入 Z ( l ) ∈ R M ′ × N ′ × P Z^(l) ∈ R^{M ′^×N^′ ×P} Z(l)RM×N×P
。第 l l l层的第 p ( 1 ≤ p ≤ P ) p(1 ≤ p ≤ P) p(1pP)个特征映射净输入
Z ( l , p ) = ∑ d = 1 D W ( l , p , d ) ⊗ X ( l − 1 , d ) + b ( l , p ) Z^{(l,p)}=\sum_{d=1}^{D}W^{(l,p,d)}\otimes X^{(l-1,d)}+b^{(l,p)} Z(l,p)=d=1DW(l,p,d)X(l1,d)+b(l,p)
其中 W ( l , p , d ) W^{(l,p,d)} W(l,p,d) b ( l , p ) b^{(l,p)} b(l,p)为卷积核以及偏置。第l层中共有 P × D P × D P×D个卷积核和 P P P 个 偏置,可以分别使用链式法则来计算其梯度。

损失函数关于第l层的卷积核 W ( l , p , d ) W^(l,p,d) W(l,p,d) 的偏导数为:
∂ L ( Y , Y ^ ) ∂ W ( l , p , d ) = ∂ L ( Y , Y ^ ) ∂ Z ( l , p ) ⊗ X ( l − 1 , d ) = δ ( l , p ) ⊗ X ( l − 1 , d ) , \begin{array}{c}\dfrac{\partial\mathcal{L}(Y,\hat{Y})}{\partial W^{(l,p,d)}}&=\dfrac{\partial\mathcal{L}(Y,\hat{Y})}{\partial Z^{(l,p)}}\otimes X^{(l-1,d)}\\ &=\delta^{(l,p)}\otimes X^{(l-1,d)},\end{array} W(l,p,d)L(Y,Y^)=Z(l,p)L(Y,Y^)X(l1,d)=δ(l,p)X(l1,d),
其中 δ ( l , p ) = ∂ L ( Y , Y ^ ) ∂ Z ( l , p ) \delta^{(l,p)}=\frac{\partial{\cal L}(Y,\hat{Y})}{\partial Z^{(l,p)}} δ(l,p)=Z(l,p)L(Y,Y^)
为损失函数关于第l层的第p个特征映射净输入Z^{(l,p)} 的偏导数。

同理可得,损失函数关于第l层的第p个偏置b^{(l,p)} 的偏导数为:
∂ L ( Y , Y ^ ) ∂ b ( l , p ) = ∑ i , j [ δ ( l , p ) ] i , j \dfrac{\partial\mathcal L(Y,\hat Y)}{\partial b^{(l,p)}}=\sum_{i,j}[\delta^{(l,p)}]_{i,j} b(l,p)L(Y,Y^)=i,j[δ(l,p)]i,j

卷积网络中,每层参数的梯度依赖其所在层的误差项 δ ( l , p ) δ^{(l,p)} δ(l,p)

l l l层的第 p p p个特征映射的误差项 δ ( l , p ) δ^(l,p) δ(l,p) 的具体推导过程如下:
δ ( l , p ) ≜ ∂ L ( Y , Y ^ ) ∂ Z ( l , p ) = ∂ X ( l , p ) ∂ Z ( l , p ) ⋅ ∂ Z ( l + 1 , p ) ∂ X ( l , p ) ⋅ ∂ L ( Y , Y ^ ) ∂ Z ( l , p ) = f l ′ ( Z ( l , p ) ) ⊙ np ( δ ( l + 1 , p ) ) \begin{array}{l}\delta^{(l,p)}&\triangleq\dfrac{\partial\mathcal{L}(Y,\hat{Y})}{\partial Z^{(l,p)}}\\ &=\dfrac{\partial X^{(l,p)}}{\partial Z^{(l,p)}}\cdot\dfrac{\partial Z^{(l+1,p)}}{\partial X^{(l,p)}}\cdot\dfrac{\partial\mathcal{L}(Y,\hat{Y})}{\partial Z^{(l,p)}}\\ &=f'_l(Z^{(l,p)})\odot\textbf{np}(\delta^{(l+1,p)})\end{array} δ(l,p)Z(l,p)L(Y,Y^)=Z(l,p)X(l,p)X(l,p)Z(l+1,p)Z(l,p)L(Y,Y^)=fl(Z(l,p))np(δ(l+1,p))

其中 f l ′ ( ⋅ ) f^′_l (·) fl()为第 l l l层使用的激活函数导数,up为上采样函数(upsampling),与汇聚层中使用的下采样操作刚好相反。如果下采样是最大汇聚(max pooling),误差项 δ ( l + 1 , p ) δ^{(l+1,p)} δ(l+1,p) 中每个值会直接传递到上一层对应区域中的最大值所对应的神经元,该区域中其它神经元的误差项的都设为0。如果下采样是平均汇聚(meanpooling),误差项 δ ( l + 1 , p ) δ^{(l+1,p)} δ(l+1,p) 中每个值会被平均分配到上一层对应区域中的所有神经元上。

卷积并非真正的矩阵乘积,
因此这里计算的偏导数并非
真正的矩阵偏导数,我们可
以把X,Z 都看作向量。

卷积层 l + 1 l+1 l+1层为卷积层时,假设特征映射净输入 Z ( l + 1 ) Z^(l+1) Z(l+1) R M ′ × N ′ × P R^{M^′ ×N^′ ×P} RM×N×P
,其中参见公式第 p ( 1 ≤ p ≤ P ) p(1 ≤ p ≤ P) p(1pP)个特征映射净输入
Z ( l + 1 , p ) = ∑ d = 1 D W ( l + 1 , p , d ) ⊗ X ( l , d ) + b ( l + 1 , p ) Z^{(l+1,p)}=\sum_{d=1}^{D}W^{(l+1,p,d)}\otimes X^{(l,d)}+b^{(l+1,p)} Z(l+1,p)=d=1DW(l+1,p,d)X(l,d)+b(l+1,p)
其中W^{(l+1,p,d)} 和b^{(l+1,p)} 为第 l + 1 l+1 l+1层的卷积核以及偏置。第 l + 1 l+1 l+1层中共有 P × D P ×D P×D个卷积核和P 个偏置。

l l l层的第 d d d个特征映射的误差项 δ ( l , d ) δ^(l,d) δ(l,d) 的具体推导过程如下:
δ ( l , d ) ≜ ∂ L ( Y , Y ^ ) ∂ Z ( l , d ) = ∂ X ( l , d ) ∂ Z ( l , d ) ⋅ ∂ L ( Y , Y ^ ) ∂ X ( l , d ) = f l ′ ( Z ( l ) ) ⊙ ∑ p = 1 P ( r o t 180 ( W ( l + 1 , p , d ) ) ⊗ ~ ∂ L ( Y , Y ^ ) ∂ Z ( l + 1 , p ) ) = f l ′ ( Z ( l ) ) ⊙ ∑ n = 1 P ( rot 180 ( W ( l + 1 , p , d ) ) ⊗ ~ δ ( l + 1 , p ) ) \begin{array}{c}\delta^{(l,d)}&\triangleq\dfrac{\partial\mathcal{L}(Y,\hat{Y})}{\partial Z^{(l,d)}}\\ &=\dfrac{\partial X^{(l,d)}}{\partial Z^{(l,d)}}\cdot\dfrac{\partial\mathcal{L}(Y,\hat{Y})}{\partial X^{(l,d)}}\\&=f_{l}^{\prime}(Z^{(l)})\odot\sum_{p=1}^{P}\left(\mathbf{rot180}(W^{(l+1,p,d)})\tilde{\otimes}\frac{\partial\mathcal{L}(Y,\hat{Y})}{\partial Z^{(l+1,p)}}\right)\\&=f'_l(Z^{(l)})\odot\sum\limits_{n=1}^{P}\Big(\text{rot}180(W^{(l+1,p,d)})\tilde{\otimes}\delta^{(l+1,p)}\Big)\end{array} δ(l,d)Z(l,d)L(Y,Y^)=Z(l,d)X(l,d)X(l,d)L(Y,Y^)=fl(Z(l))p=1P(rot180(W(l+1,p,d))~Z(l+1,p)L(Y,Y^))=fl(Z(l))n=1P(rot180(W(l+1,p,d))~δ(l+1,p))
其中 ⊗ ~ \tilde{\otimes} ~为宽卷积。

局部连接 在卷积层(假设是第 l l l层)中的每一个神经元都只和下一层(第 l − 1 l − 1 l1层)中某个局部窗口内的神经元相连,构成一个局部连接网络。如图所示,
积层和下一层之间的连接数大大减少,有原来的$n^l ×n^{l−1} 个连接变为 个连接变为 个连接变为n^l ×m$
个连接,m为滤波器大小。

权重共享 从公式可以看出,作为参数的滤波器 w ( l ) w^{(l)} w(l) 对于第 l l l层的所有的
神经元都是相同的。如图中,所有的同颜色连接上的权重是相同的。

由于局部连接和权重共享,卷积层的参数只有一个 m m m维的权重 w ( l ) w^{(l)} w(l) 1 1 1
的偏置 b ( l ) b^{(l)} b(l) ,共 m + 1 m + 1 m+1个参数。参数个数和神经元的数量无关。此外,第 l l l层的
神经元个数不是任意选择的,而是满足 n ( l ) = n ( l − 1 ) − m + 1 n^{(l)} = n^{(l−1)} − m + 1 n(l)=n(l1)m+1

猜你喜欢

转载自blog.csdn.net/AI_ayuan/article/details/129452180