卷积神经网络简介-AI快速进阶系列

news2024/11/17 15:46:56

1. 概述

在本教程中,我们将研究卷积神经网络背后的理论及其架构。

我们将首先讨论通常使用卷积神经网络 (CNN) 执行的任务和特征提取问题。然后,我们将讨论为什么需要CNN,以及为什么传统的前馈神经网络是不够的。

然后,我们将在矩阵运算的上下文中讨论卷积的操作。这将使我们很好地理解卷积神经网络的运行机制。

最后,我们将讨论卷积层以外的卷积神经网络的特征,重点是池化和辍学。

在本教程结束时,我们将知道什么是卷积神经网络以及它解决了哪些问题。

2. 我们什么时候使用CNN

2.1. 为什么图像识别如此困难?

CNN用于解决一类特定的问题,其中包括提取和识别数据集中的抽象特征。让我们通过一个简单的例子看看这在实践中意味着什么:

我们可以看到,上图中包含的所有图像都代表了不同形状、大小和颜色的苹果。人类不难将它们识别为苹果,尽管它们略有不同。但是,对于计算机来说,这些图像似乎彼此完全不同:

这些图像,无论它们看起来多么相似,但对计算机来说几乎没有共同点。这是因为对人类来说,它似乎是一个明确定义的对象,对计算机来说只是数字的集合。人类感知系统实际上使用上下文线索来识别对象,但不幸的是,计算机无法使用这些线索。

这意味着计算机需要完全依赖数据来执行诸如识别图像中的物体之类的任务。然而,这些数据可能会有很大差异,正如我们在上面的示例图像中看到的那样。那么,我们如何才能构建一个能够处理变化如此之大的数据的系统呢?

2.2. 解决方案是抽象

识别苹果的任务变得困难,因为太多的像素可以承担太多的值。然而,它们中的每一个都单独携带很少的信息。这意味着图像是高度熵的,除非我们以某种方式显着降低这种熵,否则我们无法使用它。

但是,如果我们有一种方法来学习输入的抽象特征,这反过来又会使分类变得明显更容易。让我们想象一下,我们可以将苹果描述为一个有茎的物体,加上足够平坦的底部,当然还有一个圆形:

如果我们可以在分类算法中对这些特征进行编码,这将反过来使看不见的图像的分类更容易。在这种情况下,我们可以创建一个模型来编码我们正在寻找的特征,并将拥有所有这些特征的图像归类为“苹果”:

卷积神经网络以这种方式工作;只有,他们才能自动学习这些功能。事实上,它们是一种通过算法学习数据集抽象表示的方法。这反过来又促进了分类任务,并有助于解决所谓的维度诅咒,正如我们稍后将看到的那样。

3. 神经网络及其诅咒

3.1. CNN解决的问题

根据我们关于机器学习相关主题的介绍性文章的传统,我们还将开始研究卷积神经网络(以下简称 CNN),对嵌入在此机器学习模型中的先验或隐式知识进行少量分析。最好的解释是问自己一个问题:

  • “我们为什么不简单地使用前馈神经网络进行图像分类呢?”

事实上,我们知道前馈神经网络可以近似于形式的任何连续函数。然而不能保证神经网络可以学习该功能。作为一般规则,如果我们有疑问,可以安全地假设神经网络会过度拟合其训练数据的噪声,并且永远不会学习任何给定的目标函数:

3.2. 卷积和正则化

减少数据集中用于神经网络训练的噪声的尝试被称为正则化。卷积是一种特殊类型的正则化,它利用特征或观测值的线性依赖性。反过来,这让我们可以减少噪声并恢复与先前关于特征线性独立性的假设的一致性,正如我们稍后将看到的那样。

从广义上讲,正则化包括将数据集的特征映射到具有较低熵的新特征。在形式上,这意味着我们变换特征,使得如果是熵,那么。这让我们学习一个新的目标函数,它不太容易受到过拟合的影响:

卷积本质上是通过用更复杂的版本替换观测中的高熵特征来执行这项任务。这是由于某些类别的数据系统地违反了使用神经网络的一个重要先决条件,即特征的线性独立性这一事实成为可能。

3.3. 特征的线性(非)依赖性

现在让我们更详细地了解特征线性独立的含义。我们可以通过一个例子来做到这一点,方法是将两个变量X分布的建模扩展到第三维Y,如上所述。

对于这个例子,我们想象两个变量之间存在线性关系,使得一个变量可以用形式y=f(x)的函数近似另一个变量。特别是,我们假设这个函数具有任意选择参数的形式Y=2X+1。因此,我们可以说,通过构造,这两个变量是线性依赖的。

现在让我们看看如果我们使用两个线性因变量作为某个目标函数Z=g(X,Y)的输入会发生什么。下面的动画显示了从表单的目标函数采样的训练数据:

3.4. 将依赖特征转换为独立特征

对于图像中显示的特定分布,我们分配了值,但这仅用于说明目的。

关于我们将用于回归的模型的结构,我们可以先验地预测它的一些特征。我们知道目标函数具有二次形式,因为。由于Y是线性依赖的。我们现在可以想象对这个函数执行多项式回归,以便学习它的参数。如果我们不用它的等价物f(X)替换Y,那么我们必须学习模型的五个参数:但是,由于这两个特征XY不是线性独立的,因此它们的线性组合也不是线性独立的。

这意味着,我们可以学习一组对应于它们的线性组合的参数Y,而不是学习两个输入变量X的参数。因此,我们可以学习包含参的更简单的模型。这在代数上对应于学习函数在投影向量空间上的表示:

正如我们所看到的,在这个特定示例中,我们不需要两个输入特征,只需要一个。这是因为我们事先了解对输入特征的线性依赖性。反过来,这种先验知识使我们能够减少模型输入的维数及其参数,而不会通过代数变换损失任何代表性。

3.5. 维度的诅咒

这意味着,如果我们有充分的理由相信模型的输入特征不是线性独立的,我们可以减少模型所需的参数数量。这是通过利用我们的先验知识来完成的,即某些类别的数据(但不是全部)具有同时具有高维且彼此线性依赖的特征。

通常用CNN处理的数据通常具有高度的线性依赖性。最常见的示例是文本、音频、图像和视频信号:

  • 对于文本数据,特征通常是单词,每个特征都在很大程度上取决于它之前和之后的特征
  • 对于音频,频率大部分时间都在连续变化
  • 相反,图像是对应于颜色的像素集合,其中每种颜色在大多数情况下都与其周围的一个像素相同
  • 视频是一系列图像,如果它们包含真实世界的信息,这些图像只会由于对象的持久性而部分更改。

所有这些类型的数据都适合用CNN处理,以降低其维数。具有我们认为线性独立的特征的数据,例如关于引擎特征的数据集,并不适合CNN。

3.6. CNN的优势

通过在高维数据上使用CNN,我们可以帮助解决神经网络中的维数诅咒。这个问题是指神经网络增加其参数大小的趋势明显快于其输入大小的增加。

在上面的例子中,我们注意到,对于多项式回归的特定问题,可以将所需的参数数量减少 40%。对于现实世界的问题,这种下降要高得多,这使得使用卷积等降维技术成为一种必要而不是选择。

4. 神经网络中的卷积

4.1. 卷积的数学定义

我们现在明白了,如果我们的数据是线性相关的,并且具有高维的特征,我们需要使用方法来降低它的熵。其中一种方法就是卷积,cnn的名字就是来源于卷积运算。

神经网络中的卷积公式需要对输入数据进行识别。这是通过首先将我们执行卷积的数据(比如图像)分配到维度为(x,y)的矩阵Ax,y来完成的。然后,我们定义一个核矩阵k,它的元素会影响我们从卷积中得到的结果类型,我们将在下一节中看到。

卷积运算定义为矩阵A中的一个元素及其所有局部邻域的值,乘以核矩阵k中相应的元素:

4.2. 卷积对矩阵的作用

现在让我们看看卷积在实际中对图像有什么作用。出于这个目的,我们将使用一个示例图像,看看如果我们改变核k,它会发生什么变化:

该图像由一个像素数组组成,我们可以通过首先定义一个核矩阵来应用卷积。存在各种内核,可用于不同的目的。在这里,我们将看到一些,从模糊的内核开始:

另一个内核是用于边缘检测的内核:

另一个是用于锐化功能的内核:

不同的卷积内核允许从相同的数据中提取不同的特征,这反过来又有助于CNN的训练。虽然卷积是CNN最典型的操作,架构本身就是从CNN得名的,但它并不是这个网络唯一独特的特征。

5. 卷积神经网络的其他特征

5.1. CNN 的一般架构

尽管被称为“卷积”神经网络,但CNN也具有一些与卷积无关的特殊特征。CNN与前馈神经网络区分开来的主要特征是:

  • Pooling 层
  • Dropout 层
  • 还有一些特殊的激活功能

CNN 的典型架构通常包括一系列卷积层、池化层和辍学层,根据需要重复多次。然后,根据我们正在执行的任务,最后一层是分类或回归层。

让我们按顺序查看前两个的简短描述。我们可以参考我们的教程ReLU 作为 CNN 的激活函数来讨论最后一点。

5.2. 池化层

CNN的一个特殊特征是池化层,它进行池化的同名数学运算。池化包括从给定矩阵中提取具有较低维数的新矩阵,并且原始矩阵的每个聚类或邻域仅包含一个元素。最常见的池化方法是所谓的最大池化,其工作原理如下。

我们像以前一样采用矩阵Ax,y,它表示图像或其他输入数据。然后,我们将矩阵划分为固定大小的邻域。在本例中,我们选择了分布在池化窗口中的四个元素之间的(2,2)池化:

然后,我们确定给定邻域中最大的元素,并将其分配给我们为此目的创建的新矩阵:

结果是一个新矩阵,仅由原始矩阵中邻居中的最大值组成。这会将输入数据的维度降低到使其更易于管理的水平,即使我们因此丢失了信息内容。然而,如上所述,输入要素的线性依赖性证明了这种权衡是合理的。

5.3. Dropout 层

卷积神经网络还实现了所谓的Dropout 层,将遗忘能力引入机器学习模型。这是基于这样一种观点,即关于某一现象的过多先前知识实际上可能阻碍而不是支持获得关于同一主题的未来知识。

辍学层通过随机停用给定层中的一些神经元来工作,从而迫使网络适应信息较少的信号进行学习。虽然违反直觉,但已经证明,当高阶交互是虚假的时,具有辍学层的卷积神经网络通常学习得更好。这是因为部分信号的无效有利于学习其抽象特征,这些特征在网络的更高层中表示。

对于给定的 dropout 参数 ,我们通过随机将值 0 分配给矩阵A的每个元素 来获得 Dropout 函数的输出。如果

,那么形式就是:

如果我们以上一节中的矩阵A为例,并且dropout的概率d = 0.4,我们可以得到这样的输出:

我们将在这个部分无效的矩阵上学习的模式对过拟合不太敏感。

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

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

相关文章

Redis实战之-分布式锁

一、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行…

20230117-yolov5训练环境搭建

文章目录 1.参考资料2.服务器环境3.安装过程4.问题与解决5.补充6.其它技巧 1.参考资料 https://blog.csdn.net/qq_43573527/article/details/132963466 long错误解决方案 https://pytorch.org/get-started/previous-versions/ pytorch下载的位置 2.服务器环境 conda环境&…

RabbitMQ入门精讲

1. 什么是消息队列 消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。 “消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。…

NAT实验

一:实验要求 二:实验分析 拓扑图 三:实验配置 1:路由器配置 R1配置IP R2配置IP 2:缺省路由 查看路由表 3:端口映射 4:pc、HTTP配置 5:DNS、client配置 四:实验结果 pc可以ping…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-5 select

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>select</title> </head><body> <!--单选下拉菜单可设置默认选中项--> 所在城市&#xff08;单选&#xff09;:<br> <select>…

如何使用Portainer部署web站点并实现无公网ip远程访问

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…

第十一章 请求响应

第十一章 请求响应 1.概述2.请求-postman工具3.请求-简单参数&实体参数4.请求-数组集合参数5.请求-日期参数&JSON参数6.请求-路径参数7.响应-ResponseBody&统一响应结果8.响应-案例 1.概述 将前端发送的请求封装为HttpServletRequest对象 在通过HttpServletRespo…

JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、Java虚拟机栈 1.栈帧的组成 2.局部变量表 3.操作数栈 4.帧数据 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#xff0c;管理…

深入解析 Java 方法引用:Lambda 表达式的进化之路

前言 方法引用是 Java 8 提供的一种新特性&#xff0c;它允许我们更简洁地传递现有方法作为参数。这项特性实际上是对 Lambda 表达式的一种补充&#xff0c;通过方法引用&#xff0c;我们可以直接引用现有方法&#xff0c;而无需编写完整的Lambda表达式。最近在使用方法引用的…

ElasticSearch扫盲概念篇[ES系列] - 第500篇

历史文章&#xff08;文章累计500&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 E…

每日一题——LeetCode1252.奇数值单元格的数目

进阶&#xff1a;你可以设计一个时间复杂度为 O(n m indices.length) 且仅用 O(n m) 额外空间的算法来解决此问题吗&#xff1f; 方法一 直接模拟&#xff1a; 创建一个n x m的矩阵&#xff0c;初始化所有元素为0&#xff0c;对于indices中的每一对[ri,ci]&#xff0c;将矩…

5W紫外激光打标机优势特点

紫外激光打标机在当今市场上备受关注&#xff0c;而5W紫外激光打标机更是其中的佼佼者。作为一种高精度、高效率的激光加工设备&#xff0c;5W紫外激光打标机在各个领域都有着广泛的应用。 首先&#xff0c;让我们来了解一下5W紫外激光打标机的基本原理。紫外激光打标机利用高能…

Springboot日志框架logback与log4j2

目录 Springboot日志使用 Logback日志 日志格式 自定义日志格式 日志文件输出 Springboot启用log4j2日志框架 Springboot日志使用 Springboot底层是使用slf4jlogback的方式进行日志记录 Logback日志 trace&#xff1a;级别最低 debug&#xff1a;调试级别的&#xff0c…

Google play 应用批量下架的可能原因及应对指南

想必大多数上架马甲包或矩阵式上架的开发者们&#xff0c;都遭遇过应用包批量被下架、账号被封的情况。这很令人苦恼&#xff0c;那造成这种情况的可能原因有哪些呢&#xff1f;以及如何降低这种情况发生&#xff1f; 1、代码问题 通常上架成功后被下架的应用&#xff0c;很可…

基于局部信息提取的人脸标志检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 人脸检测 4.2 局部区域选择 4.3 特征提取 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .........................................…

2024最新 8 款电脑数据恢复软件推荐分享

数据恢复是一个涉及从设备硬盘驱动器检索已删除文件的过程。这可能需要存储在工作站、笔记本电脑、移动设备、服务器、相机、闪存驱动器上的数据——任何在独立或镜像/阵列驱动器上存储数据的东西&#xff0c;无论是内部还是外部。 在某些情况下&#xff0c;文件可能被意外或故…

“天舟七号”发射成功,三思显示科技助力中国航天大发展!

海南文昌&#xff0c;椰林深处&#xff0c;一道耀眼尾焰点亮夜空。1月17日22时27分&#xff0c;搭载天舟七号货运飞船的长征七号遥八运载火箭&#xff0c;在我国文昌航天发射场圆满成功发射&#xff0c;将与在轨运行的空间站组合体进行交会对接。据悉&#xff0c;“天舟七号”装…

Postman基本使用、测试环境(Environment)配置

文章目录 准备测试项目DemoController测试代码Interceptor模拟拦截配置 Postman模块简单介绍Postman通用环境配置新建环境(Environment)配置环境(Environment)设置域名变量引用域名变量查看请求结果打印 Postman脚本设置变量登录成功后设置全局Auth-Token脚本编写脚本查看conso…

SQL SERVER无法连接到服务器解决过程记录

很久没用sql server了&#xff0c;这几天打算更新SQL SERVER数据库&#xff1a;SQL看这一篇就看够了&#xff08;附详细代码及截图&#xff09; 这篇文章&#xff0c;发现连接不上服务器。 找一下解决办法。 一、打开服务界面 在键盘上按“WINR”快捷键&#xff0c;打开运行…

记一次go应用在k8s pod已用内存告警不准确分析

一、背景 起因&#xff1a; 自监控应用凌晨告警&#xff1a;Pod 内存使用率大于80%&#xff08;规格为1c1G&#xff09;。内存缓慢增长&#xff0c;持续到早上内存使用率停止在81%左右。 疑点&#xff1a; 此模块是一个轻任务模块&#xff08;基于go开发&#xff09;&#xff0…