04 卷积神经网络

目录

[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°。


关于卷积和互相关的对比,可参看这篇文章:

一文看懂卷积运算(convolution)与互相关运算(cross-correlation)的区别https://blog.csdn.net/qq_42589613/article/details/128297091?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172172946116800182744913%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172172946116800182744913&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-128297091-null-null.142%5Ev100%5Epc_search_result_base9&utm_term=%E4%BA%92%E7%9B%B8%E5%85%B3%E8%BF%90%E7%AE%97&spm=1018.2226.3001.4187


由于目前的深度学习框架中卷积核的参数经过学习得到,因此,在代码实现中并未区别卷积与互相关。鉴于此,下文中除定义外所称"卷积",即是指"互相关",不再区分两者。

(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)通常位于网络的最后几层,用于将前面提取的特征映射到较小的空间,通常是用于分类任务的输出。在全连接层中,每个神经元都与前一层的所有神经元相连,这与卷积层中的局部连接性形成对比。全连接层的作用主要有以下几个方面:

  1. 特征整合:经过卷积层和池化层后,图像的特征已经被分解和抽象。全连接层将这些特征整合成一个固定长度的向量,这个向量可以代表图像的全局特征。
  2. 分类决策:全连接层最后通常会连接到一个输出层,这个输出层包含与类别数目相同的神经元。每个神经元的激活值可以表示属于某一类别的概率。在分类任务中,全连接层起到最终决策的作用。
  3. 适应不同尺寸的输出:全连接层可以调整其神经元数量以适应不同任务的需求,无论是二分类还是多分类,或者是回归问题。
  4. 参数密集:全连接层通常包含大量参数,因为每个神经元都需要与前一层的所有神经元相连。这也是为什么在深度学习模型中,全连接层往往占据大部分参数的原因,同时也可能导致过拟合。
  5. 降维:在一些情况下,全连接层还可以用于降维,将高维特征空间映射到低维空间,这有助于减少计算量和内存需求。

然而,全连接层的一个缺点是它不考虑输入数据的空间结构,这对于处理图像以外的数据类型可能不是问题,但对于图像数据,卷积层和池化层已经很好地捕获了空间信息。此外,全连接层的参数量巨大,容易导致过拟合,特别是在训练数据有限的情况下。因此,在现代的CNN架构中,有时会避免使用大型的全连接层,或者将其替换为全局平均池化等技术来减少参数量并保持空间信息。

常用的卷积网络整体结构如下图:

2.2 参数学习

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

假设卷积层中有多个卷积核,每个卷积核学习一种特征,那么对于第 层的第 个特征映射输入为:

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

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

3. 典型的卷积神经网络

3.1 LeNet-5

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

深度学习入门(一):LeNet-5教程与详解https://blog.csdn.net/qq_40714949/article/details/109863595?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172178979016800175777250%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172178979016800175777250&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109863595-null-null.142^v100^pc_search_result_base9&utm_term=lenet-5&spm=1018.2226.3001.4187

3.2 AlexNet

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

CNN经典网络模型(二):AlexNet简介及代码实现 https://blog.csdn.net/qq_43307074/article/details/126027818?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172179055516800225530403%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172179055516800225530403&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-126027818-null-null.142^v100^pc_search_result_base9&utm_term=AlexNet&spm=1018.2226.3001.4187

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)空洞卷积

相关推荐
CV学术叫叫兽几秒前
快速图像识别:落叶植物叶片分类
人工智能·分类·数据挖掘
WeeJot嵌入式27 分钟前
卷积神经网络:深度学习中的图像识别利器
人工智能
糖豆豆今天也要努力鸭34 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
脆皮泡泡36 分钟前
Ultiverse 和web3新玩法?AI和GameFi的结合是怎样
人工智能·web3
机器人虎哥39 分钟前
【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测
人工智能·机器学习
码银1 小时前
冲破AI 浪潮冲击下的 迷茫与焦虑
人工智能
用户37791362947551 小时前
【循环神经网络】只会Python,也能让AI写出周杰伦风格的歌词
人工智能·算法
何大春1 小时前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式
uncle_ll1 小时前
PyTorch图像预处理:计算均值和方差以实现标准化
图像处理·人工智能·pytorch·均值算法·标准化
宋138102797201 小时前
Manus Xsens Metagloves虚拟现实手套
人工智能·机器人·vr·动作捕捉