目录
[1. 基本概念](#1. 基本概念)
[1.1 卷积神经网络](#1.1 卷积神经网络)
[1.2 卷积](#1.2 卷积)
[1.3 汇聚(池化)](#1.3 汇聚(池化))
[2. CNN网络架构及参数学习](#2. CNN网络架构及参数学习)
[2.1 网络架构](#2.1 网络架构)
[2.2 参数学习](#2.2 参数学习)
[3. 典型的卷积神经网络](#3. 典型的卷积神经网络)
[3.1 LeNet-5](#3.1 LeNet-5)
[3.2 AlexNet](#3.2 AlexNet)
[3.3 Inception网络](#3.3 Inception网络)
[3.4 残差网络](#3.4 残差网络)
[4. 其他卷积方式](#4. 其他卷积方式)
1. 基本概念
1.1 卷积神经网络
卷积神经网络(Convolutional Neural Network,CNN 或 ConvNet 或 CNNs),是前馈神经网络的一种,相比较全连接神经网络(FCNN),CNN的参数更少,具有层次更深、局部连接、权重共享等特性。

卷积神经网络一般是由卷积层 、汇聚层 和全连接层交叉堆叠而成的前馈神经网络。卷积神经网络主要使用在图像和视频分析的各种任务(比如图像分类、人脸识别、物体识别、图像分割等)上,其准确率一般也远远超出了其他的神经网络模型.近年来卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域。
1.2 卷积
卷积(Convolution),也叫褶积(zhě jī),是分析数学中一种重要的运算。在信号处理或图像处理中,经常使用一维或二维卷积。
(1)卷积运算
卷积的"卷",是翻转的意思;"积"是求积运算。
卷积的定义,可参看经典论文及书籍《数字信号处理》(杨毅明),或者百度,这里贴上百度关于卷积的解释:
卷 积https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF/9411006
通俗讲,卷积运算是采用一个卷积核(也称滤波器)作为移动窗口,在数据上滑动,每次滑动都会进行一次"加权求积运算",移动结束后得到一个维度小于原数据的特征数组。下面为《神经网络与深度学习》中一个卷积计算实例:

可以看出,卷积核W 在计算前应先进行180°翻转,再与数据X进行加权求和。
需要注意的是,现在网上大多数关于卷积的定义都是有误的,那些关于卷积的解释,未将卷积核进行翻转就直接求积运算,实际上是"互相关运算",又称"不翻转卷积"。
(2)互相关运算(不翻转卷积)
互相关(Cross-Correlation)是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。这与卷积运算相似,差别仅是卷积核翻转与否,因此,互相关也称不翻转卷积。
在计算卷积的过程中,需要进行卷积核翻转.在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销。
给定一个图像和卷积核
,其互相关为:

上式也可写为矩阵形式:

上式中, 表示互相关运算,
表示卷积运算,rot180 表示翻转180°。
关于卷积和互相关的对比,可参看这篇文章:
由于目前的深度学习框架中卷积核的参数经过学习得到,因此,在代码实现中并未区别卷积与互相关。鉴于此,下文中除定义外所称"卷积",即是指"互相关",不再区分两者。
(3)一维卷积
一维卷积经常用在信号处理中,用于计算信号的延迟累积。比如,某信号发生器 每个 时刻均发出信号
,信号衰减率为
,那么
时刻产生的信号在
时刻衰减为原来的
倍,在
时刻衰减为原来的
倍,那便有如下情况:

便于理解,特意做了个动图如下:

动图中的卷积核表示了信号衰减程度,与上面截图中定义的相反,即动图的,
,
。由上图知卷积可以这样理解:卷积核 作为移动窗口对数据 逐步扫描,窗口内数据按位置对应求积 后再求和。
(4)二维卷积
二维卷积与一维卷积相似,只不过二维卷积核需要在两个方向滑动,如下图所示:

便于理解,给出一个二维卷积实例如下:

(5)卷积的两个性质

下面的 函数为损失函数:


1.3 汇聚(池化)
(1)上采样
上采样是指在原有数据基础上增加其数量、维度或特征,比如:放大图片、增加分辨率、转置卷积都属于上采样。
(2)下采样
下采样是指在原有数据基础上减少其数量、维度或特征,比如:缩小图片、压缩图片、卷积都属于下采样。
(3)汇聚
汇聚,也称池化,是指降低特征数量,从而减少参数数量的一种方法,具体操作就是下采样。
2. CNN网络架构及参数学习
2.1 网络架构
卷积神经网络一般由卷积层、汇聚层(也称池化层)和全连接层构成。
(1)卷积层
卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器,卷积层的单个神经元和全连接网络一样,都是一维结构,但在卷积神经网络(CNNs)中,神经元是被组织成三维体积的,这与全连接层中的神经元结构不同。全连接层的神经元是一维排列的,每个神经元与前一层的所有神经元相连接。在卷积层中,神经元被组织成深度、高度和宽度三个维度,形成一个三维体积。这种设计是为了更好地处理具有空间结构的数据,如图像。

活性值就是前一层的输出值,而这里的 没有经过激活函数处理,称为净活性值。

上图中所有的同颜色连接上的权重是相同的,这就是权重共享,可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征。因此,如果要提取多种特征就需要使用多个不同的卷积核。此外,CNN网络的第𝑙 层的神经元个数不是任意选择的,而是满足,K为卷积核大小。
(2)汇聚层
汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer)、池化层,其作用是进行特征选择,降低特征数量,从而减少参数数量 。
卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的神经元个数并没有显著减少。如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合。
汇聚层通过汇聚函数对前一层(卷积层)的卷积结果进行下采用,从而减少特征,常用的汇聚函数有两种:

(3)全连接层
在卷积神经网络(CNN)中,全连接层(Fully Connected Layer,FC)通常位于网络的最后几层,用于将前面提取的特征映射到较小的空间,通常是用于分类任务的输出。在全连接层中,每个神经元都与前一层的所有神经元相连,这与卷积层中的局部连接性形成对比。全连接层的作用主要有以下几个方面:
- 特征整合:经过卷积层和池化层后,图像的特征已经被分解和抽象。全连接层将这些特征整合成一个固定长度的向量,这个向量可以代表图像的全局特征。
- 分类决策:全连接层最后通常会连接到一个输出层,这个输出层包含与类别数目相同的神经元。每个神经元的激活值可以表示属于某一类别的概率。在分类任务中,全连接层起到最终决策的作用。
- 适应不同尺寸的输出:全连接层可以调整其神经元数量以适应不同任务的需求,无论是二分类还是多分类,或者是回归问题。
- 参数密集:全连接层通常包含大量参数,因为每个神经元都需要与前一层的所有神经元相连。这也是为什么在深度学习模型中,全连接层往往占据大部分参数的原因,同时也可能导致过拟合。
- 降维:在一些情况下,全连接层还可以用于降维,将高维特征空间映射到低维空间,这有助于减少计算量和内存需求。
然而,全连接层的一个缺点是它不考虑输入数据的空间结构,这对于处理图像以外的数据类型可能不是问题,但对于图像数据,卷积层和池化层已经很好地捕获了空间信息。此外,全连接层的参数量巨大,容易导致过拟合,特别是在训练数据有限的情况下。因此,在现代的CNN架构中,有时会避免使用大型的全连接层,或者将其替换为全局平均池化等技术来减少参数量并保持空间信息。
常用的卷积网络整体结构如下图:

2.2 参数学习
在卷积网络中,参数为卷积核中权重以及偏置。和全连接前馈网络类似,卷积网络也可以通过误差反向传播算法来进行参数学习。
假设卷积层中有多个卷积核,每个卷积核学习一种特征,那么对于第 层的第
个特征映射输入为:

损失函数关于参数的偏导数为:

在反向传播时,卷积层的任务是根据损失函数对权重的梯度来更新这些权重,汇聚层的任务是将梯度传递回其输入。汇聚层通过简单的误差传播规则将误差传递回卷积层,而卷积层则需要计算复杂的梯度来更新其参数。
3. 典型的卷积神经网络
3.1 LeNet-5


上面的原理字多图少有点绕,更加浅显易懂的解释参看下文:
3.2 AlexNet



上面的原理字多图少有点绕,更加浅显易懂的解释参看下文:
3.3 Inception网络
在卷积网络中,如何设置卷积层的卷积核大小是一个十分关键的问题。在Inception 网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception 模块。Inception 网络是由有多个Inception 模块和少量的汇聚层堆叠而成。
Inception模块同时使用1 × 1、3 × 3、5 × 5等不同大小的卷积核,并将得到的特征映射在深度上拼接(堆叠)起来作为输出特征映射。
图5.13给出了v1 版本的Inception 模块结构,采用了4 组平行的特征抽取方式,分别为1 × 1、3 × 3、5 × 5 的卷积和3 × 3 的最大汇聚.同时,为了提高计算效率,减少参数数量,Inception 模块在进行3 × 3、5 × 5 的卷积之前、3 × 3 的最大汇聚之后,进行一次1 × 1 的卷积来减少特征映射的深度.如果输入特征映射之间存在冗余信息,1 × 1 的卷积相当于先进行一次特征抽取。

Inception 网络有多个版本,其中最早的Inception v1 版本就是非常著名的GoogLeNet。GoogLeNet赢得了2014 年ImageNet 图像分类竞赛的冠军。GoogLeNet 由9 个Inception v1 模块和5 个汇聚层以及其他一些卷积层和全连接层构成,总共为22 层网络,如图所示:

看不清点击链接:
GoogLeNet 网络结构https://nndl.github.io/v/cnn-googlenet
为了解决梯度消失问题,GoogLeNet 在网络中间层引入两个辅助分类器来加强监督信息。Inception 网络有多个改进版本,其中比较有代表性的有Inception v3 网络。Inception v3 网络用多层的小卷积核来替换大的卷积核,以减少计算量和参数量,并保持感受野不变.具体包括:1)使用两层3 × 3 的卷积来替换v1 中的5 × 5 的卷积;2)使用连续的𝐾 × 1 和1 × 𝐾 来替换𝐾 × 𝐾 的卷积.此外,Inception v3 网络同时也引入了标签平滑以及批量归一化等优化方法进行训练。
3.4 残差网络
残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边(Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率。
假设在一个深度网络中,我们期望一个非线性单元 去逼近一个目标函数
,).可以将目标函数拆分成两部分:恒等函数(Identity Function)
和 残差函数(Residue Function)
:

实际中后者(残差函数)更容易学习,因此原来的优化问题可以转换为:让非线性单元 去近似残差函数
,并用
去逼近
。
下图给出了一个典型的残差单元示例,残差单元由多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过ReLU 激活后得到输出:

残差网络就是将很多个残差单元串联起来构成的一个非常深的网络.和残差网络类似的还有Highway Network。
4. 其他卷积方式
(1)转置卷积


(2)微步卷积

(3)空洞卷积

