神经网络基础(四)——卷积神经网络

1. 卷积神经网络是啥

1.1 卷积神经网络长啥样?

一个好的卷积神经网络,大概类似于下面这种结构
在这里插入图片描述
卷积神经网络由:卷积层(Convolution Layer)池化层层(Pooling Layer)全连接层(Fully Connected Layer) 三种结构自由搭配组成。

但是通常的套路均为:

一个Input Layer+ N个卷积层Convolution Layer叠加,然后(可选)叠加一个Pooling Layer,重复这个结构M次,最后加上K个Fully Connected Layer

那么图1的结构为:
Input + 2 * [1 * Conv + Pool] + 2 * Fully Connected Network
也就是说 N=1, M=2, K=2

1.2 拿来干啥?

图像、语音识别领域的重要突破都是卷积神经网络取得的,除了上述之外,还有其他的功能。

不过,最主要的就是在图像、语音和文本方面的应用。
以图像为例:

  1. 要获得某些特征,不需要观察全部图片,只要知道图片的一小部分即可。(filter的作用)
  2. 同样的特征,可能出现在图片中的不同部分,但是代表的含义是一样的。检测同种特征,只要共享参数就行了,不必要针对不同位置的同一特征训练不同的神经元。
  3. 做subsampling不会影响对图像意义的理解。

2. 三种层都是些啥?

2.1 卷积层

在这里插入图片描述

  • 排列方式:每层的神经元是按照三维排列的,也就是排成一个长方体的样子,有宽度、高度和深度
    那么,按照上述定义,输入层的长宽对应输入图像的宽度和高度,深度为1。

  • 作用:
    卷积层对其进行操作后,得到了三个Feature Map。就是这个卷积层包含三个Filter,也就是三套参数,每个Filter都可以把原始输入图像卷积得到一个Feature Map,三个Filter就可以得到三个Feature Map,也叫做:通道(channel)。至于一个卷积层可以有多少个Filter,那是可以自由设定的。也就是说,卷积层的Filter个数也是一个超参数

2.2 池化层

在这里插入图片描述

  • 排列方式同卷积层。
  • 作用:Pooling层对三个Feature Map做了下采样,得到了三个更小的Feature Map。

2.3 全连接层

全连接神经网络每层的神经元是按照一维排列的,也就是排成一条线。

3. 卷积神经网络的计算

3.1 卷积的前向计算

3.1.1 互相关计算

对于一个 5 × 5 5 \times 5 5×5的图片,通过进行 3 × 3 3 \times 3 3×3的filter卷积,最后得到一个 3 × 3 3 \times 3 3×3的Feature Map。
在这里插入图片描述
X i , j X_{i,j} Xi,j表示图像的第 i i i j j j列, w m n w_{mn} wmn表示权重的第 m m m n n n列, w b w_b wb表示filter的偏置项,用 a i j a_{ij} aij表示Feature Map的第 i i i j j j列元素,用 f f f表示激活函数,这里的激活函数选用 R e l u Relu Relu,该函数具体细节为:Relu函数,则计算公式为:
a i , j = f ( ∑ m = 0 2 ∑ n = 0 2 w m , n x i + m , j + n + w b ) (3.1) a_{i,j}=f(\sum_{m=0}^{2}\sum_{n=0}^{2}w_{m,n}x_{i+m,j+n}+w_b) \tag{3.1} ai,j=f(m=02n=02wm,nxi+m,j+n+wb)(3.1)
公式(3.1),叫做互相关
a 0 , 0 = f ( ∑ m = 0 2 ∑ n = 0 2 w m , n x m + 0 , n + 0 + w b ) = f ( w 0 , 0 x 0 , 0 + w 0 , 1 x 0 , 1 + w 0 , 2 x 0 , 2 + w 1 , 0 x 1 , 0 + w 1 , 1 x 1 , 1 + w 1 , 2 x 1 , 2 + w 2 , 0 x 2 , 0 + w 2 , 1 x 2 , 1 + w 2 , 2 x 2 , 2 + w b ) = f ( 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 1 + 0 ) = f ( 4 ) = 4 \begin{aligned} a_{0,0}&=f(\sum_{m=0}^{2}\sum_{n=0}^{2}w_{m,n}x_{m+0,n+0}+w_b)\\ &=f(w_{0,0}x_{0,0}+w_{0,1}x_{0,1}+w_{0,2}x_{0,2}+w_{1,0}x_{1,0}+w_{1,1}x_{1,1}+w_{1,2}x_{1,2}+w_{2,0}x_{2,0}+w_{2,1}x_{2,1}+w_{2,2}x_{2,2}+w_b)\\ &=f(1+0+1+0+1+0+0+0+1+0)\\ &=f(4) &=4 \end{aligned} a0,0=f(m=02n=02wm,nxm+0,n+0+wb)=f(w0,0x0,0+w0,1x0,1+w0,2x0,2+w1,0x1,0+w1,1x1,1+w1,2x1,2+w2,0x2,0+w2,1x2,1+w2,2x2,2+wb)=f(1+0+1+0+1+0+0+0+1+0)=f(4)=4

a 0 , 1 = f ( ∑ m = 0 2 ∑ n = 0 2 w m , n x m + 0 , n + 1 + w b ) = r e l u ( w 0 , 0 x 0 , 1 + w 0 , 1 x 0 , 2 + w 0 , 2 x 0 , 3 + w 1 , 0 x 1 , 1 + w 1 , 1 x 1 , 2 + w 1 , 2 x 1 , 3 + w 2 , 0 x 2 , 1 + w 2 , 1 x 2 , 3 + w 2 , 2 x 2 , 3 + w b ) = r e l u ( 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 ) = r e l u ( 3 ) = 3 \begin{aligned} a_{0,1}&=f(\sum_{m=0}^{2}\sum_{n=0}^{2}w_{m,n}x_{m+0,n+1}+w_b)\\ &=relu(w_{0,0}x_{0,1}+w_{0,1}x_{0,2}+w_{0,2}x_{0,3}+w_{1,0}x_{1,1}+w_{1,1}x_{1,2}+w_{1,2}x_{1,3}+w_{2,0}x_{2,1}+w_{2,1}x_{2,3}+w_{2,2}x_{2,3}+w_b)\\ &=relu(1+0+0+0+1+0+0+0+1+0)\\ &=relu(3)\\ &=3 \end{aligned} a0,1=f(m=02n=02wm,nxm+0,n+1+wb)=relu(w0,0x0,1+w0,1x0,2+w0,2x0,3+w1,0x1,1+w1,1x1,2+w1,2x1,3+w2,0x2,1+w2,1x2,3+w2,2x2,3+wb)=relu(1+0+0+0+1+0+0+0+1+0)=relu(3)=3
在这里插入图片描述
动画过程为:
在这里插入图片描述

3.1.2 卷积计算

在本节中,定义了这样一个操作:
C = A ∗ B (3.2) C=A*B \tag{3.2} C=AB(3.2)
公式(3.2)的运算规则为:
C s , t = ∑ 0 m a − 1 ∑ 0 n a − 1 A m , n B s − m , t − n (3.3) \begin{aligned} C_{s,t}&=\sum_0^{m_a-1}\sum_0^{n_a-1} A_{m,n}B_{s-m,t-n} \end{aligned} \tag{3.3} Cs,t=0ma10na1Am,nBsm,tn(3.3)
其中,$s,t $满足: 0 ≤ s < m a + m b − 1 , 0 ≤ t < n a + n b − 1 0\le{s}\lt{m_a+m_b-1}, 0\le{t}\lt{n_a+n_b-1} 0s<ma+mb1,0t<na+nb1
在这里插入图片描述
也就是说
C 1 , 1 = a 00 x 11 + a 01 x 10 + a 10 x 01 + a 11 x 00 \begin{aligned} C_{1,1}&=a_{00}x_{11}+a_{01}x_{10}+a_{10}x_{01}+a_{11}x_{00} \end{aligned} C1,1=a00x11+a01x10+a10x01+a11x00

在神经网络中,把公式(3.3)称作卷积

3.1.3 互相关和卷积的转化

对于公式(3.1)
a i , j = f ( ∑ m = 0 2 ∑ n = 0 2 w m , n x i + m , j + n + w b ) (3.1) a_{i,j}=f(\sum_{m=0}^{2}\sum_{n=0}^{2}w_{m,n}x_{i+m,j+n}+w_b) \tag{3.1} ai,j=f(m=02n=02wm,nxi+m,j+n+wb)(3.1)
把矩阵X翻转180度,然后再交换X和W的位置(即把X放在左边而把W放在右边。卷积满足交换率,这个操作不会导致结果变化),那么卷积就变成了互相关。就可以写成如下表达形式:
A = f ( X d ∗ W d + w b ) (3.4) A=f(X_d*W_d+w_b) \tag{3.4} A=f(XdWd+wb)(3.4)
举个栗子:
互相关操作

Area_11: a 11 a_{11} a11Area_12: a 12 a_{12} a12
Area_21: a 21 a_{21} a21Area_22: a 22 a_{22} a22

C 11 = w 11 a 11 + w 12 a 12 + w 21 a 21 + w 22 a 22 C_{11}=w_{11}a_{11}+w_{12}a_{12}+w_{21}a_{21}+w_{22}a_{22} C11=w11a11+w12a12+w21a21+w22a22

卷积操作
翻转之后

Area_11: a 22 a_{22} a22Area_12: a 21 a_{21} a21
Area_21: a 12 a_{12} a12Area_22: a 11 a_{11} a11

C 11 = w 11 A r e a 22 + w 12 A r e a 21 + w 21 A r e a 12 + w 22 A r e a 11 C_{11}=w_{11}Area_{22}+w_{12}Area_{21}+w_{21}Area_{12}+w_{22}Area_{11} C11=w11Area22+w12Area21+w21Area12+w22Area11
C 11 = w 11 a 11 + w 12 a 12 + w 21 a 21 + w 22 a 22 C_{11}=w_{11}a_{11}+w_{12}a_{12}+w_{21}a_{21}+w_{22}a_{22} C11=w11a11+w12a12+w21a21+w22a22

3.2 stride

上面的计算过程中,步幅(stride)为1。步幅可以设为大于1的数。例如,当步幅为2时,Feature Map计算如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

卷积前图像的的宽度记为 W 1 W_1 W1高度记为 H 1 H_1 H1,卷积后Feature Map的宽度记为 W 2 W_2 W2高度 H 2 H_2 H2 F F Ffilter的宽度 P P PZero Padding的数量(Zero Padding是指在原始图像周围补几圈0,如果 P P P的值是1,那么就补1圈0;) S S S步幅,则 W 1 , H 1 , W 2 , H 2 W_1, H_1, W_2, H_2 W1,H1,W2,H2之间的关系为:
W 2 = ( W 1 − F + 2 P ) / S + 1 (3.2) \begin{aligned} W_2 &= (W_1 - F + 2P)/S + 1 \tag{3.2} \end{aligned} W2=(W1F+2P)/S+1(3.2)
H 2 = ( H 1 − F + 2 P ) / S + 1 (3.3) \begin{aligned} H_2 &= (H_1 - F + 2P)/S + 1 \tag{3.3} \end{aligned} H2=(H1F+2P)/S+1(3.3)

以前面的例子来说, W 1 = 5 W_1=5 W1=5图像宽度, S = 3 S=3 S=3filter宽度,Zero Padding=0,步幅 S = 2 S=2 S=2,则
W 2 = ( 5 − 3 + 2 × 0 ) / 2 + 1 = 2 H 2 = ( 5 − 3 + 2 × 0 ) / 2 + 1 = 2 \begin{aligned} W_2 &= (5 - 3 + 2 \times 0)/2 + 1= 2\\ H_2 &= (5 - 3 + 2 \times 0)/2 + 1 = 2 \end{aligned} W2H2=(53+2×0)/2+1=2=(53+2×0)/2+1=2

3.3 深度大于1的卷积计算

如果卷积前的图像深度为D,那么相应的filter的深度也必须为D
a d , i , j = f ( ∑ d = 0 D − 1 ∑ m = 0 F − 1 ∑ n = 0 F − 1 w d , m , n x d , i + m , j + n + w b ) (3.4) a_{d,i,j}=f(\sum_{d=0}^{D-1}\sum_{m=0}^{F-1}\sum_{n=0}^{F-1}w_{d,m,n}x_{d,i+m,j+n}+w_b) \tag{3.4} ad,i,j=f(d=0D1m=0F1n=0F1wd,m,nxd,i+m,j+n+wb)(3.4)
D是深度;F是filter的大小(宽度或高度,两者相同); w d , m , n w_{d,m,n} wd,m,n表示filter的第 d d d层第 m m m行第 n n n列权重; a d , i , j a_{d,i,j} ad,i,j表示图像的第 d d d层第 i i i行第 j j j列像素。
在这里插入图片描述

这里面体现了局部连接和权值共享:每层神经元只和上一层部分神经元相连(卷积计算规则),且filter的权值对于上一层所有神经元都是一样的。对于包含两个333的fitler的卷积层来说,其参数数量仅有(333+1)*2=56个,且参数数量与上一层神经元个数无关。与全连接神经网络相比,其参数数量大大减少了。

3.4 pooling

Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在n*n的样本中取最大值,作为采样后的样本值。下图是 2 × 2 2 \times 2 2×2 的 max pooling:

在这里插入图片描述
除了Max Pooing之外,常用的还有Mean Pooling——取各样本的平均值。

对于深度为D的Feature Map,各层独立做Pooling,因此Pooling后的深度仍然为D。


4. 卷积神经网络的数学推导

训练的原理同全连接神经网络是一样的:利用链式求导计算损失函数对每个权重的偏导数(梯度),然后根据梯度下降公式更新权重。训练算法依然是反向传播算法。
在全连接神经网路中,训练步骤分为:

  1. 前向计算
    计算第 j j j个神经元的输出值 a j = f ( W T ⋅ X ) a_j=f(\boldsymbol{W}^T \centerdot \boldsymbol{X}) aj=f(WTX)
  2. 计算误差
    反向计算神经元 j j j的误差项 δ j = ∂ E d ∂ n e t j \delta_j=\frac{\partial{E_d}}{\partial{net_j}} δj=netjEd
  3. 更新权重及偏差
    计算每个神经元连接权重 w j i w_{ji} wji的梯度( w j i w_{ji} wji表示从神经元 j j j连接到神经元 i i i的权重),公式为 ∂ E d ∂ w j i = a i δ j \frac{\partial{E_d}}{\partial{w_{ji}}}=a_i\delta_j wjiEd=aiδj,其中, a i a_{i} ai表示神经元 i i i的输出

对于卷积神经网络,由于涉及到局部连接下采样的等操作,影响到了第二步误差项 δ \delta δ的具体计算方法,而权值共享影响了第三步权重 w w w的梯度的计算方法。

4.1 卷积层

4.1.1 计算目标

我们的任务是计算 w i , j w_{i,j} wi,j的梯度,即 ∂ E d ∂ w i , j \frac{\partial{E_d}}{\partial{w_{i,j}}} wi,jEd以及对偏置项权重的导数: ∂ E d ∂ w b \frac{\partial{E_d}}{\partial{w_b}} wbEd

4.1.2 卷积层filter权重梯度的计算

我们要在得到第 l l l层卷积区域误差的情况下,计算filter的权重的梯度,由于卷积层是权重共享的,因此梯度的计算稍有不同。
在这里插入图片描述
如上图所示:
n e t l = c o n v ( W l , a l − 1 ) + W b (4.1) \begin{aligned} \bold{net}^{l}&=conv(\bold{W}^{l}, \bold{a}^{l-1})+\bold{W_b} \tag{4.1} \end{aligned} netl=conv(Wl,al1)+Wb(4.1)
a i , j l − 1 = f l − 1 ( n e t i , j l − 1 ) (4.2) \begin{aligned} a^{l-1}_{i,j}&=f^{l-1}(net^{l-1}_{i,j}) \tag{4.2} \end{aligned} ai,jl1=fl1(neti,jl1)(4.2)

  • a l − 1 \bold{a}^{l-1} al1表示第 l − 1 l-1 l1输出的向量形式
  • a i , j l − 1 a^{l-1}_{i,j} ai,jl1表示第 l − 1 l-1 l1层第 i i i行第 j j j列神经元的输出
  • w i j l w^l_{ij} wijl是第 l l l层filter的权重
  • W l \bold{W}^{l} Wl是第 l l l层filter的权重矩阵
  • w b w_b wb表示filter的偏置项
  • W b \bold{W_b} Wb表示filter的偏置项矩阵形式,( w b w_b wb的广播形式)
  • c o n v conv conv表示卷积操作

δ i , j l − 1 = ∂ E ∂ n e t i , j l − 1 (4.3) \begin{aligned} \delta^{l-1}_{i,j}&=\frac{\partial{E}}{\partial{net^{l-1}_{i,j}}}\\ \end{aligned} \tag{4.3} δi,jl1=neti,jl1E(4.3)

  • δ i , j l − 1 \delta^{l-1}_{i,j} δi,jl1表示第 l − 1 l-1 l1层第 i i i行第 j j j列的误差项
  • n e t i , j l − 1 net^{l-1}_{i,j} neti,jl1表示第 l − 1 l-1 l1层第 i i i行第 j j j列神经元的加权输入
  • f l − 1 f^{l-1} fl1表示第 l − 1 l-1 l1层的激活函数。

上式中,假设第 l l l中的每个 δ l \delta^l δl值都已经算好,我们要做的是计算第 l − 1 l-1 l1层每个神经元的误差项 δ l − 1 \delta^{l-1} δl1

为了计算偏导数,我们需要考察权重 w i j w_{ij} wij E E E的影响。权重项 w i j w_{ij} wij通过影响 n e t i , j l net^l_{i,j} neti,jl的值,进而影响 E E E。我们仍然通过一个具体的例子来看权重项对 n e t i , j l net^l_{i,j} neti,jl的影响,然后再从中总结出规律。

∂ E d ∂ w 1 , 1 \frac{\partial{E_d}}{\partial{w_{1,1}}} w1,1Ed:
n e t 1 , 1 j = w 1 , 1 a 1 , 1 l − 1 + w 1 , 2 a 1 , 2 l − 1 + w 2 , 1 a 2 , 1 l − 1 + w 2 , 2 a 2 , 2 l − 1 + w b n e t 1 , 2 j = w 1 , 1 a 1 , 2 l − 1 + w 1 , 2 a 1 , 3 l − 1 + w 2 , 1 a 2 , 2 l − 1 + w 2 , 2 a 2 , 3 l − 1 + w b n e t 2 , 1 j = w 1 , 1 a 2 , 1 l − 1 + w 1 , 2 a 2 , 2 l − 1 + w 2 , 1 a 3 , 1 l − 1 + w 2 , 2 a 3 , 2 l − 1 + w b n e t 2 , 2 j = w 1 , 1 a 2 , 2 l − 1 + w 1 , 2 a 2 , 3 l − 1 + w 2 , 1 a 3 , 2 l − 1 + w 2 , 2 a 3 , 3 l − 1 + w b net^j_{1,1}=w_{1,1}a^{l-1}_{1,1}+w_{1,2}a^{l-1}_{1,2}+w_{2,1}a^{l-1}_{2,1}+w_{2,2}a^{l-1}_{2,2}+w_b\\ net^j_{1,2}=w_{1,1}a^{l-1}_{1,2}+w_{1,2}a^{l-1}_{1,3}+w_{2,1}a^{l-1}_{2,2}+w_{2,2}a^{l-1}_{2,3}+w_b\\ net^j_{2,1}=w_{1,1}a^{l-1}_{2,1}+w_{1,2}a^{l-1}_{2,2}+w_{2,1}a^{l-1}_{3,1}+w_{2,2}a^{l-1}_{3,2}+w_b\\ net^j_{2,2}=w_{1,1}a^{l-1}_{2,2}+w_{1,2}a^{l-1}_{2,3}+w_{2,1}a^{l-1}_{3,2}+w_{2,2}a^{l-1}_{3,3}+w_b net1,1j=w1,1a1,1l1+w1,2a1,2l1+w2,1a2,1l1+w2,2a2,2l1+wbnet1,2j=w1,1a1,2l1+w1,2a1,3l1+w2,1a2,2l1+w2,2a2,3l1+wbnet2,1j=w1,1a2,1l1+w1,2a2,2l1+w2,1a3,1l1+w2,2a3,2l1+wbnet2,2j=w1,1a2,2l1+w1,2a2,3l1+w2,1a3,2l1+w2,2a3,3l1+wb
∂ E d ∂ w 1 , 1 = ∂ E d ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ w 1 , 1 + ∂ E d ∂ n e t 1 , 2 l ∂ n e t 1 , 2 l ∂ w 1 , 1 + ∂ E d ∂ n e t 2 , 1 l ∂ n e t 2 , 1 l ∂ w 1 , 1 + ∂ E d ∂ n e t 2 , 2 l ∂ n e t 2 , 2 l ∂ w 1 , 1 = δ 1 , 1 l a 1 , 1 l − 1 + δ 1 , 2 l a 1 , 2 l − 1 + δ 2 , 1 l a 2 , 1 l − 1 + δ 2 , 2 l a 2 , 2 l − 1 \begin{aligned} \frac{\partial{E_d}}{\partial{w_{1,1}}}&=\frac{\partial{E_d}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{w_{1,1}}}+\frac{\partial{E_d}}{\partial{net^{l}_{1,2}}}\frac{\partial{net^{l}_{1,2}}}{\partial{w_{1,1}}}+\frac{\partial{E_d}}{\partial{net^{l}_{2,1}}}\frac{\partial{net^{l}_{2,1}}}{\partial{w_{1,1}}}+\frac{\partial{E_d}}{\partial{net^{l}_{2,2}}}\frac{\partial{net^{l}_{2,2}}}{\partial{w_{1,1}}}\\ &=\delta^l_{1,1}a^{l-1}_{1,1}+\delta^l_{1,2}a^{l-1}_{1,2}+\delta^l_{2,1}a^{l-1}_{2,1}+\delta^l_{2,2}a^{l-1}_{2,2} \end{aligned} w1,1Ed=net1,1lEdw1,1net1,1l+net1,2lEdw1,1net1,2l+net2,1lEdw1,1net2,1l+net2,2lEdw1,1net2,2l=δ1,1la1,1l1+δ1,2la1,2l1+δ2,1la2,1l1+δ2,2la2,2l1
所以:
∂ E d ∂ w i , j = ∑ m ∑ n δ m , n a i + m , j + n l − 1 \frac{\partial{E_d}}{\partial{w_{i,j}}}=\sum_m\sum_n\delta_{m,n}a^{l-1}_{i+m,j+n} wi,jEd=mnδm,nai+m,j+nl1

好了,接下来就是求 δ i , j l − 1 \delta^{l-1}_{i,j} δi,jl1的工作了

4.1.1 步长为1,深度为1,filter为1的卷积求导

假设输入的大小为 3 × 3 3 \times 3 3×3,filter大小为 2 × 2 2 \times 2 2×2,按步长为1卷积,我们将得到 2 × 2 2 \times 2 2×2的feature map。如下图所示:

在这里插入图片描述
δ i , j l − 1 = ∂ E ∂ n e t i , j l − 1 = ∂ E ∂ a i , j l − 1 ∂ a i , j l − 1 ∂ n e t i , j l − 1 (4.3) \begin{aligned} \delta^{l-1}_{i,j}&=\frac{\partial{E}}{\partial{net^{l-1}_{i,j}}}\\ &=\frac{\partial{E}}{\partial{a^{l-1}_{i,j}}}\frac{\partial{a^{l-1}_{i,j}}}{\partial{net^{l-1}_{i,j}}} \end{aligned} \tag{4.3} δi,jl1=neti,jl1E=ai,jl1Eneti,jl1ai,jl1(4.3)

  • 计算第一项: ∂ E ∂ a i , j l − 1 \frac{\partial{E}}{\partial{a^{l-1}_{i,j}}} ai,jl1E
    因为有:
    在这里插入图片描述

  • 对于被filter遍历过1次的点来说 a 11 l − 1 a^{l-1}_{11} a11l1:计算 ∂ E ∂ a 1 , 1 l − 1 \frac{\partial{E}}{\partial{a^{l-1}_{1,1}}} a1,1l1E
    n e t 1 , 1 l = w 1 , 1 a 1 , 1 l − 1 + w 1 , 2 a 1 , 2 l − 1 + w 2 , 1 a 2 , 1 l − 1 + w 2 , 2 a 2 , 2 l − 1 + w b net^l_{1,1}=w_{1,1}a^{l-1}_{1,1}+w_{1,2}a^{l-1}_{1,2}+w_{2,1}a^{l-1}_{2,1}+w_{2,2}a^{l-1}_{2,2}+w_b net1,1l=w1,1a1,1l1+w1,2a1,2l1+w2,1a2,1l1+w2,2a2,2l1+wb
    所以:
    ∂ E ∂ a 1 , 1 l − 1 = ∂ E ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ a 1 , 1 l − 1 = δ 1 , 1 l w 1 , 1 \begin{aligned} \frac{\partial{E}}{\partial{a^{l-1}_{1,1}}}&=\frac{\partial{E}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{a^{l-1}_{1,1}}}\\ &=\delta^l_{1,1}w_{1,1} \end{aligned} a1,1l1E=net1,1lEa1,1l1net1,1l=δ1,1lw1,1

    • 对于filter遍历过2次的点来说 a 21 l − 1 a^{l-1}_{21} a21l1:计算 ∂ E ∂ a 2 , 1 l − 1 \frac{\partial{E}}{\partial{a^{l-1}_{2,1}}} a2,1l1E
      n e t 1 , 1 l = w 1 , 1 a 1 , 1 l − 1 + w 1 , 2 a 1 , 2 l − 1 + w 2 , 1 a 2 , 1 l − 1 + w 2 , 2 a 2 , 2 l − 1 + w b n e t 1 , 2 l = w 1 , 1 a 1 , 2 l − 1 + w 1 , 2 a 1 , 3 l − 1 + w 2 , 1 a 2 , 2 l − 1 + w 2 , 2 a 2 , 3 l − 1 + w b net^l_{1,1}=w_{1,1}a^{l-1}_{1,1}+w_{1,2}a^{l-1}_{1,2}+w_{2,1}a^{l-1}_{2,1}+w_{2,2}a^{l-1}_{2,2}+w_b\\ net^l_{1,2}=w_{1,1}a^{l-1}_{1,2}+w_{1,2}a^{l-1}_{1,3}+w_{2,1}a^{l-1}_{2,2}+w_{2,2}a^{l-1}_{2,3}+w_b\\ net1,1l=w1,1a1,1l1+w1,2a1,2l1+w2,1a2,1l1+w2,2a2,2l1+wbnet1,2l=w1,1a1,2l1+w1,2a1,3l1+w2,1a2,2l1+w2,2a2,3l1+wb
      所以:
      ∂ E ∂ a 1 , 2 l − 1 = ∂ E ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ a 1 , 2 l − 1 + ∂ E ∂ n e t 1 , 2 l ∂ n e t 1 , 2 l ∂ a 1 , 2 l − 1 = δ 1 , 1 l w 1 , 2 + δ 1 , 2 l w 1 , 1 \begin{aligned} \frac{\partial{E}}{\partial{a^{l-1}_{1,2}}}&=\frac{\partial{E}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{a^{l-1}_{1,2}}}+\frac{\partial{E}}{\partial{net^{l}_{1,2}}}\frac{\partial{net^{l}_{1,2}}}{\partial{a^{l-1}_{1,2}}}\\ &=\delta^l_{1,1}w_{1,2}+\delta^l_{1,2}w_{1,1} \end{aligned} a1,2l1E=net1,1lEa1,2l1net1,1l+net1,2lEa1,2l1net1,2l=δ1,1lw1,2+δ1,2lw1,1
    • 对于filter遍历过4次点来说 a 22 l − 1 a^{l-1}_{22} a22l1
      n e t 1 , 1 l = w 1 , 1 a 1 , 1 l − 1 + w 1 , 2 a 1 , 2 l − 1 + w 2 , 1 a 2 , 1 l − 1 + w 2 , 2 a 2 , 2 l − 1 + w b n e t 1 , 2 l = w 1 , 1 a 1 , 2 l − 1 + w 1 , 2 a 1 , 3 l − 1 + w 2 , 1 a 2 , 2 l − 1 + w 2 , 2 a 2 , 3 l − 1 + w b n e t 2 , 1 l = w 1 , 1 a 2 , 1 l − 1 + w 1 , 2 a 2 , 2 l − 1 + w 2 , 1 a 3 , 1 l − 1 + w 2 , 2 a 3 , 2 l − 1 + w b n e t 2 , 2 l = w 1 , 1 a 2 , 2 l − 1 + w 1 , 2 a 2 , 3 l − 1 + w 2 , 1 a 3 , 2 l − 1 + w 2 , 2 a 3 , 3 l − 1 + w b net^l_{1,1}=w_{1,1}a^{l-1}_{1,1}+w_{1,2}a^{l-1}_{1,2}+w_{2,1}a^{l-1}_{2,1}+w_{2,2}a^{l-1}_{2,2}+w_b\\ net^l_{1,2}=w_{1,1}a^{l-1}_{1,2}+w_{1,2}a^{l-1}_{1,3}+w_{2,1}a^{l-1}_{2,2}+w_{2,2}a^{l-1}_{2,3}+w_b\\ net^l_{2,1}=w_{1,1}a^{l-1}_{2,1}+w_{1,2}a^{l-1}_{2,2}+w_{2,1}a^{l-1}_{3,1}+w_{2,2}a^{l-1}_{3,2}+w_b\\ net^l_{2,2}=w_{1,1}a^{l-1}_{2,2}+w_{1,2}a^{l-1}_{2,3}+w_{2,1}a^{l-1}_{3,2}+w_{2,2}a^{l-1}_{3,3}+w_b net1,1l=w1,1a1,1l1+w1,2a1,2l1+w2,1a2,1l1+w2,2a2,2l1+wbnet1,2l=w1,1a1,2l1+w1,2a1,3l1+w2,1a2,2l1+w2,2a2,3l1+wbnet2,1l=w1,1a2,1l1+w1,2a2,2l1+w2,1a3,1l1+w2,2a3,2l1+wbnet2,2l=w1,1a2,2l1+w1,2a2,3l1+w2,1a3,2l1+w2,2a3,3l1+wb
      所以:
      ∂ E ∂ a 2 , 2 l − 1 = ∂ E ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ a 2 , 2 l − 1 + ∂ E ∂ n e t 1 , 2 l ∂ n e t 1 , 2 l ∂ a 2 , 2 l − 1 + ∂ E ∂ n e t 2 , 1 l ∂ n e t 2 , 1 l ∂ a 2 , 2 l − 1 + ∂ E ∂ n e t 2 , 2 l ∂ n e t 2 , 2 l ∂ a 2 , 2 l − 1 = δ 1 , 1 l w 2 , 2 + δ 1 , 2 l w 2 , 1 + δ 2 , 1 l w 1 , 2 + δ 2 , 2 l w 1 , 1 \begin{aligned} \frac{\partial{E}}{\partial{a^{l-1}_{2,2}}}&=\frac{\partial{E}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{a^{l-1}_{2,2}}}+\frac{\partial{E}}{\partial{net^{l}_{1,2}}}\frac{\partial{net^{l}_{1,2}}}{\partial{a^{l-1}_{2,2}}}+\frac{\partial{E}}{\partial{net^{l}_{2,1}}}\frac{\partial{net^{l}_{2,1}}}{\partial{a^{l-1}_{2,2}}}+\frac{\partial{E}}{\partial{net^{l}_{2,2}}}\frac{\partial{net^{l}_{2,2}}}{\partial{a^{l-1}_{2,2}}}\\ &=\delta^l_{1,1}w_{2,2}+\delta^l_{1,2}w_{2,1}+\delta^l_{2,1}w_{1,2}+\delta^l_{2,2}w_{1,1} \end{aligned} a2,2l1E=net1,1lEa2,2l1net1,1l+net1,2lEa2,2l1net1,2l+net2,1lEa2,2l1net2,1l+net2,2lEa2,2l1net2,2l=δ1,1lw2,2+δ1,2lw2,1+δ2,1lw1,2+δ2,2lw1,1
      仔细观察三个点的求导结果,把第 l l l层的sensitive map周围补一圈0,在与180度翻转后的filter进行cross-correlation,之后就是 δ \delta δ w w w的关系就是卷积的关系啊。
      在这里插入图片描述
      因为卷积相当于将filter旋转180度的cross-correlation,因此上图的计算可以用卷积公式完美的表达:
      ∂ E d ∂ a l = δ l ∗ W l (4.3-1) \frac{\partial{E_d}}{\partial{a_l}}=\delta^l*W^l \tag{4.3-1} alEd=δlWl(4.3-1)
  • 计算第二项: ∂ a i , j l − 1 ∂ n e t i , j l − 1 \frac{\partial{a^{l-1}_{i,j}}}{\partial{net^{l-1}_{i,j}}} neti,jl1ai,jl1
    因为:
    a i , j l − 1 = f ( n e t i , j l − 1 ) a^{l-1}_{i,j}=f(net^{l-1}_{i,j}) ai,jl1=f(neti,jl1)
    所以有:
    ∂ a i , j l − 1 ∂ n e t i , j l − 1 = f ′ ( n e t i , j l − 1 ) (4.3-2) \frac{\partial{a^{l-1}_{i,j}}}{\partial{net^{l-1}_{i,j}}}=f'(net^{l-1}_{i,j}) \tag{4.3-2} neti,jl1ai,jl1=f(neti,jl1)(4.3-2)
    所以,最终的结果为:
    δ 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 = ∑ m ∑ n w m , n l δ i + m , j + n l f ′ ( n e t i , j l − 1 ) (4.4) \begin{aligned} \delta^{l-1}_{i,j}&=\frac{\partial{E_d}}{\partial{net^{l-1}_{i,j}}}\\ &=\frac{\partial{E_d}}{\partial{a^{l-1}_{i,j}}}\frac{\partial{a^{l-1}_{i,j}}}{\partial{net^{l-1}_{i,j}}}\\ &=\sum_m\sum_n{w^l_{m,n}\delta^l_{i+m,j+n}}f'(net^{l-1}_{i,j}) \end{aligned} \tag{4.4} δi,jl1=neti,jl1Ed=ai,jl1Edneti,jl1ai,jl1=mnwm,nlδi+m,j+nlf(neti,jl1)(4.4)
    δ l − 1 = δ l ∗ W l ∘ f ′ ( n e t l − 1 ) (4.5) \delta^{l-1}=\delta^l*W^l\circ f'(net^{l-1}) \tag{4.5} δl1=δlWlf(netl1)(4.5)
    其中,符 ∘ \circ 号表示element-wise product,即将矩阵中每个对应元素相乘。注意式4.5中的 δ l − 1 \delta^{l-1} δl1 δ l \delta^{l} δl n e t l − 1 net^{l-1} netl1都是矩阵。

4.1.2 步长为S,深度为1,filter为1的卷积求导

步长分别为1和2时前向卷积的结果:
在这里插入图片描述
因为步长为2,得到的feature map跳过了相应的部分,也就是图中灰色的部分,这个时候,我们可以通过将灰色的部分填充为0,恢复为stride=1的情况,再应用公式(4.5)即可。

4.1.3 步长为S,深度为D,filter为1的卷积求导

当输入深度为D时,filter的深度也必须为D。 l − 1 l-1 l1层的通道 d i d_i di只与filter的 d i d_i di通道的权重进行计算。也就是说,各层用各层的filter,互不干扰
在这里插入图片描述

4.1.4 filter数量为N时的误差传递

filter数量为N时,输出层的个数也为N,第 i i i个filter卷积产生输出层的第 i i i个feature map。由于第 l − 1 l-1 l1层每个加权输入 n e t d , i , j l − 1 net^{l-1}_{d, i,j} netd,i,jl1都同时影响了第 l l l层所有feature map的输出值,因此,反向计算误差项时,需要使用全导数公式。也就是,我们先使用第 d d d个filter对第 l l l层相应的第 d d d个sensitivity map进行卷积,得到一组N个 l − 1 l-1 l1层的偏sensitivity map。依次用每个filter做这种卷积,就得到D组偏sensitivity map。最后在各组之间将N个偏sensitivity map 按元素相加,得到最终的N个 l − 1 l-1 l1层的sensitivity map:
δ l − 1 = ∑ d = 0 D δ d l ∗ W d l ∘ f ′ ( n e t l − 1 ) (4.6) \delta^{l-1}=\sum_{d=0}^D\delta_d^l*W_d^l\circ f'(net^{l-1}) \tag{4.6} δl1=d=0DδdlWdlf(netl1)(4.6)

在这里插入图片描述

4.1.6 对偏置项权重的梯度计算

∂ E d ∂ w b = ∂ E d ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ w b + ∂ E d ∂ n e t 1 , 2 l ∂ n e t 1 , 2 l ∂ w b + ∂ E d ∂ n e t 2 , 1 l ∂ n e t 2 , 1 l ∂ w b + ∂ E d ∂ n e t 2 , 2 l ∂ n e t 2 , 2 l ∂ w b = δ 1 , 1 l + δ 1 , 2 l + δ 2 , 1 l + δ 2 , 2 l = ∑ i ∑ j δ i , j l \begin{aligned} \frac{\partial{E_d}}{\partial{w_b}}&=\frac{\partial{E_d}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{w_b}}+\frac{\partial{E_d}}{\partial{net^{l}_{1,2}}}\frac{\partial{net^{l}_{1,2}}}{\partial{w_b}}+\frac{\partial{E_d}}{\partial{net^{l}_{2,1}}}\frac{\partial{net^{l}_{2,1}}}{\partial{w_b}}+\frac{\partial{E_d}}{\partial{net^{l}_{2,2}}}\frac{\partial{net^{l}_{2,2}}}{\partial{w_b}}\\ &=\delta^l_{1,1}+\delta^l_{1,2}+\delta^l_{2,1}+\delta^l_{2,2}\\ &=\sum_i\sum_j\delta^l_{i,j} \end{aligned} wbEd=net1,1lEdwbnet1,1l+net1,2lEdwbnet1,2l+net2,1lEdwbnet2,1l+net2,2lEdwbnet2,2l=δ1,1l+δ1,2l+δ2,1l+δ2,2l=ijδi,jl
也就是偏置项的梯度就是sensitivity map所有误差项之和

4.2 Pooling层

无论max pooling还是mean pooling,都没有需要学习的参数。因此,在卷积神经网络的训练中,Pooling层需要做的仅仅是将误差项传递到上一层,而没有梯度的计算。

4.2.1 Max Pooling误差项的传递

如下图,假设第 l − 1 l-1 l1层大小为44,pooling filter大小为22,步长为2,这样,max pooling之后,第 l l l层大小为2*2。假设第 l l l层的 δ \delta δ值都已经计算完毕,我们现在的任务是计算第 l − 1 l-1 l1层的 δ \delta δ值。
在这里插入图片描述
我们用 n e t i , j l − 1 net^{l-1}_{i,j} neti,jl1表示第 l − 1 l-1 l1层的加权输入;用 n e t i , j l net^{l}_{i,j} neti,jl表示第 l l l层的加权输入。对于max pooling来说,除了最大的值之外,其他的传递的值均为0:
n e t 1 , 1 l = m a x ( n e t 1 , 1 l − 1 , n e t 1 , 2 l − 1 , n e t 2 , 1 l − 1 , n e t 2 , 2 l − 1 ) net^l_{1,1}=max(net^{l-1}_{1,1},net^{l-1}_{1,2},net^{l-1}_{2,1},net^{l-1}_{2,2}) net1,1l=max(net1,1l1,net1,2l1,net2,1l1,net2,2l1)
所以,如果 n e w 11 new_{11} new11最大的话,则:
∂ n e t 1 , 1 l ∂ n e t 1 , 1 l − 1 = 1 ∂ n e t 1 , 1 l ∂ n e t 1 , 2 l − 1 = 0 ∂ n e t 1 , 1 l ∂ n e t 2 , 1 l − 1 = 0 ∂ n e t 1 , 1 l ∂ n e t 2 , 2 l − 1 = 0 \begin{aligned} \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{1,1}}}=1\\ \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{1,2}}}=0\\ \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{2,1}}}=0\\ \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{2,2}}}=0 \end{aligned} net1,1l1net1,1l=1net1,2l1net1,1l=0net2,1l1net1,1l=0net2,2l1net1,1l=0
因此:
δ 1 , 1 l − 1 = ∂ E d ∂ n e t 1 , 1 l − 1 = ∂ E d ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l − 1 = δ 1 , 1 l \begin{aligned} \delta^{l-1}_{1,1}&=\frac{\partial{E_d}}{\partial{net^{l-1}_{1,1}}}\\ &=\frac{\partial{E_d}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{net^{l-1}_{1,1}}}\\ &=\delta^{l}_{1,1}\\ \end{aligned} δ1,1l1=net1,1l1Ed=net1,1lEdnet1,1l1net1,1l=δ1,1l

4.2.2 Mean Pooling误差项的传递

n e t 1 , 1 j = 1 4 ( n e t 1 , 1 l − 1 + n e t 1 , 2 l − 1 + n e t 2 , 1 l − 1 + n e t 2 , 2 l − 1 ) net^j_{1,1}=\frac{1}{4}(net^{l-1}_{1,1}+net^{l-1}_{1,2}+net^{l-1}_{2,1}+net^{l-1}_{2,2}) net1,1j=41(net1,1l1+net1,2l1+net2,1l1+net2,2l1)
所以:
∂ n e t 1 , 1 l ∂ n e t 1 , 1 l − 1 = 1 4 ∂ n e t 1 , 1 l ∂ n e t 1 , 2 l − 1 = 1 4 ∂ n e t 1 , 1 l ∂ n e t 2 , 1 l − 1 = 1 4 ∂ n e t 1 , 1 l ∂ n e t 2 , 2 l − 1 = 1 4 \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{1,1}}}=\frac{1}{4}\\ \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{1,2}}}=\frac{1}{4}\\ \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{2,1}}}=\frac{1}{4}\\ \frac{\partial{net^l_{1,1}}}{\partial{net^{l-1}_{2,2}}}=\frac{1}{4}\\ net1,1l1net1,1l=41net1,2l1net1,1l=41net2,1l1net1,1l=41net2,2l1net1,1l=41
δ 1 , 2 l − 1 = ∂ E d ∂ n e t 1 , 2 l − 1 = ∂ E d ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ n e t 1 , 2 l − 1 = 1 4 δ 1 , 1 l δ 2 , 1 l − 1 = ∂ E d ∂ n e t 2 , 1 l − 1 = ∂ E d ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ n e t 2 , 1 l − 1 = 1 4 δ 1 , 1 l δ 2 , 2 l − 1 = ∂ E d ∂ n e t 2 , 2 l − 1 = ∂ E d ∂ n e t 1 , 1 l ∂ n e t 1 , 1 l ∂ n e t 2 , 2 l − 1 = 1 4 δ 1 , 1 l \begin{aligned} \delta^{l-1}_{1,2}&=\frac{\partial{E_d}}{\partial{net^{l-1}_{1,2}}}\\ &=\frac{\partial{E_d}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{net^{l-1}_{1,2}}}\\ &=\frac{1}{4}\delta^{l}_{1,1}\\ \delta^{l-1}_{2,1}&=\frac{\partial{E_d}}{\partial{net^{l-1}_{2,1}}}\\ &=\frac{\partial{E_d}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{net^{l-1}_{2,1}}}\\ &=\frac{1}{4}\delta^{l}_{1,1}\\ \delta^{l-1}_{2,2}&=\frac{\partial{E_d}}{\partial{net^{l-1}_{2,2}}}\\ &=\frac{\partial{E_d}}{\partial{net^{l}_{1,1}}}\frac{\partial{net^{l}_{1,1}}}{\partial{net^{l-1}_{2,2}}}\\ &=\frac{1}{4}\delta^{l}_{1,1}\\ \end{aligned} δ1,2l1δ2,1l1δ2,2l1=net1,2l1Ed=net1,1lEdnet1,2l1net1,1l=41δ1,1l=net2,1l1Ed=net1,1lEdnet2,1l1net1,1l=41δ1,1l=net2,2l1Ed=net1,1lEdnet2,2l1net1,1l=41δ1,1l


5. 与全连接神经网络有啥关系?

全连接神经网络之所以不太适合图像识别任务,主要有以下几个方面的问题:

5.1 参数数量太多

考虑一个输入10001000像素的图片(一百万像素,现在已经不能算大图了),输入层有10001000=100万节点。假设第一个隐藏层有100个节点(这个数量并不多),那么仅这一层就有(1000*1000+1)*100=1亿参数,这实在是太多了!我们看到图像只扩大一点,参数数量就会多很多,因此它的扩展性很差。

解决办法:局部连接

每个神经元不再和上一层的所有神经元相连,而只和一小部分神经元相连。这样就减少了很多参数。
通俗的说,卷积神经网络中层与层的神经元并不是全连接而是部分连接,就下图而言:
在这里插入图片描述
6 × 6 6 \times 6 6×6的图像中,如果以全连接神经网络的视角看filter卷积的过程,可以理解为:若使用全连接神经网络,实际上是36个像素共同作用到下一层的某一个神经元上,若使用卷积神经网络,其实是目标区域: 2 , 3 , 4 , 8 , 9 , 10 , 14 , 15 , 16 2,3,4,8,9,10,14,15,16 2,3,4,8,9,10,14,15,16,作用到下一层的某个神经元上,这就大大减少了参数的数量。

5.2 没有利用像素之间的位置信息

对于图像识别任务来说,每个像素和其周围像素的联系是比较紧密的,和离得很远的像素的联系可能就很小了。如果一个神经元和上一层所有神经元相连,那么就相当于对于一个像素来说,把图像的所有像素都等同看待,这不符合前面的假设。当我们完成每个连接权重的学习之后,最终可能会发现,有大量的权重,它们的值都是很小的(也就是这些连接其实无关紧要)。努力学习大量并不重要的权重,这样的学习必将是非常低效的。
解决办法: 权值共享
一组连接可以共享同一个权重,而不是每个连接有一个不同的权重,这样又减少了很多参数。在图中,神经元颜色相同的线代表着拥有同样的权重。
1号像素与下一层输出值为3的神经元之间的权重 = 2号像素与下一层输出值为-1的神经元之间的权重,这是因为这两个像素均由filter中的1号处理。
在这里插入图片描述

5.3 网络层数限制

我们知道网络层数越多其表达能力越强,但是通过梯度下降方法训练深度全连接神经网络很困难,因为全连接神经网络的梯度很难传递超过3层。因此,我们不可能得到一个很深的全连接神经网络,也就限制了它的能力。
下采样 可以使用Pooling来减少每层的样本数,进一步减少参数数量,同时还可以提升模型的鲁棒性。也就是filter的应用。


6. 应用

6.1 一维信号+single Channel

处理时序数据,不同的时间点加上不同的channel。
在这里插入图片描述

6.2 一维信号+Multiple Channel

在该数据中,我们并不是用一个信号去描述一个时间点,而是用多个数据(一个Vector)去描述时间点
在这里插入图片描述

6.3 二维信号+single Channel

处理黑白照片
在这里插入图片描述

6.4 二维signal信号+Multiple Channel

处理彩色图片
在这里插入图片描述


7. Pytorch中的卷积函数

7.1 conv1d

在这里插入图片描述
假设使用conv1d函数对数据进行操作,那么

  • 对数据的要求为:
    (batch_size, channel_in=n_features, length=timesteps)
  • conv1d初始化的要求为:
    (channel_in=n_features, out_channels, kernel_size, stride)
    其中:out_channels代表每一次卷积输出的个数,kernel_size代表每一次卷积需要考虑的时间长度,stride代表每一次卷积完成后,下一次开始距离当前开始点的间隔。

假设数据为4个时间点,每个时间点有5个特征,每次进3批,则数据表示为:3 * 4 * 5,需要卷积的过程考虑2个时间点的特征,每次时间点开始的间隔为1,每次卷积的结果为3个值。

卷积核的大小为2*5

那么,- conv1d初始化:(channel_in=5, out_channels=3, kernel_size=2, stride=1)
数据的格式为(batch_size=3, channel_in=5, length=4)


8. 参考文献

  • 《李宏毅深度学习课程》
  • 《零基础入门深度学习》
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值