【AI】深度学习——前馈神经网络——卷积神经网络

文章目录

    • 1.2 卷积神经网络
      • 1.2.1 卷积
        • 一维卷积
          • 近似微分
          • 低通滤波器/高通滤波器
          • 卷积变种
        • 二维卷积
          • 卷积的核心就是翻转相乘
          • 卷积应用于图像处理
        • 互相关
          • 互相关代替卷积
        • 卷积与互相关的交换性
      • 1.2.2 卷积神经网络
        • 卷积代替全连接
        • 卷积层
          • 特征映射
          • 卷积层结构
          • 参数数量
        • 汇聚层(池化层)
          • 汇聚层区域划分
          • 汇聚
        • 卷积神经网络的整体结构
      • 1.2.3 参数学习
        • 参数求解目标
        • 卷积求导
        • 误差项求解
        • 池化层误差项求解
      • 1.2.4 典型卷积神经网络
      • 1.2.5 非标准卷积
        • 空洞卷积
          • 如何增加输出单元的感受野
        • "反"卷积
          • 转置卷积
          • 微步卷积
      • 1.2.6 卷积神经网络应用
        • AlphaGo
        • 目标检测RCN
        • 图像分割RCNN
        • 光学字符识别OCR
        • 应用于文本
          • Ngram特征与卷积
          • 词到词向量
    • 1.3 前馈神经网络分析

1.2 卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN 或 ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络。

感受野机制:听觉、视觉等神经系统中的一些神经元,只接受其所支配的刺激区域内的信号

  • 一个视觉皮层的神经元的感受野指视网膜上的特定区域,只有这个区域内的刺激才能激活该神经元

卷积神经网络

  • 卷积层
  • 汇聚层
  • 全连接层

结构特性:

  • 局部连接

    与全连接的前馈神经网络相比,卷积神经网络的参数很少

  • 权重共享

  • 空间或时间上的次采样

1.2.1 卷积

是分析数学中的一种重要运算,在信号处理或图像处理中,经常使用一维或二维卷积

一维卷积

一维卷积常用于信号处理中,用于计算信号的延迟累积


假设一个信号发生器每个时刻 t t t 产生一个信号 x t x_t xt ,其信息的衰减率为 w k w_k wk ,在 k − 1 k-1 k1 个时间步长后,信息变为原先的 w k w_k wk

在这里插入图片描述

在时刻 t t t 收到的信号 y t y_t yt
y t = 1 × x t + 1 2 x t − 1 + 1 4 x t − 2 = w 1 x t + w 2 x t − 1 + w 3 x t − 2 = ∑ k = 1 3 w k x t − k + 1 \begin{aligned} y_t&=1\times x_t+\frac{1}{2}x_{t-1}+\frac{1}{4}x_{t-2}\\ &=w_1x_t+w_2x_{t-1}+w_3x_{t-2}\\ &=\sum\limits_{k=1}^3w_kx_{t-k+1} \end{aligned} yt=1×xt+21xt1+41xt2=w1xt+w2xt1+w3xt2=k=13wkxtk+1


w i w_i wi 称为滤波器或卷积核,假设滤波器的长度为 K K K ,它和一个信号序列 x 1 , x 2 , ⋯ x_1,x_2,\cdots x1,x2, 的卷积为
y t = ∑ k = 1 K w k x t − k + 1 y_t=\sum\limits_{k=1}^Kw_kx_{t-k+1} yt=k=1Kwkxtk+1

  • 一般情况下,滤波器的长度 K K K 远小于信号序列 x x x 的长度

信号序列 x x x 和滤波器 w w w 的卷积定义为
y = w ∗ x y=w*x y=wx

近似微分

当令滤波器 w = [ 1 2 , 0 , − 1 2 ] w=\left[\frac{1}{2},0,-\frac{1}{2}\right] w=[21,0,21] 时,可以近似信号序列的一阶微分
x ′ ( t ) = x ( t + 1 ) − x ( t − 1 ) 2 x'(t)=\frac{x(t+1)-x(t-1)}{2} x(t)=2x(t+1)x(t1)

  • f ′ ( x ) = lim ⁡ ε → 0 f ( x + ε ) − f ( x − ε ) 2 ε f'(x)=\lim\limits_{\varepsilon\rightarrow 0}\frac{f(x+\varepsilon)-f(x-\varepsilon)}{2\varepsilon} f(x)=ε0lim2εf(x+ε)f(xε)

二阶微分,即当滤波器为 w = [ 1 , − 2 , 1 ] w=[1,-2,1] w=[1,2,1] 时,可近似实现对信号序列的二阶微分
x ′ ′ ( t ) = x ′ ( t ) − x ′ ( t − 1 ) t − ( t − 1 ) = x ′ ( t ) − x ′ ( t − 1 ) = x ( t + 1 ) − x ( t ) ( t + 1 ) − t − x ( t ) − x ( t − 1 ) t − ( t − 1 ) = x ( t + 1 ) − 2 x ( t ) + x ( t − 1 ) \begin{aligned} x''(t)&=\frac{x'(t)-x'(t-1)}{t-(t-1)}=x'(t)-x'(t-1)\\ &=\frac{x(t+1)-x(t)}{(t+1)-t}-\frac{x(t)-x(t-1)}{t-(t-1)}\\ &=x(t+1)-2x(t)+x(t-1) \end{aligned} x′′(t)=t(t1)x(t)x(t1)=x(t)x(t1)=(t+1)tx(t+1)x(t)t(t1)x(t)x(t1)=x(t+1)2x(t)+x(t1)

低通滤波器/高通滤波器

在这里插入图片描述

卷积变种

在卷积的标准定义基础上,还可以引入卷积核的 滑动步长 (stride) 和 零填充(zero padding) 来增加卷积的多样性

步长S:指卷积核在滑动时的时间间隔

  • 增加步长,减少输出长度

零填充:在输入向量的两端补零

  • 增加长度

在这里插入图片描述

假设卷积层的输入神经元个数为 M M M ,卷积大小为 K K K ,步长为 S S S ,在输入两端分别补 P P P 个零,那么该卷积的神经元数量为 M − K + 2 P S + 1 \frac{M-K+2P}{S}+1 SMK+2P+1

  • 窄卷积: S = 1 S=1 S=1 P = 0 P=0 P=0 ,卷积后输出长度为 M − K + 1 M-K+1 MK+1
  • 等宽卷积: S = 1 S=1 S=1 P = K − 1 2 P=\frac{K-1}{2} P=2K1 ,卷积后输出长度为 M M M
  • 宽卷积: S = 1 S=1 S=1 P = K − 1 P=K-1 P=K1,卷积后输出长度为 M + K − 1 M+K-1 M+K1

有K个窗格的滑动窗口,在一个时间间隔后滑动S个数据

二维卷积

图像是二维结构,需要将一维卷积进行扩展

给定一个图像 X ∈ R M × N X\in \R^{M\times N} XRM×N 和一个滤波器 W ∈ R U × V W\in\R^{U\times V} WRU×V ,一般 U ≪ M , V ≪ N U\ll M,V\ll N UM,VN ,其卷积为
y i j = ∑ u = 1 U ∑ v = 1 V w u v X i − u + 1 , j − v + 1 , i ∈ [ U , M − U + 1 ] , j ∈ [ V , N − V + 1 ] y_{ij}=\sum\limits_{u=1}^U\sum\limits_{v=1}^Vw_{uv}X_{i-u+1,j-v+1}\quad,i\in [U,M-U+1],j\in [V,N-V+1] yij=u=1Uv=1VwuvXiu+1,jv+1,i[U,MU+1],j[V,NV+1]
在这里插入图片描述

在这里插入图片描述

y 35 = ∑ u = 1 3 ∑ v = 1 3 w u v X 3 − u + 1 , 5 − v + 1 = w 11 × X 35 + w 33 × X 13 = 1 × 0 + ( − 1 ) × 1 = − 1 \begin{aligned} y_{35}&=\sum\limits_{u=1}^3\sum\limits_{v=1}^3w_{uv}X_{3-u+1,5-v+1}=w_{11}\times X_{35}+w_{33}\times X_{13}\\ &=1\times0+(-1)\times 1=-1 \end{aligned} y35=u=13v=13wuvX3u+1,5v+1=w11×X35+w33×X13=1×0+(1)×1=1

卷积的核心就是翻转相乘

在这里插入图片描述

W ∗ X = c o n v o l u t i o n i ∗ A + h ∗ B + g ∗ C + f ∗ D + e ∗ E + d ∗ F + c ∗ G + b ∗ H + a ∗ I W*X\xlongequal{convolution} i*A+h*B+g*C+f*D+e*E+d*F+c*G+b*H+a*I WXconvolution iA+hB+gC+fD+eE+dF+cG+bH+aI

  1. 上下翻转,左右翻转

    • 相当于在一个平面内,以 e e e 为中心,旋转 18 0 ∘ 180^{\circ} 180
  2. 再逐项相乘并求和

卷积应用于图像处理

卷积的功能是在一个图像(或某种特征)上滑动一个卷积核(滤波器),通过卷积操作得到一组新的特征——一种特征提取的方法

  • 经过卷积操作后的结果称为 特征映射

常见滤波器

  • 均值滤波 将当前位置的像素值设为滤波窗口中所有像素的平均值 w u v = 1 U V w_{uv}=\frac{1}{UV} wuv=UV1

  • 高斯滤波器 :用于对图像平滑去噪

    在这里插入图片描述

  • 边缘滤波器,提取边缘特征

在这里插入图片描述

互相关

互相关是衡量两个序列相关性的函数,通常用滑动窗口的点积计算来实现

一个图像 X ∈ R M × N X\in \R^{M\times N} XRM×N 和卷积核 W ∈ R U × V W\in \R^{U\times V} WRU×V ,互相关为
y i j = ∑ u = 1 U ∑ v = 1 V w u v X i + u − 1 , j + v − 1 y_{ij}=\sum\limits_{u=1}^U\sum\limits_{v=1}^Vw_{uv}X_{i+u-1,j+v-1} yij=u=1Uv=1VwuvXi+u1,j+v1
互相关——不翻转核的卷积

  • 与卷积的区别在于卷积核是否翻转

Y = W ⊗ X = r o t 180 ( W ) ∗ X \begin{aligned} Y&=W\otimes X\\ &=rot180(W)*X \end{aligned} Y=WX=rot180(W)X

互相关代替卷积

在计算卷积过程中,需要进行卷积核翻转

实际实现中,一般会以互相关操作来代替卷积

在神经网络中,卷积的目的就是进行特征抽取,卷积核是否进行翻转和其特征抽取能力无关

  • 当卷积核是可学习的参数时,卷积和互相关在能力上是等价的
卷积与互相关的交换性

x ∗ y = y ∗ x x*y=y*x xy=yx

二维图的宽卷积具有交换性

  • 二维宽卷积:二维图像 X ∈ R M × N X\in \R^{M\times N} XRM×N 和 二维卷积核 W ∈ R U × V W\in \R^{U\times V} WRU×V ,对 X X X 进行零填充,两端各补 U − 1 U-1 U1 个零和 V − 1 V-1 V1 个零,得到全填充的图像 X ~ ∈ R ( M + 2 U − 2 ) × ( N + 2 V − 2 ) \tilde{X}\in \R^{(M+2U-2)\times (N+2V-2)} X~R(M+2U2)×(N+2V2)

图像 X X X 和卷积核 W W W 的宽卷积定义为
W ∗ ~ X = Δ W ∗ X ~ W\tilde{*}X\overset{\Delta}{=}W* \tilde{X} W~X=ΔWX~
当输入信息和卷积核有固定长度时,他们的宽卷积具有交换性,
W ∗ X ~ = X ~ ∗ W ⟺ W ∗ ~ X = X ∗ ~ W W*\tilde{X}=\tilde{X}*W\iff W\tilde{*}X=X\tilde{*}W WX~=X~WW~X=X~W
由于卷积与互相关运算的区别只有是否翻转卷积核,相应的宽互相关也有交换性
r o t 180 ( W ) ⊗ ~ X = r o t 180 ( X ) ⊗ ~ W rot180(W)\tilde{\otimes}X=rot180(X)\tilde{\otimes}W rot180(W)~X=rot180(X)~W

1.2.2 卷积神经网络

卷积代替全连接

在全连接网络中,第 l l l 层有 M l M_l Ml 个神经元,第 l − 1 l-1 l1 层有 M l − 1 M_{l-1} Ml1 个神经元,连接边有 M l × M l − 1 M_l\times M_{l-1} Ml×Ml1 ,即权重矩阵 W ∈ R M l × M l − 1 W\in \R^{M_l\times M_{l-1}} WRMl×Ml1 ,当 M l M_l Ml M l − 1 M_{l-1} Ml1 都很大时,权重矩阵的参数会很多,训练的效率会非常低

在这里插入图片描述

采用卷积代替全连接,第 l l l 层的净输入 z ( l ) z^{(l)} z(l) 为第 l − 1 l-1 l1 层活性值 a ( l − 1 ) a^{(l-1)} a(l1) 和卷积核
z ( l ) = w ( l ) ⊗ a ( l − 1 ) + b ( l ) z^{(l)}=w^{(l)}\otimes a^{(l-1)}+b^{(l)} z(l)=w(l)a(l1)+b(l)
局部连接:在卷积层 (第 l l l 层) 中的每一个神经元只与前一层 (第 l − 1 l-1 l1 层) 中的某个局部窗口内的神经元相连,构成一个局部连接网络。

  • 卷积层的数量大大减少,由 M l × M l − 1 M_l\times M_{l-1} Ml×Ml1 个连接变为 M l × K M_l\times K Ml×K 个连接, K K K 为卷积核大小

权重共享:作为参数的卷积核 w ( l ) w^{(l)} w(l) 对于第 l l l 层的所有神经元都是相同的。可以为一个卷积核只捕捉输入数据中的一种特定的局部特征,若提取不同特征,需要使用不同的卷积核

由于局部连接与权重共享特性,卷积层的参数只有一个 K K K 维的权重 w ( l ) w^{(l)} w(l) 和一维偏置 b ( l ) b^{(l)} b(l) ,共 K + 1 K+1 K+1 个参数

参数数量与神经元数量无关,第 l l l 层神经元的个数满足 M l = M l − 1 − K + 1 M_l=M_{l-1}-K+1 Ml=Ml1K+1

卷积层

卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器

特征映射

特征映射 :一幅图像在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征

  • 可在每一层使用多个不同的卷积核得到不同类的特征映射

在输入层,特征映射就是图像本身

  • 灰度图像,只有一个特征映射,输入层的深度 D = 1 D=1 D=1
  • 彩色图像,有RGB三个颜色通道的特征映射,输入层的深度 D = 3 D=3 D=3

通常将图像神经元组织为三维结构的神经层,其大小为 高度 M × 宽度 N × 深度 D 高度M\times 宽度 N\times 深度D 高度M×宽度N×深度D ,由 D D D M × N M\times N M×N 大小的特征映射构成

卷积层结构
  1. 输入特征映射组: X ∈ R M × N × D \mathcal{X} \in \R^{M\times N\times D} XRM×N×D 为三维张量,每个切片矩阵 X d ∈ R M × N , 1 ≤ d ≤ D X^d\in \R^{M\times N},1\le d\le D XdRM×N,1dD 为一个输入特征的映射

  2. 输出特征映射组: Y ∈ R M ′ × N ′ × P \mathcal{Y}\in \R^{M'\times N'\times P} YRM×N×P 为三维张量,每个切片矩阵 Y p ∈ R M ′ × N , 1 ≤ p ≤ P Y^p\in \R^{M'\times N},1\le p\le P YpRM×N,1pP

    输入层与输出层的特征映射是全连接关系

    在这里插入图片描述

    在这里插入图片描述

    即输出层的一个特征映射,由下式得出
    Z p = ∑ d = 1 D W p , d ⊗ X d + b p = W p ⊗ X + b p Y p = f ( Z p ) \begin{aligned} Z^p&=\sum\limits_{d=1}^DW^{p,d}\otimes X^{d}+b^p=W^p\otimes X+b^p\\ Y^p&=f(Z^p) \end{aligned} ZpYp=d=1DWp,dXd+bp=WpX+bp=f(Zp)

    • 其中, f ( ⋅ ) f(\cdot) f() 为非线性函数
  3. 卷积核: W ∈ R U × V × P × D \mathcal{W}\in \R^{U\times V\times P\times D} WRU×V×P×D 为四维张量,其中每个切片矩阵 W p , d ∈ R U × V W^{p,d}\in \R^{U\times V} Wp,dRU×V 为一个二维卷积核, 1 ≤ p ≤ P , 1 ≤ d ≤ D 1\le p\le P,1\le d\le D 1pP,1dD

在这里插入图片描述

相当于:输出 Y p Y^p Yp 需要卷积核 W p W^p Wp D D D 个分量逐个与 D D D 个输入 X d X^d Xd 卷积

  • 图上画的是一次卷积过程,实际上要得到蓝色的输出矩阵需要 D D D 次卷积运算,所以输入特征应该是D个粉矩阵才对,图有点问题

在这里插入图片描述

参数数量

每个输出特征映射都需要 D D D 个卷积核以及一个偏置,假设每个卷积核大小为 U × V U\times V U×V ,共需要 P × D × ( U × V ) + P P\times D\times(U\times V)+P P×D×(U×V)+P 个参数

汇聚层(池化层)

卷积层可以显著减少网络中的连接数,但对于输出层特征映射组中神经元数量的减少很少

  • 一维卷积, M l = M l − 1 − ( K − 1 ) M_l=M_{l-1}-(K-1) Ml=Ml1(K1) ,即只能减少 K − 1 K-1 K1 个神经元, K K K 为卷积长度
  • 二维卷积,卷积后有 [ M − ( U − 1 ) ] × [ N − ( V − 1 ) ] [M-(U-1)]\times[N-(V-1)] [M(U1)]×[N(V1)] 个神经元

汇聚层的作用就是减少神经元数量

汇聚层区域划分

假设汇聚层的输入特征映射组为 X ∈ R M ′ × N ′ × D \mathcal{X}\in\R^{M'\times N'\times D} XRM×N×D ,对于其中每一个特征映射 X d ∈ R M ′ × N ′ , 1 ≤ d ≤ D X^d\in \R^{M'\times N'},1\le d\le D XdRM×N,1dD ,将其划分为多个小区域 R m , n d , 1 ≤ m ≤ M ′ , 1 ≤ n ≤ N ′ R_{m,n}^d,1\le m\le M',1\le n\le N' Rm,nd1mM,1nN ,这些区域可以重叠,也可以不重叠

汇聚

汇聚 指对每个区域进行下采样得到一个值,作为这个区域的概括

汇聚层也叫子采样层,其作用是进行特征选择,降低特征数量,从而减少参数数量

  • 最大汇聚:对于一个区域 R m , n d R_{m,n}^d Rm,nd ,选择这个区域内所有神经元的最大活性值作为这个区域的表示
    y m , n d = max ⁡ i ∈ R m , n d x i y_{m,n}^d=\max\limits_{i\in R_{m,n}^d}x_i ym,nd=iRm,ndmaxxi
    在这里插入图片描述

  • 平均汇聚:取区域内所有神经元活性值的平均值,即
    y m , n d = 1 ∣ R m , n d ∣ ∑ i ∈ R m , n d x i y_{m,n}^d=\frac{1}{\vert R^d_{m,n}\vert}\sum\limits_{i\in R^d_{m,n}}x_i ym,nd=Rm,nd1iRm,ndxi

汇聚层输出特征映射
Y d = { y m , n d } , 1 ≤ m ≤ M ′ , 1 ≤ n ≤ N ′ Y^d=\{y_{m,n}^d\},1\le m\le M',1\le n\le N' Yd={ym,nd},1mM,1nN
目前,主流的卷积网络仅包含 下采样 操作,但在一些早期卷积网络(LeNet-5),有时也会在汇聚层使用非线性激活函数,如
Y ′ d = f ( w d Y d + b d ) Y^{'d}=f(w^dY^d+b^d) Yd=f(wdYd+bd)


典型的汇聚层将每个特征映射划分为 2 × 2 2\times 2 2×2 大小的不重叠区域,然后使用最大汇聚方式采样

汇聚层可以看做一个特殊的卷积层,卷积核大小为 K × K K\times K K×K ,步长为 S × S S\times S S×S ,卷积核为 m a x max max 函数或 m e a n mean mean 函数

过大的采样区域会造成神经元数量减少,也会造成较多的信息损失

卷积神经网络的整体结构

在这里插入图片描述

一个 卷积块 为连续 M M M 个卷积层和 b b b 个汇聚层组成( m 为 2 ∼ 5 m为2\sim 5 m25, b ∈ { 0 , 1 } b\in\{0,1\} b{0,1})

一个卷积网络中可以堆叠 N N N 个连续的卷积块,然后接 K K K 个全连接层

典型结构:

  • 小卷积,大深度
  • 趋向于全卷积:由于卷积操作越来越灵活(不同的步长),汇聚层的作用正在变小

1.2.3 参数学习

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

参数求解目标

若第 l l l 层卷积层,第 l − 1 l-1 l1 层的输入特征映射为 X ( l − 1 ) ∈ R M × N × D \mathcal{X}^{(l-1)}\in \R^{M\times N\times D} X(l1)RM×N×D ,通过卷积计算得到第 l l l 层的特征映射净输入 Z ( l ) ∈ R M ′ × N ′ × P Z^{(l)}\in \R^{M'\times N'\times P} Z(l)RM×N×P ,第 l l l 层的第 p p p 个特征映射净输入
Z ( l , p ) = ∑ d = 1 D W ( l , p , d ) ⊗ X ( l − 1 , d ) + b ( l , p ) Y ( l , p ) = f ( Z ( l , p ) ) \begin{aligned} Z^{(l,p)}&=\sum\limits_{d=1}^D W^{(l,p,d)}\otimes X^{(l-1,d)}+b^{(l,p)}\\ Y^{(l,p)}&=f(Z^{(l,p)}) \end{aligned} Z(l,p)Y(l,p)=d=1DW(l,p,d)X(l1,d)+b(l,p)=f(Z(l,p))
在这里插入图片描述

l l l 层共有 P × D P\times D P×D 个卷积核和 P P P 个偏置,可以通过链式法则计算梯度

采用交叉熵损失函数
L ( Y ( l , p ) , Y ^ ( l , p ) ) = − Y ( l , p ) log ⁡ Y ^ ( l , p ) \mathcal{L}(Y^{(l,p)},\hat{Y}^{(l,p)})=-Y^{(l,p)}\log \hat{Y}^{(l,p)} L(Y(l,p),Y^(l,p))=Y(l,p)logY^(l,p)
若有 N N N 个训练数据,则结构风险函数为
R ( W ( l , p , d ) , b ( l , p ) ) = 1 N ∑ i = 1 N L ( Y i ( l , p ) , Y ^ i ( l , p ) ) + 1 2 λ ∥ W ( l , p , d ) ∥ F 2 \mathcal{R}(W^{(l,p,d)},b^{(l,p)})=\frac{1}{N}\sum\limits_{i=1}^N\mathcal{L}(Y_i^{(l,p)},\hat{Y}_i^{(l,p)})+\frac{1}{2}\lambda\Vert W^{(l,p,d)}\Vert_F^2 R(W(l,p,d),b(l,p))=N1i=1NL(Yi(l,p),Y^i(l,p))+21λW(l,p,d)F2
与全连接前馈神经网络类似,参数学习核心为梯度的学习,即求 ∂ L ∂ W ( l , p , d ) \frac{\partial \mathcal{L}}{\partial W^{(l,p,d)}} W(l,p,d)L ∂ L ∂ b ( l , p ) \frac{\partial \mathcal{L}}{\partial b^{(l,p)}} b(l,p)L
W ( l , p , d ) ← W ( l , p , d ) − α ∂ R ( W ( l , p , d ) , b ( l , p ) ) ∂ W ( l , p , d ) ← W ( l , p , d ) − α ( 1 N ∑ i = 1 N ∂ L ( Y i ( l , p ) , Y ^ i ( l , p ) ) ∂ W ( l , p , d ) + λ W ( l , p , d ) ) b ( l , p ) ← b ( l , p ) − α ∂ R ( W ( l , p , d ) , b ( l , p ) ) ∂ b ( l , p ) ← b ( l , p ) − α ( 1 N ∑ i = 1 N ∂ L ( Y i ( l , p ) , Y ^ i ( l , p ) ) ∂ b ( l , p ) ) \begin{aligned} W^{(l,p,d)}&\leftarrow W^{(l,p,d)}-\alpha\frac{\partial \mathcal{R}(W^{(l,p,d)},b^{(l,p)})}{\partial W^{(l,p,d)}}\\ &\leftarrow W^{(l,p,d)}-\alpha\left(\frac{1}{N}\sum\limits_{i=1}^N\frac{\partial \mathcal{L}(Y_i^{(l,p)},\hat{Y}_i^{(l,p)})}{\partial W^{(l,p,d)}}+\lambda W^{(l,p,d)}\right)\\ b^{(l,p)}&\leftarrow b^{(l,p)}-\alpha\frac{\partial \mathcal{R}(W^{(l,p,d)},b^{(l,p)})}{\partial b^{(l,p)}}\\ &\leftarrow b^{(l,p)}-\alpha\left(\frac{1}{N}\sum\limits_{i=1}^N\frac{\partial \mathcal{L}(Y_i^{(l,p)},\hat{Y}_i^{(l,p)})}{\partial b^{(l,p)}}\right) \end{aligned} W(l,p,d)b(l,p)W(l,p,d)αW(l,p,d)R(W(l,p,d),b(l,p))W(l,p,d)α(N1i=1NW(l,p,d)L(Yi(l,p),Y^i(l,p))+λW(l,p,d))b(l,p)αb(l,p)R(W(l,p,d),b(l,p))b(l,p)α(N1i=1Nb(l,p)L(Yi(l,p),Y^i(l,p)))

卷积求导

假设 Z = W ⊗ X Z=W\otimes X Z=WX ,其中 X ∈ R M × N X\in \R^{M\times N} XRM×N W ∈ R U × V W\in \R^{U\times V} WRU×V Z ∈ R ( M − U + 1 ) × ( N − V + 1 ) Z\in \R^{(M-U+1)\times (N-V+1)} ZR(MU+1)×(NV+1) ,有函数 f ( Z ) ∈ R f(Z)\in \R f(Z)R 为标量
∂ f ( Z ) ∂ w u v = ∑ i = 1 M − U + 1 ∑ j = 1 N − V + 1 ∂ Z i j ∂ w u v ∂ f ( Z ) ∂ Z i j = ∑ i = 1 M − U + 1 ∑ j = 1 N − V + 1 X i + u − 1 , j + v − 1 ∂ f ( Z ) ∂ Z i j = ∑ i = 1 M − U + 1 ∑ j = 1 N − V + 1 ∂ f ( Z ) ∂ Z i j X i + u − 1 , j + v − 1 \begin{aligned} \frac{\partial f(Z)}{\partial w_{uv}}&=\sum\limits_{i=1}^{M-U+1}\sum\limits_{j=1}^{N-V+1}\frac{\partial Z_{ij}}{\partial w_{uv}}\frac{\partial f(Z)}{\partial Z_{ij}}\\ &=\sum\limits_{i=1}^{M-U+1}\sum\limits_{j=1}^{N-V+1}X_{i+u-1,j+v-1}\frac{\partial f(Z)}{\partial Z_{ij}}\\ &=\sum\limits_{i=1}^{M-U+1}\sum\limits_{j=1}^{N-V+1}\frac{\partial f(Z)}{\partial Z_{ij}}X_{i+u-1,j+v-1} \end{aligned} wuvf(Z)=i=1MU+1j=1NV+1wuvZijZijf(Z)=i=1MU+1j=1NV+1Xi+u1,j+v1Zijf(Z)=i=1MU+1j=1NV+1Zijf(Z)Xi+u1,j+v1

  • 互相关结果的每个元素 Z i j Z_{ij} Zij 都与某一卷积核元素 w u v w_{uv} wuv 相关

    Z i j = ∑ u = 1 U ∑ v = 1 V w u v X i + u − 1 , j + v − 1 Z_{ij}=\sum\limits_{u=1}^U\sum\limits_{v=1}^Vw_{uv}X_{i+u-1,j+v-1} Zij=u=1Uv=1VwuvXi+u1,j+v1

    所以对某一卷积核元素求偏导,为所有输出元素对该元素求偏导的和

f ( Z ) f(Z) f(Z) 关于 W W W 的偏导数为 X X X ∂ f ( Z ) ∂ Z \frac{\partial f(Z)}{\partial Z} Zf(Z) 的卷积
∂ f ( Z ) ∂ W = ∂ f ( Z ) ∂ Z ⊗ X \frac{\partial f(Z)}{\partial W}=\frac{\partial f(Z)}{\partial Z}\otimes X Wf(Z)=Zf(Z)X


∂ f ( Z ) ∂ X s t = ∑ i = 1 M − U + 1 ∑ j = 1 N − V + 1 ∂ Z i j ∂ X s t ∂ f ( Z ) ∂ Z i j = ∑ i = 1 M − U + 1 ∑ j = 1 N − V + 1 W s − i + 1 , t − j + 1 ∂ f ( Z ) ∂ Z i j \begin{aligned} \frac{\partial f(Z)}{\partial X_{st}}&=\sum\limits_{i=1}^{M-U+1}\sum\limits_{j=1}^{N-V+1}\frac{\partial Z_{ij}}{\partial X_{st}}\frac{\partial f(Z)}{\partial Z_{ij}}\\ &=\sum\limits_{i=1}^{M-U+1}\sum\limits_{j=1}^{N-V+1}W_{s-i+1,t-j+1}\frac{\partial f(Z)}{\partial Z_{ij}} \end{aligned} Xstf(Z)=i=1MU+1j=1NV+1XstZijZijf(Z)=i=1MU+1j=1NV+1Wsi+1,tj+1Zijf(Z)

  • 其中当 ( s − i + 1 ) < 1 (s-i+1)<1 (si+1)<1 ( s − i + 1 ) > U (s-i+1)>U (si+1)>U ,或 ( t − j + 1 ) < 1 (t-j+1)<1 (tj+1)<1 t − j + 1 > V t-j+1>V tj+1>V 时, W s − i + 1 , t − j + 1 = 0 W_{s-i+1,t-j+1}=0 Wsi+1,tj+1=0 ,即相当于对 W W W 进行了 P = ( M − u , N − V ) P=(M-u,N-V) P=(Mu,NV) 的零填充

f ( Z ) f(Z) f(Z) 关于 X X X 的偏导数为 W W W ∂ f ( Z ) ∂ Z \frac{\partial f(Z)}{\partial Z} Zf(Z) 的宽卷积
∂ f ( Z ) ∂ X = r o t 180 ( ∂ f ( Z ) ∂ Z ) ⊗ ~ W = r o t 180 ( W ) ⊗ ~ ∂ f ( Z ) ∂ Z \begin{aligned} \frac{\partial f(Z)}{\partial X}&=rot180(\frac{\partial f(Z)}{\partial Z})\tilde{\otimes}W\\ &=rot180(W)\tilde{\otimes}\frac{\partial f(Z)}{\partial Z} \end{aligned} Xf(Z)=rot180(Zf(Z))~W=rot180(W)~Zf(Z)

误差项求解

根据卷积求导公式,有
∂ L ∂ W ( l , p , d ) = ∂ L ∂ Z ( l , p ) ⊗ X ( l − 1 , d ) = δ ( l , p ) ⊗ X ( l − 1 , d ) ∂ L ∂ b ( l , p ) = ∂ L ∂ Z ( l , p ) ⋅ ∂ Z ( l , p ) ∂ b ( l , p ) = δ ( l , p ) \begin{aligned} \frac{\partial \mathcal{L}}{\partial W^{(l,p,d)}}&=\frac{\partial \mathcal{L}}{\partial Z^{(l,p)}}\otimes X^{(l-1,d)}\\ &=\delta^{(l,p)}\otimes X^{(l-1,d)}\\ \frac{\partial \mathcal{L}}{\partial b^{(l,p)}}&=\frac{\partial \mathcal{L}}{\partial Z^{(l,p)}}\cdot \frac{\partial Z^{(l,p)}}{\partial b^{(l,p)}}\\ &=\delta^{(l,p)} \end{aligned} W(l,p,d)Lb(l,p)L=Z(l,p)LX(l1,d)=δ(l,p)X(l1,d)=Z(l,p)Lb(l,p)Z(l,p)=δ(l,p)
即在卷积网络中,第 l l l 层参数依赖其所在层的误差项 δ ( l , p ) \delta^{(l,p)} δ(l,p)
δ ( l , p ) = Δ ∂ L ∂ Z ( l , p ) = ∂ X ( l , p ) ∂ Z ( l , p ) ∂ L ∂ X ( l , p ) = f l ′ ( Z ( l , p ) ) ⊙ ∑ t = 1 P ( r o t 180 ( W ( l + 1 , t , p ) ) ⊗ ~ ∂ L ∂ Z ( l + 1 , t ) ) = f l ′ ( Z ( l , p ) ) ⊙ ∑ t = 1 P ( r o t 180 ( W ( l + 1 , t , p ) ) ⊗ ~ δ ( l + 1 , t ) ) \begin{aligned} \delta^{(l,p)}&\overset{\Delta}{=}\frac{\partial \mathcal{L}}{\partial Z^{(l,p)}}\\ &=\frac{\partial X^{(l,p)}}{\partial Z^{(l,p)}}\frac{\partial \mathcal{L}}{\partial X^{(l,p)}}\\ &=f_l'(Z^{(l,p)})\odot\sum\limits_{t=1}^P\left( rot180(W^{(l+1,t,p)})\tilde{\otimes}\frac{\partial \mathcal{L}}{\partial Z^{(l+1,t)}}\right)\\ &=f_l'(Z^{(l,p)})\odot\sum\limits_{t=1}^P\left( rot180(W^{(l+1,t,p)})\tilde{\otimes}\delta^{(l+1,t)}\right) \end{aligned} δ(l,p)=ΔZ(l,p)L=Z(l,p)X(l,p)X(l,p)L=fl(Z(l,p))t=1P(rot180(W(l+1,t,p))~Z(l+1,t)L)=fl(Z(l,p))t=1P(rot180(W(l+1,t,p))~δ(l+1,t))

  • 由于第 l + 1 l+1 l+1 层的输入 X ( l , p ) X^{(l,p)} X(l,p) 为第 l l l 层的活性值 Y ( l , p ) = f l ( Z ( l , p ) ) Y^{(l,p)}=f_l(Z^{(l,p)}) Y(l,p)=fl(Z(l,p)) ,即有 D ( l + 1 ) = P ( l ) D^{(l+1)}=P^{(l)} D(l+1)=P(l) ,故
    ∂ X ( l , p ) ∂ Z ( l , p ) = ∂ f l ( Z ( l , p ) ) ∂ Z ( l , p ) = f l ′ ( Z ( l , p ) ) \frac{\partial X^{(l,p)}}{\partial Z^{(l,p)}}=\frac{\partial f_l(Z^{(l,p)})}{\partial Z^{(l,p)}}=f_l'(Z^{(l,p)}) Z(l,p)X(l,p)=Z(l,p)fl(Z(l,p))=fl(Z(l,p))

  • 而第 l + 1 l+1 l+1
    Z ( l + 1 , p ) = ∑ d = 1 D W ( l + 1 , p , d ) ⊗ X ( l , d ) + b ( l + 1 , p ) Z^{(l+1,p)}=\sum\limits_{d=1}^DW^{(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)
    由于第 l + 1 l+1 l+1 层的输入个数 D ( l + 1 ) D^{(l+1)} D(l+1) 为第 l l l 层的输出个数 P ( l ) P^{(l)} P(l) ,所以相当于 X ( l + 1 ) X^{(l+1)} X(l+1) P ( l ) P^{(l)} P(l) 维向量,对其求偏导为
    ∂ L ∂ X ( l , p ) = ∑ t = 1 P r o t 180 ( W ( l + 1 , t , p ) ) ⊗ ~ L ∂ Z ( l + 1 , t ) \frac{\partial \mathcal{L}}{\partial X^{(l,p)}}=\sum\limits_{t=1}^Prot180\left(W^{(l+1,t,p)}\right)\tilde{\otimes}\frac{\mathcal{L}}{\partial Z^{(l+1,t)}} X(l,p)L=t=1Prot180(W(l+1,t,p))~Z(l+1,t)L

池化层误差项求解

当第 l + 1 l+1 l+1 层是汇聚层时,因为汇聚层是下采样操作, l + 1 l+1 l+1 层的误差项 δ \delta δ 对应于第 l l l 层的相应特征映射的一个区域,

l l l 层的第 p p p 个特征映射中的每个神经元都有一条边和 l + 1 l+1 l+1 层的第 p p p 个特征映射中的一个神经元相连

在这里插入图片描述

l l l 层第 p p p 个特征映射的误差项 δ ( l , p ) \delta^{(l,p)} δ(l,p) 的具体推导为
δ ( l , p ) = Δ ∂ L ∂ Z ( l , p ) = ∂ X ( l , p ) ∂ Z ( l , p ) ∂ Z ( l + 1 , p ) ∂ X ( l , p ) L ∂ Z ( l + 1 , p ) = f l ′ ( Z ( l , p ) ) ⊙ u p ( δ ( l + 1 , p ) ) \begin{aligned} \delta^{(l,p)}&\overset{\Delta}{=}\frac{\partial \mathcal{L}}{\partial Z^{(l,p)}}\\ &=\frac{\partial X^{(l,p)}}{\partial Z^{(l,p)}}\frac{\partial Z^{(l+1,p)}}{\partial X^{(l,p)}}\frac{\mathcal{L}}{\partial Z^{(l+1,p)}}\\ &=f_l'(Z^{(l,p)})\odot up(\delta^{(l+1,p)}) \end{aligned} δ(l,p)=ΔZ(l,p)L=Z(l,p)X(l,p)X(l,p)Z(l+1,p)Z(l+1,p)L=fl(Z(l,p))up(δ(l+1,p))
u p up up 为上采样函数,与汇聚层的下采样操作相反

  • 若下采样是最大汇聚,则 δ ( l + 1 , p ) \delta^{(l+1,p)} δ(l+1,p) 中每个值会直接传递到前一层对应区域中的最大值对应的神经元,该区域中其他神经元设为0

    在这里插入图片描述

  • 若下采样是平均汇聚,则误差项 δ ( l + 1 , p ) \delta^{(l+1,p)} δ(l+1,p) 中每个值被平均分配到前一层对应区域的所有神经元上

    在这里插入图片描述

1.2.4 典型卷积神经网络

LeNet-5

基于 LeNet-5 的手写数字识别系统在20世纪90年代被美国很多银行使用

在这里插入图片描述

LeNet-5 共有7层,接受输入图像大小为 32 × 32 = 1024 32\times 32=1024 32×32=1024 ,输出对应10个类别的划分

C 1 C_1 C1 层是卷积层

C 1 C_1 C1 层是卷积层,使用 6 6 6 5 × 5 5\times 5 5×5 的卷积核,得到 ( 32 − 5 + 1 ) × ( 32 − 5 + 1 ) = 28 × 28 = 784 (32-5+1)\times(32-5+1)=28\times 28=784 (325+1)×(325+1)=28×28=784 的特征映射,因此 C 1 C_1 C1 层的神经元数量为 6 × 784 = 4704 6\times 784=4704 6×784=4704 ,可训练的参数数量为 6 × 5 × 5 + 6 = 156 6\times 5\times 5+6=156 6×5×5+6=156 ,连接数为 784 × 156 = 122304 784\times 156=122304 784×156=122304

S 2 S_2 S2 层为汇聚层

采样窗口为 2 × 2 2\times 2 2×2 ,使用平均汇聚,并使用一个非线性函数 Y ′ d = f ( w d Y d + b d ) Y'^d=f(w^dY^d+b^d) Yd=f(wdYd+bd) 。神经元个数为 6 × 14 × 14 = 1176 6\times 14\times14=1176 6×14×14=1176 ,可训练参数数量为 6 × ( 1 + 1 ) = 12 6\times (1+1)=12 6×(1+1)=12,连接数为 156 × 14 × 14 × ( 4 + 1 ) = 5880 156\times 14\times 14\times(4+1)=5880 156×14×14×(4+1)=5880

  • 偏置也算一个连接
C 3 C_3 C3 层为卷积层

LeNet-5 中用连接表定于会输入和输出特征映射间的依赖关系

在这里插入图片描述

由于输入和输出特征映射之间不一定需要全连接关系 Y ^ ( l , p ) = f ( ∑ d = 1 D W ( l , p , d ) ⊗ X ( l − 1 , d ) + b ( l , p ) ) \hat{Y}^{(l,p)}=f\left(\sum\limits_{d=1}^DW^{^{(l,p,d)}}\otimes X^{(l-1,d)}+b^{(l,p)}\right) Y^(l,p)=f(d=1DW(l,p,d)X(l1,d)+b(l,p))

连接表 T 用于描述输入和输出特征映射之间的连接关系, C 3 C_3 C3 层的第 0 ∼ 5 0\sim 5 05 个特征映射依赖于 S 2 S_2 S2 层的每3个连续子集,第 6 ∼ 11 6\sim 11 611 个特征映射依赖于 S 2 S_2 S2 层的每4个连续子集,第 12 ∼ 14 12\sim 14 1214 个特征映射依赖于 S 2 S_2 S2 层的每4个不连续子集,第 15 15 15 个特征映射依赖于 S 2 S_2 S2 层的所有特征映射

  • p p p 个输出特征映射依赖于第 d d d 个输入特征映射,则 T p , d = 1 T_{p,d}=1 Tp,d=1 ,否则为0,此时有卷积表达式
    Y ^ ( l , p ) = f ( ∑ d = 1 T p , d = 1 D W ( l , p , d ) ⊗ X l − 1 , d + b ( l , p ) ) \hat{Y}^{(l,p)}=f\left(\sum\limits_{\substack{d=1\\T_{p,d}=1}}^DW^{(l,p,d)\otimes X^{l-1,d}}+b^{(l,p)}\right) Y^(l,p)=f d=1Tp,d=1DW(l,p,d)Xl1,d+b(l,p)
    其中,T P × D P\times D P×D 大小的连接表,假设连接表中非零个数为 T T T ,则每个卷积核的大小为 T × U × V T\times U\times V T×U×V ,共需 T × U × V + P T\times U\times V+P T×U×V+P 个参数

对于 C 3 C_3 C3 层,共使用 60 60 60 5 × 5 5\times 5 5×5 的卷积核,得到 16 16 16 组大小为 ( 14 − 5 + 1 ) × ( 14 − 5 + 1 ) = 15 × 15 (14-5+1)\times (14-5+1)=15\times 15 (145+1)×(145+1)=15×15 的特征映射,神经元数量为 16 × 100 = 1600 16\times 100=1600 16×100=1600 ,可训练参数数量为 ( 60 × 25 ) + 16 = 1516 (60\times 25)+16=1516 (60×25)+16=1516 ,连接数为 100 × 1516 = 151600 100\times 1516=151600 100×1516=151600

S 4 S_4 S4 层为汇聚层

采样窗口为 2 × 2 2\times 2 2×2 ,得到 16 16 16 5 × 5 5\times 5 5×5 的特征映射,可训练参数数量为 16 × ( 1 + 1 ) = 32 16\times (1+1)=32 16×(1+1)=32 ,连接数为 16 × 5 × 5 × ( 4 + 1 ) = 2000 16\times 5\times 5\times(4+1)=2000 16×5×5×(4+1)=2000

  • 偏置也算一个连接
C 5 C_5 C5 层为卷积层

使用 120 × 16 = 1920 120\times 16=1920 120×16=1920 5 × 5 5\times 5 5×5 大小的卷积核,得到 120 120 120 组大小为 1 × 1 1\times 1 1×1 的特征映射。 C 5 C_5 C5 层的神经元数量为 120 120 120 ,可训练参数数量为 1920 × 25 + 120 = 48120 1920\times 25+120=48120 1920×25+120=48120 ,连接数为 120 × ( 16 × 25 + 1 ) = 48120 120\times (16\times 25+1)=48120 120×(16×25+1)=48120

F 6 F_6 F6 层为全连接层

84 84 84 个神经元,可训练参数数量为 84 × ( 120 + 1 ) = 10164 84\times (120+1)=10164 84×(120+1)=10164 ,连接数与参数数相同

输出层

输出层为 10 10 10 个径向奇函数

AlexNet

全监督的端到端学习模型,第一个现代深度卷积网络模型

  • GPU进行并行训练
  • 采用 R e L U ReLU ReLU 作为非线性激活函数
  • 使用 Dropout 防止过拟合
  • 使用数据增强来提高模型准确率

在这里插入图片描述

输入为 224 × 224 × 3 224\times 224\times 3 224×224×3 的图像,输出为 1000 1000 1000 个类别的条件概率,5个卷积层,3个汇聚层,3个全连接层

  • 由于当时GPU算力限制,所以将网络拆为两半

对于特殊的一维卷积变体,输出映射有以下变式计算
M − K + 2 P S + 1 \frac{M-K+2P}{S}+1 SMK+2P+1
在这里插入图片描述

第一个卷积层

两个大小为 11 × 11 × 3 × 48 11\times 11\times 3\times 48 11×11×3×48 的卷积核( D = 3 , P = 48 D=3,P=48 D=3,P=48) ,步长 S = 4 S=4 S=4 ,零填充 P = 3 P=3 P=3 ,得到两个大小为 ( 224 − 11 + 2 × 3 4 + 1 ) × ( 224 − 11 + 2 × 3 4 + 1 ) × 48 = 55 × 55 × 48 (\frac{224-11+2\times 3}{4}+1)\times (\frac{224-11+2\times 3}{4}+1)\times48=55\times 55\times 48 (422411+2×3+1)×(422411+2×3+1)×48=55×55×48 的特征映射组

第一个汇聚层

大小为 3 × 3 3\times 3 3×3 的最大汇聚操作,步长 S = 2 S=2 S=2 ,得到两个 ( 55 − 3 + 2 × 0 2 + 1 ) × ( 55 − 3 + 2 × 0 2 + 1 ) × 48 = 27 × 27 × 48 (\frac{55-3+2\times 0}{2}+1)\times (\frac{55-3+2\times 0}{2}+1)\times 48=27\times 27\times48 (2553+2×0+1)×(2553+2×0+1)×48=27×27×48 个特征映射组

第二个卷积层

使用两个大小为 5 × 5 × 48 × 128 5\times 5\times 48\times 128 5×5×48×128 的卷积核( D = 48 , P = 128 D=48,P=128 D=48,P=128) ,步长 S = 1 S=1 S=1 ,零填充 P = 2 P=2 P=2 ,得到两个大小为 ( 27 − 5 + 2 × 2 1 + 1 ) × ( 27 − 5 + 2 × 2 1 + 1 ) × 128 = 27 × 27 × 128 \left(\frac{27-5+2\times 2}{1}+1\right)\times \left(\frac{27-5+2\times 2}{1}+1\right)\times 128=27\times 27\times 128 (1275+2×2+1)×(1275+2×2+1)×128=27×27×128 的特征映射

第二个汇聚层

使用 3 × 3 3\times 3 3×3 的最大汇聚操作,步长 S = 2 S=2 S=2 ,得到两个 ( 27 − 3 + 2 × 0 2 + 1 ) × ( 27 − 3 + 2 × 0 2 + 1 ) × 128 = 13 × 13 × 128 \left(\frac{27-3+2\times 0}{2}+1\right)\times \left(\frac{27-3+2\times 0}{2}+1\right)\times 128=13\times 13\times 128 (2273+2×0+1)×(2273+2×0+1)×128=13×13×128 的特征映射组

第三个卷积层

两个路径的融合,使用一个大小为 3 × 3 × 256 × 384 3\times 3\times 256\times 384 3×3×256×384 的卷积核( D = 256 , P = 384 D=256,P=384 D=256,P=384) ,步长 S = 1 S=1 S=1,零填充 P = 1 P=1 P=1 ,得到两个大小为 ( 13 − 3 + 2 × 1 1 + 1 ) × ( 13 − 3 + 2 × 1 1 + 1 ) × 192 = 13 × 13 × 192 \left(\frac{13-3+2\times 1}{1}+1\right)\times \left(\frac{13-3+2\times 1}{1}+1\right)\times 192=13\times 13\times 192 (1133+2×1+1)×(1133+2×1+1)×192=13×13×192 的特征映射组

第四个卷积层

使用两个大小为 3 × 3 × 192 × 192 3\times 3\times 192\times 192 3×3×192×192 的卷积核( D = 192 , P = 192 D=192,P=192 D=192,P=192) ,步长 S = 1 S=1 S=1,零填充 P = 1 P=1 P=1 ,得到两个大小为 13 × 13 × 192 13\times 13\times 192 13×13×192 的特征映射组

第五个卷积层

使用两个大小为 3 × 3 × 192 × 128 3\times 3\times192\times 128 3×3×192×128 的卷积核( D = 192 , P = 128 D=192,P=128 D=192,P=128) ,步长 S = 1 S=1 S=1 ,零填充 P = 1 P=1 P=1 ,得到两个大小为 ( 13 − 3 + 2 × 1 1 + 1 ) × ( 13 − 3 + 2 × 1 1 + 1 ) × 128 = 13 × 13 × 128 \left(\frac{13-3+2\times 1}{1}+1\right)\times \left(\frac{13-3+2\times 1}{1}+1\right)\times 128=13\times 13\times 128 (1133+2×1+1)×(1133+2×1+1)×128=13×13×128 的特征映射组

第三个汇聚层

使用大小为 3 × 3 3\times 3 3×3 的最大汇聚操作,步长 S = 2 S=2 S=2 ,得到两个大小为 ( 13 − 3 + 2 × 0 2 + 1 ) × ( 13 − 3 + 2 × 0 2 + 1 ) × 128 = 6 × 6 × 128 \left(\frac{13-3+2\times 0}{2}+1\right)\times\left(\frac{13-3+2\times 0}{2}+1\right)\times 128=6\times 6\times 128 (2133+2×0+1)×(2133+2×0+1)×128=6×6×128 的特征映射

三个全连接层

全连接层1+ReLU+Dropout:参数矩阵 W ∈ R 6 × 6 × 256 × 4096 = 9216 × 4096 W\in \R^{6\times 6\times 256\times 4096=9216\times 4096} WR6×6×256×4096=9216×4096 ,有 4096 4096 4096 个神经元

全连接层2+ReLU+Dropout:参数矩阵 W ∈ R 4096 × 4096 W\in \R^{4096\times 4096} WR4096×4096 ,有 4096 4096 4096 个神经元

全连接层3:有 1000 1000 1000 个神经元,参数矩阵 W ∈ R 4096 × 1000 W\in \R^{4096\times 1000} WR4096×1000

输出层 Softmax
Inception网络

卷积层的卷积核大小是一个十分关键的问题

Inception 网络中,一个卷积层包含多个不同大小的卷积操作,称为 Inception 模块

Inception 网络由多个 Inception 模块和少量汇聚层堆叠而成

Inception模块

Inception 模块同时使用不同大小的卷积核,并将得到的特征映射在深度上拼接(堆叠)起来作为输出特征映射

在这里插入图片描述

X ∈ R M × N × D X\in \R^{M\times N\times D} XRM×N×D

  • 对于 1 × 1 × D 1\times 1\times D 1×1×D 的卷积核,得到特征映射 M × N × D M\times N\times D M×N×D

  • 对于 3 × 3 3\times 3 3×3 的卷积核,特征映射 ( M − 3 + 2 × 1 1 + 1 ) × ( N − 3 + 2 × 1 1 + 1 ) × D = M × N × D \left(\frac{M-3+2\times 1}{1}+1\right)\times \left(\frac{N-3+2\times 1}{1}+1\right)\times D=M\times N\times D (1M3+2×1+1)×(1N3+2×1+1)×D=M×N×D

    为得到等宽卷积,补 P = 3 − 1 2 = 1 P=\frac{3-1}{2}=1 P=231=1 个零

  • 对于 5 × 5 5\times 5 5×5 的卷积核,为得到等宽卷积,补 P = 5 − 1 2 = 2 P=\frac{5-1}{2}=2 P=251=2 个零

1 × 1 1\times 1 1×1 卷积核的作用
  1. 降维/升维

    在这里插入图片描述

    1 × 1 1\times 1 1×1 的卷积核不会改变宽度和长度,直观看可以改变深度,即通道数

    降维:可以通过减少通道数来减少参数,进而可以进行数据的降维处理

    • 假设有一个 M × N × 3 M\times N\times 3 M×N×3 的图像,通过 1 × 1 × 3 × 2 1\times 1\times 3\times 2 1×1×3×2 ( D = 3 , P = 2 D=3,P=2 D=3,P=2 ) 的卷积核处理,得到 M × N × 2 M\times N\times 2 M×N×2 的特征映射,达到降维目的

    升维:同样可以通过增加通道数来增加参数,对数据进升维处理

    • 同样的输入,经过 1 × 1 × 3 × 4 1\times 1\times 3\times 4 1×1×3×4 的卷积核处理,得到 M × N × 4 M\times N\times 4 M×N×4 的特征映射,达到升维的目的
  2. 跨通道信息整合

    使用 1 × 1 1\times 1 1×1 的卷积核,实现降维和升维的操作其实是利用通道间信息的线性组合,

    3 × 3 × 64 3\times 3\times 64 3×3×64 的输入,经过 1 × 1 × 64 × 28 1\times 1\times 64\times 28 1×1×64×28 的卷积核,就变成了 3 × 3 × 28 3\times 3\times 28 3×3×28 的输出,可以理解为原来的64个通道的输入跨通道线性组合变成了28个通道,这就是通道间的信息交互

  3. 减少计算量

    在这里插入图片描述

    原先:

    Z ( l , p ) = ∑ d = 1 D W ( l , p , d ) ⊗ X ( l − 1 , d ) + b ( l , p ) Z^{(l,p)}=\sum\limits_{d=1}^DW^{(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) ,对于一次卷积,需要经过 M ′ × N ′ × U × V M'\times N'\times U\times V M×N×U×V 次乘法,故若要计算上述输入特征映射,需要 P × D × M ′ × N ′ × U × V = 32 × 192 × 5 2 × 2 8 2 P\times D\times M'\times N'\times U\times V=32\times 192\times 5^2\times 28^2 P×D×M×N×U×V=32×192×52×282

  4. 增加网络的深度,添加非线性,增强神经网络的表达能力

    增加网络深度好处:卷积核越大,网络的深度也就增加。随着网络深度的增加,越靠后的特征图上的节点感受野也越大。因此特征也越来越形象,也就是更能看清这个特征是个什么东西。层数越浅,就越不知道这个提取的特征到底是个什么东西。

    添加非线性:想在不增加卷积核大小的情况下,让网络加深,可以加一层 1 × 1 1\times 1 1×1 的卷积核,在不改变输入规模的情况下,一个卷积层包含激活和池化,相当于多了一个非线性的激活函数,如 R e L U ReLU ReLU S i g m o d Sigmod Sigmod

    卷积层之后经过激励层,经过卷积核得到的特征映射,可以添加非线性激活函数,提高网络的表达能力

Inception网络版本

其中最早的Inception v1 版本就是非常著名的GoogLeNet

GoogLeNet 由9 个Inception v1 模块和5 个汇聚层以及其他一些卷积层和全连接层构成,总共为22 层网络

为了解决梯度消失问题,GoogLeNet 在网络中间层引入两个辅助分类器来加强监督信息

Inception 网络有多个改进版本,其中比较有代表性的有Inception v3 网络。Inception v3 网络用多层的小卷积核来替换大的卷积核以减少计算量和参数量,并保持感受野不变

在这里插入图片描述

  • 使用两层 3 × 3 3\times 3 3×3 的卷积替代 v1 中的 5 × 5 5\times 5 5×5 的卷积
  • 使用连续的 K × 1 K\times 1 K×1 1 × K 1\times K 1×K 替换 K × K K\times K K×K 的卷积
  • 引入标签平滑和批量归一化等优化方法进行训练
残差网络ResNet(152层)

通过给非线性的卷积层增加直连边的方式来提高信息的传播效率

在这里插入图片描述

残差单元

假设在一个深度网络中,我们期望一个非线性单元 f ( x ; θ ) f(x;\theta) f(x;θ) 去逼近一个目标函数 h ( x ) h(x) h(x) ,可以将目标函数拆分成两部分
h ( x ) = x ⏟ 恒等函数 + ( h ( x ) − x ) ⏟ 残差函数 h(x)=\underbrace{x}_{恒等函数}+\underbrace{(h(x)-x)}_{残差函数} h(x)=恒等函数 x+残差函数 (h(x)x)

  • 根据通用近似定理,一个由神经网络构成的非线性单元有足够多的能力来近似逼近原始目标函数或残差函数,但由于线性函数 h ( x ) = x h(x)=x h(x)=x 很难用非线性单元拟合,所以拟合残差函数反而容易

    故将原始优化问题变为:让非线性单元 f ( x ; θ ) f(x;\theta) f(x;θ) 去近似残差函数 h ( x ) − x h(x)-x h(x)x ,并用 f ( x ; θ ) + x f(x;\theta)+x f(x;θ)+x 去逼近 h ( x ) h(x) h(x)

在这里插入图片描述

残差单元有多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过 R e L U ReLU ReLU 激活后得到输出

  • 由于直连边的存在,偏导大于等于1,使得卷积网络可以堆很深
    ∂ h ( x ) ∂ x = 1 + ∂ f ( x ; θ ) ∂ x \frac{\partial h(x)}{\partial x}=1+\frac{\partial f(x;\theta)}{\partial x} xh(x)=1+xf(x;θ)

1.2.5 非标准卷积

空洞卷积
如何增加输出单元的感受野

感受野和卷积长度(卷积核大小)直接相关

  • 增加卷积核大小——增加参数数量

  • 增加层数:两层 3 × 3 3\times 3 3×3 近似一层 5 × 5 5\times 5 5×5 卷积的效果

    增加复杂度

  • 卷积前进行汇聚——产生信息损失

    汇聚层不但可以有效减少神经元的数量,还可以使网络对一些小的局部形态改变保持不变性,并拥有更大的感受野

    第2层卷积层神经元感受野有K个神经元,第3层卷积层神经元感受野有 2 K − 1 2K-1 2K1 个神经元,依次类推,随着卷积层数深度增加,神经元感受野也就越大,越容易提取到高级特征

    在这里插入图片描述

空洞卷积 不增加参数数量,同时增加输出单元感受野——膨胀卷积

在卷积核每两个元素之间插入 D − 1 D-1 D1 个空洞,卷积核的有效大小为
K ′ = K + ( K − 1 ) × ( D − 1 ) K'=K+(K-1)\times (D-1) K=K+(K1)×(D1)

  • D D D 为膨胀率,当 D = 1 D=1 D=1 时卷积核为普通的卷积核

通过给卷积核插入空洞(改变步长)来增加感受野

在这里插入图片描述

"反"卷积
转置卷积

低维特征映射到高维特征映射——转置卷积,反卷积

假设一个高维向量 X ∈ R D X\in \R^D XRD 和一个低维向量 Z ∈ R M Z\in \R^M ZRM ,且 M < D M<D M<D
Z = W X , W ∈ R M × D Z=WX,W\in \R^{M\times D} Z=WX,WRM×D
若用仿射变换来实现高维到低维的映射
X = W T Z X=W^TZ X=WTZ
两个映射形式上是转置关系

  • 在全连接网络中,忽略激活函数,前向计算和反向传播就是一种转置关系
    Z ( l + 1 ) = W ( l + 1 ) Z ( l ) δ ( l ) = ( W ( l + 1 ) ) T δ ( l + 1 ) Z^{(l+1)}=W^{(l+1)}Z^{(l)}\\ \delta^{(l)}=(W^{(l+1)})^T\delta^{(l+1)} Z(l+1)=W(l+1)Z(l)δ(l)=(W(l+1))Tδ(l+1)

对于二维向量

在这里插入图片描述

  • C C C 为稀疏矩阵,其非零元素来自于卷积核 W W W 中的元素

在这里插入图片描述


对于一个 M M M 维的向量 Z Z Z 和大小为 K K K 的卷积核,如果希望通过卷积操作来映射到更高维的向量,需要对 Z Z Z 两端进行补零 P = K − 1 P=K-1 P=K1 ,可以得到 M + K − 1 M+K-1 M+K1 维向量

对于 M × N M\times N M×N 维向量 X X X ,通过 U × V U\times V U×V 为卷积核 W W W ,在 M M M 边分别补 U − 1 U-1 U1 个零, N N N 边分别补 V − 1 V-1 V1 个零,可以得到转置卷积 ( M + U − 1 ) × ( N + V − 1 ) (M+U-1)\times (N+V-1) (M+U1)×(N+V1) 维输出

在这里插入图片描述

微步卷积

步长变小——微步卷积

整体思路:通过增加卷积的步长 S > 1 S>1 S>1 ,实现对特征的下采样操作,大幅降低特征映射维数(神经元数量)

同样,减小步长 S < 1 S<1 S<1 ,能使特征映射的维数(神经元数量)增加

在这里插入图片描述

若希望转置卷积的步长变为 1 S \frac{1}{S} S1 ,则需要在输入特征之间插入 S − 1 S-1 S1 个零来使移动速度变慢

  • 以一维转置卷积为例,对一个 M M M 维的向量 Z Z Z 和大小为 K K K 的卷积核,通过对向量 Z Z Z 进行两端补零 P = K − 1 P=K-1 P=K1 ,并且在每两个向量元素之间插入 D D D 个零,然后进行步长为 1 1 1 的卷积,得到 ( D + 1 ) × ( M − 1 ) + K (D+1)\times (M-1)+K (D+1)×(M1)+K 维向量

  • 对于 M × N M\times N M×N 的输入向量 X X X U × V U\times V U×V 的卷积核,对向量 X X X 分别补 U − 1 U-1 U1 V − 1 V-1 V1 个零,并且在每两个元素之间插入 D 1 D_1 D1 D 2 D_2 D2 个零,得到 [ ( D 1 + 1 ) × ( M − 1 ) + U ] × [ ( D 2 + 1 ) × ( N − 1 ) + V ] [(D_1+1)\times (M-1)+U]\times [(D_2+1)\times (N-1)+V] [(D1+1)×(M1)+U]×[(D2+1)×(N1)+V] 维的输出向量 Z Z Z

若原先步长 S = 2 S=2 S=2 ,若步长减少 1 2 \frac{1}{2} 21 输出的特征映射会增加一倍

在这里插入图片描述

左图:输入 X ∈ R 5 × 5 X\in \R^{5\times 5} XR5×5 ,步长 S = 2 S=2 S=2

右图:步长 S = 1 S=1 S=1 ,填充零

  • [ ( 1 + 1 ) × ( 2 − 1 ) + 3 ] × [ ( 1 + 1 ) × ( 2 − 1 ) + 3 ] = 5 × 5 [(1+1)\times (2-1)+3]\times[(1+1)\times (2-1)+3]=5\times 5 [(1+1)×(21)+3]×[(1+1)×(21)+3]=5×5

1.2.6 卷积神经网络应用

AlphaGo

决策网络

在这里插入图片描述

目标检测RCN

区域卷积网络

图像分割RCNN

在这里插入图片描述

  • 像素级图像分割
光学字符识别OCR
应用于文本
Ngram特征与卷积

在这里插入图片描述

  • 一元特征
  • 二元特征:单词顺序
  • 三元特征

可以理解为滑动窗口

词到词向量

通过Lookup Table 将一个单词变为一个词向量

  • 在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3 前馈神经网络分析

相邻两层之间存在单向连接,层内无连接

  • 前馈神经网络中,信息的传递是单向的,这种限制使得网络易于学习,但一定程度上削弱了神经网络模型的能力

输入与输出的维度是固定的,不能任意改变

  • 前馈神经网络的输入维度固定,学到的连接参数是固定改变的

网络当前的输出只依赖当前的输入

  • 前馈神经网络可以看做一个复杂的函数,每次映射都是独立的
  • 当前时刻的输出不仅依赖当前时刻的输入,实际也可能依赖前一时刻的状态(输入输出)

(全连接的前馈神经网络)无法处理 序列数据

  • 很多现实任务,网络的输出不仅和当前时刻的输入相关,也和其过去一段时间的输出相关

如:无法实现有限状态机

  • 下一时刻的状态不仅和当前的输入相关,也和当前状态相关(上一时刻的输出)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome 118 版本中的新功能

Google Chrome 的最新版本V118正式版 2023/10/10 发布&#xff0c;以下是新版本中的相关新功能供参考。 本文翻译自 New in Chrome 118&#xff0c;作者&#xff1a; Adriana Jara&#xff0c; 略有删改。 以下是主要内容&#xff1a; 使用scope css规则在组件中指定特定样式。…

Mybatis 实现简单增删改查

目录 前言 一、Mybatis是什么 二、配置Mybatis环境 三、创建数据库和表 四、添加业务代码 4.1、添加实体类 4.2、添加mapper接口 4.3、添加实现接口方法的xml文件 五、简单的增删改查操作及单元测试 5.1、单元测试 单元测试具体步骤&#xff1a; 单元测试如何才能不污…

好莱坞编剧大罢工终于结束;与OpenAI创始人共进早餐;使用DALL-E 3制作绘本分享;生成式AI的基础设施架构 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f525; 好莱坞编剧大罢工终于结束&#xff1a;简单说就是AI妥协了 https://www.wgacontract2023.org/the-campaign/summary-of-the-2023-wga-…

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候&#xff0c;我们在谈论什么 js渲染网页&#xff0c;从某种程度来说&#xff0c;是指单纯的http请求&#xff0c;返回的文本数据&#xff0c;与我们在浏览器看到的内容&#xff0c;相距甚远.其可包括为以下几点&…

C++的高手之旅

要学习C并成为C大佬&#xff0c;以下是一些建议&#xff1a; 掌握C基础知识&#xff1a;C是一种面向对象的编程语言&#xff0c;它包含了C语言的大部分语法和特性。因此&#xff0c;学习C之前&#xff0c;建议先掌握C语言的基础知识&#xff0c;包括数据类型、控制流、指针、内…

微调Yolov8动物姿势估计模型

本文主要以狗的姿势估计为例,展示如何对当下流行的YOLOv8姿势模型进行Fine-tuning,并附录完整代码。 动物姿势估计是计算机视觉领域的一个研究方向,它是人工智能的一个子领域,专注于自动检测和分析图像或视频中动物的姿势和位置。其目标是确定一个或多个动物身体部位的空间…

msvcr120.dll丢失怎样修复?总结msvcr120.dll丢失的5修复方法

在使用计算机的过程中&#xff0c;我们常常会遇到各种问题&#xff0c;其中之一就是“计算机丢失msvcr120.dll丢失的困扰”。这个问题可能对一些人来说并不陌生&#xff0c;但是对于初次遇到这个问题的人来说&#xff0c;可能会感到无所适从。因此&#xff0c;小编将详细探讨这…

免费开源的非标项目型制造BOM一键导入方案介绍

非标项目型制造&#xff0c;每一个订单都会引入很多新料号、新BoM、新工艺路线。实施ERP/MES系统&#xff0c;实现生产管理数字化&#xff0c;第一步就是要导入这些料号、BoM和工艺。项目型制造&#xff0c;大多数订单只生产一次。但在ERP/MES系统中&#xff0c;订单的料号、Bo…

【Unity】【VR】如何让Distance Grab抓取物品时限制物品的Rotation

【背景】 遇到这样的场景,希望抓取Canvas时,Canvas不会沿Z轴旋转。 【问题】 发现Freeze Canvas的Rigid Body没有用。 【分析】 应该是RigidBody的限制仅在物理互动下生效,抓取可能不属于物理互动(比如碰撞),所以不生效。 【思路】 还是得写脚本挂载在Interacta…

存档&改造【06】Apex-Fancy-Tree-Select花式树的使用误删页数据还原(根据时间节点导出导入)

之前一直想实现厂区-区域-产线之间的级联选取&#xff0c;于是导入插件Apex-Fancy-Tree-Select花式树 存档&#xff06;改造【03】Apex-Fancy-Tree-Select花式树的导入-CSDN博客 现在则是在Oracle Apex中的应用 花式书级联列表展示厂区-区域-产线 想要实现的效果 由厂区>…

Day 6 C++

#include <iostream> //不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲解员&#xff0c;他会为每种动物表演做简单的介 //绍。定义一个基类 Animal&#xff0c;其中有一个虛函数perform&#xff08;)&#xff0c;用于在子类中实现不…

真人现在猫鼠躲猫猫游戏搭建流程:专业思考与深度思考

真人现在猫鼠躲猫猫游戏是种充满乐趣和挑战的团队竞技游戏。本文将从游戏规则设计、场地布置、技术实现和用户体验等方面&#xff0c;深入探讨人现在猫鼠躲猫猫游戏的搭建流程&#xff0c;并结合专业思考与深度思考&#xff0c;为游戏搭建提供全面指导。 一、游戏规则设计&…

网工笔记整理:策略工具Filter-policy的使用

一、概述 Filter-Policy&#xff08;过滤-策略&#xff09;是一个很常用的路由信息过滤工具&#xff0c;能够对接收、发布、引入的路由进行过滤&#xff0c;可应用于IS-IS、OSPF、BGP等协议。 Filter-policy在距离矢量路由协议中的应用 filter-policy import&#xff1a;不发…

行业追踪,2023-10-11

自动复盘 2023-10-11 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Linux进程概念(二)--进程状态进程优先级

继上回书Linux进程概念&#xff08;一&#xff09;&#xff0c;我们初步了解了进程的一些相关概念以及如何创建和查看进程&#xff0c;对其原理和一些进程现象进行了分析和解释&#xff0c;那么今天&#xff0c;我们学习下一个进程知识-进程概念。 目录 1.操作系统的进程状态 …

Java List 中存不同的数据类型

在最近的实践中&#xff0c;有人突然问了一个问题&#xff1a; 在 Java 的 List 中可以存不同的数据类型吗&#xff1f; 这个问题突然给问到了&#xff0c;我们都知道 Java 中的 List 中存的是对象&#xff0c;通常我们定义都会这样的定义&#xff1a; List<String> t…

SRC实战-cookie注入漏洞

目录 谷歌语法-信息收集 cookie注入 实战演示 信息收集 SQL注入判断 查找字段数 爆破表名 输出结果 总结 本文由掌控安全学院 - 小博 投稿 谷歌语法-信息收集 1.查找带有ID传参的网站&#xff08;可以查找sql注入漏洞&#xff09; inurl:asp idxx 2.查找网站后台&…

AlGaN/GaN结构的氧基数字蚀刻

引言 宽带隙GaN基高电子迁移率晶体管(HEMTs)和场效应晶体管(fet)能够提供比传统Si基高功率器件更高的击穿电压和电子迁移率。常关GaN非常需要HEMT来降低功率并简化电路和系统架构&#xff0c;这是GaN HEMT技术的主要挑战之一。凹进的AlGaN/GaN结构是实现常关操作的有用选择之一…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测包管理工具安装软件(六)

七、华为云耀云服务器L实例评测包管理工具安装软件&#xff1a; 根据企业级项目架构图所示&#xff0c;本章主要是安装公司企业项目的基本环境LNMP&#xff0c;相关的包管理器Composer、Node、Npm、Yarn安装&#xff0c;评测一下包管理工具安装软件是否存在问题&#xff0c;如果…

区块链技术在供应链管理中的创新应用

区块链技术以其独特的不可篡改和透明性特点&#xff0c;正在逐步改变供应链管理的传统模式。本文将探讨区块链技术在供应链管理中的创新应用及其带来的效益。 区块链技术的出现为许多行业带来了创新的可能&#xff0c;其中之一就是供应链管理。通过区块链技术&#xff0c;企业可…