04 卷积神经网络

目录

1. 基本概念

1.1  卷积神经网络

1.2 卷积

1.3 汇聚(池化)

2. CNN网络架构及参数学习

2.1 网络架构 

2.2 参数学习

3. 典型的卷积神经网络

3.1 LeNet-5

3.2 AlexNet

3.3 Inception网络

3.4 残差网络

4. 其他卷积方式


1. 基本概念

1.1  卷积神经网络

       卷积神经网络(Convolutional Neural Network,CNN 或 ConvNet 或 CNNs),是前馈神经网络的一种,相比较全连接神经网络(FCNN),CNN的参数更少,具有层次更深、局部连接、权重共享等特性。

       卷积神经网络一般是由卷积层汇聚层全连接层交叉堆叠而成的前馈神经网络。卷积神经网络主要使用在图像和视频分析的各种任务(比如图像分类、人脸识别、物体识别、图像分割等)上,其准确率一般也远远超出了其他的神经网络模型.近年来卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域。

1.2 卷积

        卷积(Convolution),也叫褶积(zhě jī),是分析数学中一种重要的运算。在信号处理或图像处理中,经常使用一维或二维卷积。

(1)卷积运算

        卷积的“卷”,是翻转的意思;“积”是求积运算。

        卷积的定义,可参看经典论文及书籍《数字信号处理》(杨毅明),或者百度,这里贴上百度关于卷积的解释:

卷 积icon-default.png?t=N7T8https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF/9411006

        通俗讲,卷积运算是采用一个卷积核(也称滤波器)作为移动窗口,在数据上滑动,每次滑动都会进行一次“加权求积运算”,移动结束后得到一个维度小于原数据的特征数组。下面为《神经网络与深度学习》中一个卷积计算实例:

        可以看出,卷积核W在计算前应先进行180°翻转,再与数据X进行加权求和。

        需要注意的是,现在网上大多数关于卷积的定义都是有误的,那些关于卷积的解释,未将卷积核进行翻转就直接求积运算,实际上是“互相关运算”,又称“不翻转卷积”。

(2)互相关运算(不翻转卷积)

        互相关(Cross-Correlation)是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。这与卷积运算相似,差别仅是卷积核翻转与否,因此,互相关也称不翻转卷积。

        在计算卷积的过程中,需要进行卷积核翻转.在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销。

        给定一个图像\textbf{X}和卷积核\textbf{W},其互相关为:

        上式也可写为矩阵形式:

        上式中,\bigotimes 表示互相关运算,\ast 表示卷积运算,rot180 表示翻转180°。


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

一文看懂卷积运算(convolution)与互相关运算(cross-correlation)的区别icon-default.png?t=N7T8https://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)一维卷积

        一维卷积经常用在信号处理中,用于计算信号的延迟累积。比如,某信号发生器 每个 t 时刻均发出信号 x_t,信号衰减率为 w,那么 t_1 时刻产生的信号在 t_2 时刻衰减为原来的 w 倍,在 t_3 时刻衰减为原来的 w^2 倍,那便有如下情况:

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

       动图中的卷积核表示了信号衰减程度,与上面截图中定义的相反,即动图的w_1=\frac{1}{4}w_2=\frac{1}{2}w_3=1。由上图知卷积可以这样理解:卷积核作为移动窗口对数据逐步扫描,窗口内数据按位置对应求积后再求和

(4)二维卷积

        二维卷积与一维卷积相似,只不过二维卷积核需要在两个方向滑动,如下图所示:

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

(5)卷积的两个性质

        下面的 f(\textbf{Y}) 函数为损失函数: 

1.3 汇聚(池化)

(1)上采样

        上采样是指在原有数据基础上增加其数量、维度或特征,比如:放大图片、增加分辨率、转置卷积都属于上采样。

(2)下采样

        下采样是指在原有数据基础上减少其数量、维度或特征,比如:缩小图片、压缩图片、卷积都属于下采样。

(3)汇聚

        汇聚,也称池化,是指降低特征数量,从而减少参数数量的一种方法,具体操作就是下采样。

2. CNN网络架构及参数学习

2.1 网络架构 

        卷积神经网络一般由卷积层、汇聚层(也称池化层)和全连接层构成。

(1)卷积层 

        卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器,卷积层的单个神经元和全连接网络一样,都是一维结构,但在卷积神经网络(CNNs)中,神经元是被组织成三维体积的,这与全连接层中的神经元结构不同。全连接层的神经元是一维排列的,每个神经元与前一层的所有神经元相连接。在卷积层中,神经元被组织成深度、高度和宽度三个维度,形成一个三维体积。这种设计是为了更好地处理具有空间结构的数据,如图像。

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

       上图中所有的同颜色连接上的权重是相同的,这就是权重共享,可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征。因此,如果要提取多种特征就需要使用多个不同的卷积核。此外,CNN网络的第𝑙 层的神经元个数不是任意选择的,而是满足M_l=M_{l-1}-K+1K为卷积核大小。

 (2)汇聚层 

        汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer)、池化层,其作用是进行特征选择,降低特征数量,从而减少参数数量 。

        卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的神经元个数并没有显著减少。如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合。

        汇聚层通过汇聚函数对前一层(卷积层)的卷积结果进行下采用,从而减少特征,常用的汇聚函数有两种:

(3)全连接层

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

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

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

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

2.2 参数学习

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

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

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

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

3. 典型的卷积神经网络

3.1 LeNet-5

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

 深度学习入门(一):LeNet-5教程与详解icon-default.png?t=N7T8https://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简介及代码实现 icon-default.png?t=N7T8https://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 网络结构icon-default.png?t=N7T8https://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))的方式来提高信息的传播效率。

假设在一个深度网络中,我们期望一个非线性单元 f(\textbf{\textit{x}};\theta ) 去逼近一个目标函数 h(\textbf{\textit{x}}),).可以将目标函数拆分成两部分:恒等函数(Identity Function)\textbf{\textit{x}} 和 残差函数(Residue Function)h(\textbf{\textit{x}})-\textbf{\textit{x}} :

实际中后者(残差函数)更容易学习,因此原来的优化问题可以转换为:让非线性单元 f(\textbf{\textit{x}};\theta ) 去近似残差函数 h(\textbf{\textit{x}})-\textbf{\textit{x}},并用 f(\textbf{\textit{x}};\theta )+\textbf{\textit{x}} 去逼近 h(\textbf{\textit{x}}) 。

       下图给出了一个典型的残差单元示例,残差单元由多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过ReLU 激活后得到输出:

       残差网络就是将很多个残差单元串联起来构成的一个非常深的网络.和残差网络类似的还有Highway Network。

4. 其他卷积方式

(1)转置卷积 

(2)微步卷积 

(3)空洞卷积 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ReentrantReadWriteLock详解

目录 ReentrantReadWriteLock详解1、ReentrantReadWriteLock简介2、ReentrantReadWriteLock类继承结构和类属性3、ReentrantReadWriteLock的读写锁原理分析4、ReentrantReadWriteLock.WriteLock类的核心方法详解非公平写锁的获取非公平写锁的释放公平写锁的获取公平写锁的释放 …

全网最最实用--模型高效推理:量化基础

文章目录 一、量化基础--计算机中数的表示1. 原码(Sign-Magnitude)2. 反码(Ones Complement)3. 补码(Twos Complement)4. 浮点数(Floating Point)a.常用的浮点数标准--IEEE 754(FP32…

ElasticSearch核心之DSL查询语句实战

什么是DSL? Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。 DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。目前常用的框架查询方法什么的底层都是构建DSL语句实现的,所以你必…

跨境电商独立站:Shopify/Wordpress/店匠选哪个?

在面对不断增加的平台运营压力时,不少跨境电商的商家逐渐将注意力转向建立自己的独立站。据《中国跨境出口电商发展报告(2022)》所示,中国拥有的独立站数量在2022年已接近20万个,这表明独立站已成为卖家拓展海外市场的…

IndentationError:unindent does not match any outer indentation level

IndentationError:unindent does not match any outer indentation level 目录 IndentationError:unindent does not match any outer indentation level 【常见模块错误】 【解决方案】 原因分析: 解决方法: 示例: 欢迎来到我的主页&am…

正则采集器——前端搭建

前端使用有名的饿了么管理后台,vue3版本vue3-element-admin,首先从gitee中克隆一个vue3-element-admin模板代码vue3-element-admin: Vue3 Element Admin开箱即用的中后台管理系统前端解决方案,然后在此基础上进行开发。 1、修改vite.config.…

matlab仿真 数字信号载波传输(下)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第七 章内容,有兴趣的读者请阅读原书) clear all M8; msg[1 4 3 0 7 5 2 6]; ts0.01; T1; %t0:ts:T; t0:ts:T-ts; %x0:ts:length(msg); x0:ts:length(msg)-ts; f…

使用Dumpbin工具查看C++二进制文件的位数、时间戳及dll库的依赖关系

目录 1、Dumpbin简介 2、使用Dumpbin查看二进制文件的位数与时间戳 3、使用Dumpbin查看二进制文件依赖的dll库 4、最后 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/125529931C/C++基础入…

几种数据库中保存树的常见存储结构

在数据库中存储树时,常见的存储结构有以下几种: 常见存储结构 邻接列表 每个节点都有一个指向其父节点(pid)的引用。这种方法简单直观,也是最容易理解和常用的,但在获取整棵树或子树时可能需要多次查询。 存储结构 一般表结构…

自动驾驶-机器人-slam-定位面经和面试知识系列05之常考公式推导(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和牛客(牛客上某些文章上会附上内推码)也会同步…

Android APP 音视频(03)CameraX预览与MediaCodec编码

说明: 此CameraX预览和编码实操主要针对Android12.0系统。通过CameraX预览获取yuv格式数据,将yuv格式数据通过mediacodec编码输出H264码流(使用ffmpeg播放),存储到sd卡上。 1 CameraX 和 MediaCodec简介 1.1 CameraX…

【CN】Argo 持续集成和交付(一)

1.简介 Argo 英 [ˈɑ:ɡəu] 美 [ˈɑrˌɡo] Kubernetes 原生工具,用于运行工作流程、管理集群以及正确执行 GitOps。 Argo 于 2020 年 3 月 26 日被 CNCF 接受为孵化成熟度级别,然后于 2022 年 12 月 6 日转移到毕业成熟度级别。 argoproj.github.i…

基于Xejen框架实现的C# winform鼠标点击器、电脑按键自动点击器的软件开发及介绍

功能演示 文章开始之前,仍然是先来个视频,以便用户知道鼠标连点器的基本功能 软件主界面 多功能鼠标连点器 快速点击: 痕即鼠标点击器可以设定每秒点击次数,让您轻松应对高频点击需求。 切换时长,即每次动作之间的间…

0719_驱动3 printk使用方法

一、printk使用方法 1.应用层打印使用printf,内核层使用printk 2.如何查看内核层中printk如何使用 3.在内核空间执行grep "printk" * -nR 4.在内核空间执行vi -t KERN_INFO 5.printk有8中打印级别(0-7),打印级别用来过滤…

数据结构(Java):反射枚举Lambda表达式

目录 1、反射 1.1 反射的定义 1.2 反射机制的原理 1.3 反射相关类 1.4 Class类 1.4.1 相关方法 1.4.1.1 常用获得类相关的方法 ​编辑 1.4.1.2 常用获得类中属性相关的方法 1.4.1.3 获得类中构造器相关的方法 1.4.1.4 获得类中方法相关的方法 1.4.2 获取Class对象 1.…

linux进程——虚拟地址空间——重新认识进程!!!

前言: 本节内容就将进入linux进程里面的又一个大板块, 博主认为这个板块和PCB的板块是平级——两者独立;之前友友们可能认为进程分为PCB和代码与数据。 但是本节过后, 我们可以对进程重新定义——进程 (PCB&#xff0…

深入理解计算机系统 CSAPP 家庭作业11.8

回收子进程是书本537页的内容 在tiny.c文件加以下代码,记得重新编译哦 书中提到CGI是在动态内容中的,所以题目的意思应该是在动态内容里面回收 void handler1(int sig) {int olderrno errno;while (waitpid(-1,NULL,0)>0){Sio_puts("Handler reaped child\n");…

【秋招突围】2024届秋招笔试-OPPO笔试题-第一套-三语言题解(Java/Cpp/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新 OPPO 春秋招笔试题**汇总~ 👏 感谢大家的订阅➕ 和 喜欢💗 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🎀 01.K小姐的快…

DVWA中命令执行漏洞细说

在攻击中,命令注入是比较常见的方式,今天我们细说在软件开发中如何避免命令执行漏洞 我们通过DVWA中不同的安全等级来细说命令执行漏洞 1、先调整DVWA的安全等级为Lower,调整等级在DVWA Security页面调整 2、在Command Injection页面输入127.0.0.1&…

【计算机网络】物理层(第2章)大纲(共70+页)

最后只复习了1.5天,应用层简单过了一遍。 本来是mindmap的,但是太大了只能导出成提纲了,凑合看吧orz。 如果你找我要源文件,最好是在2024年,不然我可能就找不到了()。