机器学习——卷积神经网络基础

卷积神经网络(Convolutional Neural Network:CNN)

卷积神经网络是人工神经网络的一种,是一种前馈神经网络。最早提出时的灵感来源于人类的神经元。

通俗来讲,其主要的操作就是:接受输入层的输入信息,通过卷积层,激活层,池化层,进行特征的提取与学习,然后通过全连接层完成对比,将分类结果通过输出层输出。

那么卷积神经网络最重要的任务我认为只有两个:
1.如何从原始数据中更好的学到特征信息。
2.如何将学到的特征更好的映射到标记样本。
这两个任务应该是CNN分类的关键

卷积层

对于输入层和输出层我们没什么好讲的,我们将从卷积层开始,详细了解卷积层,激活层,池化层和全连接层的详细工作原理。

CNN怎么识别

对于这个问题,我们需要引入CNN的识别原理:CNN的识别本质上是一种“局部特征”的对比,也就是说,我们将输入数据的局部与标注的样本数据的局部对比,如果某个或多个局部对比被判定为“匹配”,则认定其输入数据和样本数据属于同一类别。


朴素来讲,我们可以通过直接对图像中的像素和样本数据对比。但是这样通常过于“武断”,比如下面这种情况。

在这里插入图片描述

当我们选取了x图形对角线的像素对比,我们会发现并不相等,所以认定右边的图片不是x图形类别。这显然是不合适,我们需要换一种对比方法。

所以我们会选取一个“像素窗口”,截取一小块像素,把这个小块的区域成为“特征”,对比特征无误则可认定为统一类别。
在这里插入图片描述

卷积层有怎么帮助CNN识别

这里我们需要明确一下这样的几个概念之间的关系
filter滤波器,这个东西实际上是卷积核的集合,而卷积核就是个权重矩阵(二维矩阵)的集合
对于一张RBG图,他的特征层分RBG三层,他通道数就是三个通道。
而且对于滤波器里的一个卷积核来说,他的二维矩阵的数量和通道数是相同的。

如下图所示,蓝色的是图片,黄色的卷积核,绿色的输出的结果(绿色的层数和卷积核的数量相同)
在这里插入图片描述

我们可以看到上面的CNN对比一个重要的点就是“特征”,卷积层可以通过算法操作,学习特征。

我们将图像视为一个三维数组,他的厚度我们称为通道数(特征层数),每一层长宽视为矩阵的大小。在这样的一层上,我们对其添加“滑动窗口”和滤波器。

然后我们通过滤波器中的各个卷积核对图像卷积(对应元素相乘后求和)得到输出矩阵,如下图。
请添加图片描述
显然两个卷积核得到两个输出矩阵,三个特征层对应每个卷积核三个权重矩阵。
至此,一个卷积层的任务结束。

建议再去了解卷积核、滑动窗口这些东西具体代码的关键参数,比如卷积核的一个关键参数就是核尺寸,步幅和步数。

激活层

激活,激活什么,为什么要激活。
我理解为,激活就是激活整个神经网络的表达空间。
为什么要激活,主要还是因为仅仅靠卷积,我们没法有较好的“表达空间”,所以我们需要一个函数来帮我们把卷积层的结果做非线性映射,提升整个神经网络的表达能力。

这种函数包括:ReLU,softmax,sigmoid等。每个函数都有自身的优点,可以适用于不同场景,当然我们对一个网络可以添加多个激活层。

但是每个网络也会有自身的缺点,这些缺点无非都是偏离了激活层的初衷,让卷积层的结果没法逼近一个非线性函数来提高网络的表达能力。

PS:表达能力就可以看做学习分类能力

池化层

池化,简言之,即取区域平均或最大。

还是给定滑动窗口,但是这次只需要直接输出滑动窗口内的最大值或平均值即可,对应池化成为“最大池化”和“平均池化”。

在这里插入图片描述

目的是为了压缩特征,提高效率。

全连接层

建议去看这个博主的博客对全连接层(fully connected layer)的通俗理解

本质就是由一个特征空间线性变换到另一个特征空间。目标空间的任一维——也就是隐层的一个 神经元——都认为会受到源空间的每一维的影响。不考虑严谨,可以说,目标向量是源向量的加权和。

全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”(下面会讲到这个分布式特征)映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:

对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hw的全局卷积,hw分别为前层卷积结果的高和宽。

全连接的核心操作就是矩阵向量乘积 y = Wx

一个简单的CNN网络的层次结构

在这里插入图片描述

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

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

相关文章

【论文阅读】Deep Instance Segmentation With Automotive Radar Detection Points

基于汽车雷达检测点的深度实例分割 一个区别: automotive radar 汽车雷达 : 分辨率低,点云稀疏,语义上模糊,不适合直接使用用于密集LiDAR点开发的方法 ; 返回的物体图像不如LIDAR精确,可以…

leetcode做题笔记65

有效数字(按顺序)可以分成以下几个部分: 一个 小数 或者 整数(可选)一个 e 或 E ,后面跟着一个 整数 小数(按顺序)可以分成以下几个部分: (可选&#xff0…

Golang 中的交叉编译详解

Golang 中的交叉编译 在 Golang 中,交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。这在开发跨平台应用或构建特定平台的发布版本时非常有用。 交叉编译 Golang 程序的基本步骤如下: 指定目标操作系统和工具链并设置对应的…

Kuebernetes资源控制管理

第四阶段 时 间:2023年8月11日 参加人:全班人员 内 容: Kuebernetes资源控制管理 目录 Kubectl命令工具 一、kubectl 命令行的语法 二、kubectl命令列表 三、使用 Kubectl 工具容器资源 (一)创建Pod &…

第十六次CCF计算机软件能力认证

第一题:小中大 在数据分析中,最小值最大值以及中位数是常用的统计信息。 老师给了你 n 个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重复的数据。 请统计出这组测量数据中的最大值、中位数以及最小值&am…

Mysql SUBSTRING_INDEX - 按分隔符截取字符串

作用: 按分隔符截取字符串 语法: SUBSTRING_INDEX(str, delimiter, count) 属性: 参数说明str必需的。一个字符串。delimiter必需的。分隔符定义,是大小写敏感,且是多字节安全的count必须的。大于0或者小于0的数值…

最强的表格组件—AG Grid使用以及License Key Crack

PS: 想要官方 License Key翻到最后面 Ag Grid简介 Ag-Grid 是一个高级数据网格,适用于JavaScript/TypeScript应用程序,可以使用React、Angular和Vue等流行框架进行集成。它是一种功能强大、灵活且具有高度可定制性的表格解决方案,提供了丰富…

Mybatis参数传递

Map传参, #{}里的key要一一对应不能乱写&#xff0c;如果不存在则会填充NULL&#xff0c;不会报错 Map<String, Object> map new HashMap<>(); // 让key的可读性增强 map.put("carNum", "103"); map.put("brand", "奔驰E300L&…

2005-2020年280个地级市绿色全要素生产率测算原始数据

2005-2020年280个地级市绿色全要素生产率测算原始数据 1、时间&#xff1a;2005-2020年 2、来源&#xff1a;中国城市统计年鉴、中国区域统计年鉴、中国能源年鉴、中国环境年鉴等 3、范围&#xff1a;280个地级市 4、指标&#xff1a;年末单位从业人员数、规模以上工业企业…

(一)创建型设计模式:2、单例模式(C++实现实例 线程安全)

目录 1、单例模式&#xff08;Singleton Pattern&#xff09;的含义 2、单例模式的优缺点 &#xff08;1&#xff09;优点&#xff1a; &#xff08;2&#xff09;缺点&#xff1a; 3、C实现单例模式的示例&#xff08;简单&#xff09; 4、C实现单例模式的示例&#xff…

React(5)

1.受控组件案例 1.1之前的影院案例改写 import React, { Component } from react import axios from axios import BetterScroll from better-scroll import ./css/02_tab.cssexport default class Cinema extends Component {constructor() {super();this.state {cinemaLis…

【Docker晋升记】No.1--- Docker工具核心组件构成(镜像、容器、仓库)及性能属性

文章目录 前言&#x1f31f;一、Docker工具&#x1f31f;二、Docker 引擎&#x1f30f;2.1.容器管理&#xff1a;&#x1f30f;2.2.镜像管理&#xff1a;&#x1f30f;2.3.资源管理&#xff1a;&#x1f30f;2.4.网络管理&#xff1a;&#x1f30f;2.5.存储管理&#xff1a;&am…

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络时间序列预…

10. Docker Swarm(一)

目录 1、前言 2、Docker Swarm体系架构 2.1、简单介绍 2.2、体系架构 3、简单使用 3.1、环境准备 3.2、初始化master节点 3.3、建立worker节点 3.4、查看集群的节点信息 3.5、部署应用 3.5.1、创建Dockerfile文件 3.5.2、构建镜像 3.5.3、将镜像上传到Docker仓库 …

Node 使用 MySQL

1、安装驱动 使用 npm 进行安装 mysql $ npm install mysql 2、连接数据库 在以下实例中根据你的实际配置修改数据库用户名、及密码及数据库名&#xff1a; test.js 文件 var mysql require(mysql); var connection mysql.createConnection({host : localhost…

HTML <select> 标签

实例 创建带有 4 个选项的选择列表: <select><option value ="volvo">Volvo</option><option value ="saab">Saab</option><option value="opel">Opel</option><option value="audi"…

JavaFx异常: Not on FX application thread; currentThread = Timer-0

我的定时器任务中有两个控件&#xff1a; FXML TextArea Display; FXML Label Label_Display; 执行下方代码会抛出&#xff1a;Exception in thread "Timer-0" java.lang.IllegalStateException: Not on FX application thread; currentThread Timer-0 Timer_tas…

xAI与GPT-4:探索宇宙真实本质的AI之战

xAI与GPT-4&#xff1a;AI之战 写在前面第一部分第二部分推动科学研究提升人机交互引发伦理和社会问题 第三部分模型的进一步优化跨领域合作人机融合 最后总结 写在前面 人工智能&#xff08;AI&#xff09;领域的发展一直以来都备受关注&#xff0c;而近期马斯克宣布成立xAI&…

自动化更新导致的各种问题解决办法

由于最近自动化频频更新导致出现各种问题&#xff0c;因此在创建驱动对象代码时改成这种方式 我最近就遇到了由于更新而导致的代码报错&#xff0c;报错信息如下&#xff1a; 复制内容如下&#xff1a; Exception in thread “main” org.openqa.selenium.remote.http.Connecti…

大连交通大学813软件工程考研习题

1.什么是软件生存周期模型?有哪些主要模型? 生存周期模型&#xff1a;描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持&#xff0c;为开发过程中的活动提供统一的政策保证&#xff0c;为参与开发的人员提供帮助和指导&#xff0c;是软件生存周期模型…