卷积神经网络(CNN)笔记——多图深入理解

梗直哥、梗直哥丶的个人空间-梗直哥丶个人主页-哔哩哔哩视频
 

过去十年,卷积神经网络(CNN)如同科技领域的明星,以其卓越的表现撑起了人工智能的半边天。这种创新的网络模型,不仅在计算机视觉、语音识别等传统领域大放异彩,更为人工智能的快速发展和广泛应用奠定了坚实的基础。

我们先来看看CNN的内部构造。从表面上看,神经网络就像一个黑盒子,我们无法完全看清其内在的运作机制。但不同的神经网络架构,实际上反映了内部构造的不同,就像不同的机器引擎一样,决定了它们的性能表现。

一个典型的CNN由输入层、隐藏层(包括卷积层、池化层)和输出层组成。输入层接收原始数据,如图像像素矩阵;输出层给出最终的预测或分类结果;而隐藏层则负责对输入数据进行特征提取和转换,是CNN的核心所在

ab8d25ae5fee4962848b53f1deb23988.png

1.为什么用卷积层

这个设计灵感来自计算机科学家对数学和生理学的研究。他们发现,生物神经元在接受感知信息时,会对局部区域的刺激产生响应,这种局部感知特性恰好与卷积操作相吻合。

随着算力的发展成熟,卷积操作终于可以在大规模数据上展现其优势。CNN的训练过程,实际上就是不断喂入数据样本,根据损失函数调整神经网络中每个节点的权重,使得模型可以更准确地拟合训练数据。

早期的全连接神经网络就像一个"大胖子",每层节点都与上一层所有节点相连,造成了巨大的计算冗余和参数过多的问题,难以高效训练。而卷积层的本质,就是给神经网络"减肥"——它只与输入数据的局部区域相连,极大降低了参数量,简洁高效。

d90539666a4d4b5ba750d0c0cac319eb.png

同时,随着网络层数的增加,每个神经元的感受野(即感知范围)也在逐层扩大,使得CNN可以逐步捕捉到输入数据中的更高层次特征。

2c530049ed824f2eb25403d29c7b44d4.png

以图像识别为例,浅层可能只能识别边缘和纹理等低级特征,而深层就能识别物体的轮廓、局部和整体形状等高级语义信息。

be6021a9c91d48efae776423f460781a.png

在卷积神经网络中,卷积层并不是简单地对输入数据进行卷积操作,还需要引入非线性激活函数,以增加网络的表达能力。

激活函数的作用是对卷积的线性输出结果进行非线性变换,使神经网络能够学习到更加复杂的映射关系。常见的激活函数包括Sigmoid函数、Tanh函数等,它们可以将输入压缩到一个较小的范围内。

然而,这些传统激活函数在深层网络中容易出现梯度消失的问题,导致收敛缓慢。为了解决这个问题,线性整流单元(ReLU)应运而生。

ReLU激活函数的计算公式非常简单:f(x)=max(0,x),也就是说,大于0的输入保持不变,小于0的输入则被直接置为0。

1cb424c9760649cbb95e220ccb95618f.png

2.池化层干什么的

池化层相当于对特征图进行"汇聚"操作,抓住局部区域的主要特征,忽略次要的细节差异。

具体来说,池化层会在特征图上滑动一个小窗口,对窗口内的多个神经元输出进行统计,组合成单个下层神经元的输入。常见的池化方式包括最大池化(Max Pooling)和平均池化(Average Pooling)。

095be27247c345488bdf1bdb8bdee90e.png

以最大池化为例,它会在滑动窗口内找到最大的神经元激活值作为输出。这种操作可以保留局部区域内最显著的特征响应,达到"抓主要矛盾"的目的。通过这样的汇聚和压缩,池化层可以进一步放大特征的响应强度,增强特征的鲁棒性,使得神经网络对几个像素的细微差异不那么敏感。

除了提取主要特征外,池化层还可以降低特征图的维度,减少网络的参数量和计算复杂度。这不仅能够大幅提高训练和预测的效率,更重要的是,池化层通过降低维度,增加了网络的泛化能力,一定程度上缓解了过拟合问题。

3.全连接层的妙用

在卷积神经网络的结构中,全连接层扮演着整合和决策的关键角色。它会将来自前面所有卷积层和池化层的特征信息进行融合,把这些分布式的特征表示集中到一个全连接的网络层中。

具体来说,全连接层会将相邻的两层全部节点之间进行交叉连接,每个节点与上一层的所有节点相连。通过这种密集的连接方式,全连接层可以将之前层提取的所有局部特征整合起来,建立更加全面的特征表示。

在分类或回归任务中,全连接层的输出就是神经网络的最终结论。之所以称为"全连接",就是要确保模型能够充分利用来自各层的所有特征信息,从而产生更加准确和鲁棒的预测结果。因此,全连接层被视为卷积神经网络的"大脑",起着整合和决策的关键作用。

9e1788e306c84793b5635bca70c98979.png

与之相对,卷积层和池化层则主要负责多尺度特征的提取。卷积层通过滑动卷积核在输入数据上进行局部扫描,能够有效捕捉数据的局部模式和结构信息,例如图像的边缘、纹理、形状等低级特征。而池化层则通过下采样操作,对卷积层提取的局部特征进行归纳和压缩,保留主要特征信息的同时降低了特征维度。这种操作不仅提高了特征的鲁棒性,还增强了网络的泛化能力。

通过多层次的卷积和池化操作,神经网络逐层从低级到高级,从小尺度到大尺度地提取特征。从边缘->纹理->局部形状->整体轮廓,这种层层递进的特征提取过程,使得神经网络最终能够获得对输入数据的多尺度、多层次的表示。

4.总结

卷积神经网络是一种精心设计的神经网络架构,内部结构精妙高效,赋予了它强大的特征提取和表达能力。作为推动人工智能飞速发展的重要力量,CNN无疑是深度学习领域最杰出、最广泛应用的模型之一。

通过对输入数据进行多层次的卷积和池化操作,CNN可以从低级到高级、从小尺度到大尺度地逐步提取特征。卷积层发挥了特征提取的核心作用,池化层起到降维和压缩特征的效果,而全连接层则负责将这些分布式特征整合,得出最终结论,完成分类、预测等任务。

只有深入理解CNN的内在机理和精巧设计,我们才能更好地利用这一强大工具,在图像识别、语音处理等领域施展拳脚,并将CNN的创新思路推而广之,开拓人工智能的新视野,探索更多前沿应用。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软件设计师知识点】一、计算机系统基础知识

文章目录 冯诺依曼计算机CPUCPU 的功能CPU 的组成 数据表示进制转换单位换算定点数浮点小数IEEE 754标准浮点数的运算 校验码奇偶校验码海明码循环冗余校验码(CRC) 指令系统指令格式寻址方式指令集指令流水线 存储系统存储器的层次化结构存储器的分类相联…

MYBATIS获取参数值

MYBATIS最核心的莫过于动态的获取各种的参数值, 为了将来更好的使用MYBATIS进行开发, 我们必须先打好 "获取参数值" 这一基础 一. MYBATIS获取参数值的两种情况: 1.${} 实质:字符串的拼接 注解:${}使用的字符串拼接的方式拼接SQL语句, 所以, 如果其中出现了字符串…

【Golang学习笔记】从零开始搭建一个Web框架(二)

文章目录 模块化路由前缀树路由 前情提示: 【Golang学习笔记】从零开始搭建一个Web框架(一)-CSDN博客 模块化路由 路由在kilon.go文件中导致路由和引擎交织在一起,如果要实现路由功能的拓展增强,那将会非常麻烦&…

Python项目移动文件夹后出现ModuleNotFoundError: No module named

文章目录 0 问题再现1 问题原因2 结局办法2.1 如果是使用编译器运行2.2 如果是在linux环境下,使用命令运行 0 问题再现 移动Python的项目文件夹后,代码出现模块引用未知的问题。 1 问题原因 移动Python项目后,source root(项目…

创新者指南

创新者指南 怎么把一个模糊的想法变为成功的商业模式。在高度不确定的商业环境下,怎样验证创新想法是否有商业价值,还有怎么用较低的成本打造产品,并推向市场。作者为我们总结出3个有用的策略(测试方法)和几个关键步骤…

从零实现诗词GPT大模型:专栏内容规划

一、前情介绍 本系列文章将从头编写一个类GPT的深度学习模型,并在诗词数据集上进行训练,从而可以进行诗词创作。 本次实现的类GPT模型,可以在kaggle上使用免费GPU进行训练,并可以在自己的电脑上进行推理,整个学习过程…

前端vue: 使用ElementUI适配国际化

i18n介绍 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。 前端国际化步骤 1、安装i18n插件 安装插件时候,注意必须指定版本号,不然安装会报错。 npm i vue-i1…

查天气(Vue.js,Element UI)

演示图 几点注意 有亿点简陋,凑合能用,button一定要 !important 覆盖原本的 element ui ,不然无效axios回调函数中 this 指向改变了,需要额外的保存一份服务器返回的数据比较复杂时,获取的时候需要注意层级结构method…

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数…

标准更新丨美国发布玩具安全标准ASTM F963-23

2023年10月13日,美国材料试验协会 (ASTM)发布了玩具安全标准ASTM F963-23。新版标准主要修订了声响、电池可触及性、膨胀材料和弹射玩具的技术要求,另外,澄清和调整了邻苯二甲酸酯、玩具基材重金属的豁免以及溯源标签的要求,使其保…

vim相关指令

vim的各种模式及其转换关系图 vim 默认处于命令模式!!! 模式之间转换的指令 除【命令模式】之外,其它模式要切换到【命令模式】,只需要无脑 ESC 即可!!! [ 命令模式 ] 切换至 [ 插…

SQL优化之EXPLAIN执行计划(转载)

目录 第一章、快速了解EXPLAIN1.1)EXPLAIN是什么1.2)示例 第二章、结果列说明2.1)id 与table2.2)select_type:2.3)type2.4)possible_keys与key2.5) key_len2.6)rows2.7&a…

Android 加密之 打包为arr 项目依赖或者为jar

Android 加密之 打包为arr 项目依赖或者为jar 1. 修改build.gradle plugins {//id com.android.application// 1. 修改为libraryid com.android.library }android {namespace com.dzq.iccid2compileSdk 33defaultConfig {//applicationId "com.dzq.iccid2"// 2. 注…

Docker容器基本操作从入门到大牛

1. Docker安装部署 1.1 openEuler使用YUM安装 [rootnode1 ~]# yum install docker -y [rootnode1 ~]# docker version Client:Version: 18.09.0EulerVersion: 18.09.0.332API version: 1.39Go version: go1.17.3Git commit: 9942888Built…

基于PyTorch神经网络进行温度预测——基于jupyter实现

导入环境 import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import torch.optim as optim import warnings warnings.filterwarnings("ignore") %matplotlib inline读取文件 ### 读取数据文件 features pd.read_csv(temps.…

突破编程_前端_SVG(rect 矩形)

1 rect 元素的基本属性和用法 在SVG中&#xff0c;<rect> 元素用于创建矩形。 <rect> 元素有一些基本的属性&#xff0c;可以用来定义矩形的形状、位置、颜色等。以下是这些属性的详细解释&#xff1a; x 和 y &#xff1a;这两个属性定义矩形左上角的位置。 x …

供应链复杂业务实时数仓建设之路

供应链复杂业务实时数仓建设之路 背景 供应链业务是纷繁复杂的&#xff0c;我们既有 JIT 的现货模式中间夹着这大量的仓库作业环节&#xff0c;又有到仓的寄售&#xff0c;品牌业务&#xff0c;有非常复杂的逆向链路。在这么复杂的业务背后&#xff0c;我们需要精细化关注人货…

JVM复习

冯诺依曼模型与计算机处理数据过程相关联&#xff1a; 冯诺依曼模型&#xff1a; 输入/输出设备存储器输出设备运算器控制器处理过程&#xff1a; 提取阶段&#xff1a;输入设备传入原始数据&#xff0c;存储到存储器解码阶段&#xff1a;由CPU的指令集架构ISA将数值解…

6.4Python之字典的可变数据类型

字典是不可变数据类型&#xff0c;但其值都是可变数据类型。添加修改删除&#xff0c;都是通过改变寻址的方式做数据的变化。 例如&#xff1a; d1 {"a": 1, "b": 2, "c": 5} print(d1) print(id(d1)) print(d1["c"], "的ID&a…

策略者模式(代码实践C++/Java/Python)————设计模式学习笔记

文章目录 1 设计目标2 Java2.1 涉及知识点2.2 实现2.2.1 实现两个接口飞行为和叫行为2.2.2 实现Duck抽象基类&#xff08;把行为接口作为类成员&#xff09;2.2.3 实现接口飞行为和叫行为的具体行为2.2.4 具体实现鸭子2.2.5 模型调用 3 C&#xff08;用到了大量C2.0的知识&…