笔记(总结)-卷积神经网络

CNN卷积神经网络学习笔记1:背景介绍 Convolutional Neural Network 卷积神经网络是基于人工神经网络提出的。人工神经网络模拟人的神经系统,由一定数量的神经元构成。在一个监督学习问题中,有一组训练数据(xi,yi)(x_i,y_i),x是样本,y是label,把它们输入人工神经网络,会得到一个非线性的分类超平面hw,b(x)h_{w,b}(x),在这篇笔记中先梳理一下传统人工神经网络的基本概念,再基于传统人工神经 阅读详情

神经网络是一棵根深叶茂的大树,有过许多果实,可是都略显青涩,无法摘食。直到2010年后,这棵大树才真正可谓硕果累累,其中最璀璨甘甜的就是卷积神经网络(Convolutional Neural Network,下称CNN)。在这之后,神经网络再次成为科研界的热点,在这个数据和算力初具规模的时代,神经网络终于展现出了应用的价值。闲话到此,只是想说明CNN对于神经网络的意义。本篇将主要讨论CNN的模型原理,并简述其在分类问题上的应用。


起源

全连接前馈神经网络(前馈神经网络指一层神经元只接受上一层作为输入,并输出到下一层,该层神经元之间、该层与其它层都没有连接关系)以其复杂的连接方式,在一段时间内展现出了很强的拟合能力。但是面对特定问题时,展示出了缺陷。比如面对图像问题时,各像素点打平变成一个向量输入时,假设图像尺寸为10*10=100个像素点,隐层神经元有1024个,那么参数个数为100*1024个,如此大的参数空间,在训练时是无法忍受的。

CNN也是一种前馈神经网络,受生物学上的“感受野”机制带来的灵感而提出。

感受野主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质。比如在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。

CNN具有感受野提取特征的能力,参数少、训练快等诸多优点。很好地解决了图像特征提取的问题。

接下来的叙述思路为理解CNN,即在给定CNN的结构下,如何理解CNN中各部分的设计与功能。由于能力有限,如果按照“如何得出CNN的结构设计”这一种方式来讲,恐怕难以讲清,虽然这种思路是更加自然的,也是CNN发明者的智慧精华所在。


整体设计

以图像分类问题为例(即给定一副图,根据图片内容,将图片分类到相关类别),CNN架构图如下:
这里写图片描述
原始图片的像素作为原始特征输入到神经网络中,经过卷积层(Convolution)-池化层(Pooling)组合模块的堆叠,完成特征提取过程,此时得到的是图像的高维特征表示。然后将特征打平(Flatten),输入到全连接网络中,完成分类功能。可以看到,整个CNN的架构、功能分为清晰的两部分:卷积-池化模块的特征抽取+全连接网络的分类。其中全连接网络是已经知道的,CNN的贡献在于前一部分。

题外话:单独的前馈神经网络其实也可以看做两个模块,中间隐层完成了特征提取过程,最后一层完成了分类过程。但由于网络层都是全连接,特征提取和分类某种程度上杂糅了起来,耦合度比较高。这样的网络在训练时其实是不好做的。而CNN很好的解决了这个问题,架构上进行了解耦,模块各司其职,优化也可以分别进行。


卷积层(Convolution Layer)

考虑一张简单的6*6的像素图,像素不含灰度值时(像素点取值为0或1),表示如下图。

卷积层主要由卷积核(filter)构成。逻辑上来说,卷积核是形如下图的参数矩阵:

卷积核与像素矩阵进行卷积运算,得到特征,卷积神经网络也因此得名。运算图如下:
这里写图片描述
可以看到,卷积核与像素矩阵中同尺寸的部分进行点积运算(即两个同尺寸矩阵的对应元素相乘,对乘积结果进行求和),公式化表示如下:

featurek=∑i,jaijbij   aij∈Matriximage, bij∈Matrixfilterfeaturek=∑i,jaijbij   aij∈Matriximage, bij∈Matrixfilter

卷积核和像素矩阵的不同部分做卷积运算,提取出不同的featurefeature。可以想象卷积核贴附在像素矩阵上方,沿着不同方向滑动(stride),从而提取不同区域的特征。最终得到特征矩阵,特征矩阵的尺寸与卷积核尺寸、滑动步长、像素矩阵相关。
这里写图片描述
当使用多个卷积核时,便能得到多个特征矩阵。对于卷积核,我们可以理解为特征提取器,这种特征可能是图像中的轮廓、边角、颜色等信息。卷积核1提取整个图像上的轮廓信息,卷积核2提取整个图像上的颜色信息等等。而特征矩阵则是整个图像矩阵不同局部的某种特征表示。
这里写图片描述
直观上来看,卷积核只是完成了卷积运算,而提取出的特征也不过是乘积求和的数值。但由于神经网络有惊人的拟合能力,BP优化的过程中能产生很多神奇的效果。当我们拿到卷积层的中间结果,并进行合理展示时,这种特征提取过程更加明显(数学确实是个神奇的东西,这种结果看起来不可思议):
这里写图片描述

以上分析都是基于卷积层的逻辑视图。考虑卷积层计算的物理视图(转化为神经网络的神经元计算)。像素矩阵按行列打平,作为输入神经元;特征矩阵中的元素相当于隐层神经元;而卷积核则相当于权值参数。卷积运算的过程实际上就是:输入神经元的特定部分,乘以权值矩阵,得到隐层神经元的过程。
这里写图片描述
由上图可以看到,相比于全连接神经网络,每个隐层神经元和每个输入神经元都有连接。卷积层只是进行了局部连接(稀疏连接)。
这里写图片描述
除此之外,卷积层还进行了参数共享。由之前的逻辑视图已经看到,卷积核在提取每个局部特征的过程中,是不变的。结合上图可以看到,同一卷积核得到的不同隐层神经元,与输入神经元连接的参数是一样的。

这两者结合起来,极大地减少了卷积层的参数空间。并且由逻辑视图可以看到,卷积核在不同图像局部的卷积运算、不同的卷积核的卷积运算都是相互独立,可以使用并行计算来加速卷积层的运算。这也是CNN在工业界能够得到大规模应用的原因。


池化层(Pooling Layer)

卷积层在小参数空间下完成了特征提取,然而特征矩阵(隐层)神经元的个数仍然是众多的。当像素矩阵巨大时,特征矩阵的神经元个数就会变得很多(一般卷积核的尺寸不会太大,从而保证能提取到足够小的局部的特征)。这样就会使得后续层的参数空间仍然很大。池化层通过对特征采样,进一步减少了神经元个数。
这里写图片描述
针对原图进行像素级别的采样,能在保持原图大致内容的前提下,达到图像压缩的目的。池化层也是如此,经过采样,虽然可能丢失一些特征细节,但能保证抓住其中的要点。
这里写图片描述
参照上图,左边为特征矩阵,右边为池化后的结果。以黄色框内元素为例,MaxPoolingMaxPooling取出四个元素中最大的元素,相当于取出了其中特征最鲜明的像素代表,而AveragePoolingAveragePooling均值化了四个元素,则相当于综合考量了这个局部区域的像素特征,其它框进行类似操作。可以看到特征矩阵尺寸缩小为了四分之一,且仍然保持了局部结构的相对不变性(各颜色的框位置是没变的)。这进一步降低了训练计算的开销,且通过引入采样这种带有随机性质的行为,有效地防止了过拟合。


经过以上卷积层、池化层的操作后,像素矩阵被压缩为了一个小尺寸的池化特征矩阵:
这里写图片描述
可以想象,被压缩后的池化特征矩阵仍然具有类似于图像的性质,其中的每个元素都来自于特征矩阵的对应区域,而特征矩阵中的元素又来自于原始像素矩阵的各个局部区域。因此,运用深度学习的思想,我们可以堆叠卷积-池化的模块,来让模型变“深”,具备更强的拟合能力。

第一个卷积-池化模块的输出结果是诸如轮廓,边角之类的特征信息,第二个模块在前一个模块的结果上进行进一步的特征提取,得到的便是更细微的特征元素,比如线段、弧度等等。通过数个这样的模块堆叠,将原始像素矩阵逐步拆解为很细微的特征表示,达到表示学习、理解图像的目的。


全连接层

卷积-池化模块已经完成了表示学习部分,全连接层只是充当特征组织与分类的角色。将池化层的高阶特征矩阵打平,输入到全连接层即可。在不同的问题中,按不同方式来配置卷积-池化模块(如调整卷积核大小、个数、初始化方法;池化层尺寸、步长;堆叠层数、激活函数等等),来对不同类型的特征进行提取。根据最终表示学习结果的尺寸,合理设置全连接层的层数、神经元个数,达到分类的目的。

深度学习基础笔记 (4) :卷积神经网络 CNN 《动手学深度学习》笔记——卷积神经网络 CNN(LeNet、AlexNet、VGG、NiN、GoogLeNet、ResNet、DenseNet) 阅读详情

相关推荐

卷积神经网络(CNN)学习笔记3:Matlab代码理解

近期正在学习卷积神经网络,大致的原理在之前参考前辈们经验,转载的两个笔记中已经做了简要梳理,下边就Github中的DeepLearnToolbox中的CNN的代码进行理解和实现讲解 参考代码来源:[CNN卷积神经网络的Matlab实现](https://github.com/rasmusbergpalm/DeepLearnToolbox) 网络结构图: 打开路径\tests\test_exampl

冰凝凝的专栏 2万+

机器学习之——神经网络模型

之前我们了解了神经网络模型(Nerual Network),这一次,我们来具体讨论一下神经网络模型的表达。 我们知道,神经网络模型是许多逻辑单元(Logistics Unit)按照不同的层级组织起来的网络,每一层的输出变量作为下一层的输入变量。如下图,是一个三层的神经网络,第一层为输入层(Input Layer),最后一层为输出层(Output La...

weixin_34235371的博客 843

别再只会用QTcpSocket了!手把手教你用QSslSocket为你的Qt网络应用加上SSL/TLS加密(附完整代码示例)

本文详细介绍了如何将Qt网络应用从QTcpSocket迁移到QSslSocket,实现SSL/TLS加密传输。通过对比API差异、解析核心机制和提供完整代码示例,帮助开发者快速掌握安全网络编程技巧,有效防范数据窃听和中间人攻击等安全风险。

weixin_30654583的博客 400

CNN-卷积神经网络

它在一整个屏幕滑动的时候,其实会把三个通道的值都累加起来,最终只是输出一个一维矩阵。而多个卷积核(一个卷积层的卷积核数目是自己确定的)滑动之后形成的Activation Map堆叠起来,再经过一个激活函数就是一个卷积层的输出了。从左上角开始,卷积核就对应着数据的3*3的矩阵范围,然后相乘再相加得出一个值。我们是使用卷积核来提取特征的,卷积核可以说是一个矩阵。假如我们设置一个卷积核为3*3的矩阵,而我们图片为一个分辨率5*5的图片。在我们面对线性可分的数据集的时候,简单的用线性分类器即可解决分类问题。...

zhangshaozhong__的博客 639

智能车竞赛卡丁快跑组:自动驾驶与人车交互技术实战解析

本文深入解析了智能车竞赛卡丁快跑组的技术核心,重点探讨了自动驾驶与人车交互两大模块的实战方案。文章详细拆解了从环境感知、路径规划到语音识别、命令执行的完整流程,并分享了基于单片机平台的调试心法与赛场经验,为参赛者提供了一套从零开始、分步攻坚的系统性备赛指南。

f0g1h2的博客 1177

基于多头注意力时间卷积网络(MATCN)的虚拟电厂短期功率预测模型

​时空特征解耦​:TCN负责时间模式,注意力捕捉空间关联​动态门控机制​:自适应调整两种特征的融合比例​多尺度感知​:膨胀卷积覆盖5分钟到24小时的时间跨度​轻量化设计​:参数量比传统Transformer减少52%

hasakie的博客 322

深度学习相关原理

深度学习的原理

weixin_39455125的博客 2094

C# 从数秒到毫秒:MySQL+Redis百万数据优化实战全解析

在处理百万级数据时,传统单体数据库常面临查询效率低下、数据库负载过高和用户体验差等问题。为解决这些性能瓶颈,可以采用MySQL分库分表、Redis缓存和异步统计的组合策略。 数据库分片:通过水平分表和分库实现,将单表数据分散到多个物理表或数据库实例中,降低单点负载。 Redis缓存:利用Redis缓存高频数据,减少数据库查询压力,提升响应速度。 异步统计:通过消息队列(如RabbitMQ)解耦统计任务,后台处理非实时任务,避免阻塞主流程。 这些优化策略能够显著提升系统性能,确保在高并发和大数据量场景下的稳定

墨夶的博客 852

各种卷积操作及其矩阵运算

前言 简单来讲,卷积是一种函数和函数产生一个新函数的数学运算,该数学运算的自变量是两个函数f, g(连续或离散都可以,,定义域之外的部分记函数值填充为0),输出为一个函数h,满足 ,或者说,就是对每个自变量t, 的h(t)值,都是g与对应​f的函数值的加权和。 1. 一维离散卷积数学表达 2. 二维离散卷积定义 3. 图像卷积 卷积核套合在图像上,对应位置相乘求和赋值给中心像素,滑动卷积核(从左到右,从上到下),依次得到新的特征图上的值。 上图展示的是 stride=1 的情形,既每次移动一个像

Nick Blog 7087

双向升压和降压的DC-DC转换器设计

c复制// 类型定义与常量MODE_FORWARD_BOOST, // 正向升压模式(输入700V→输出1200V)MODE_FORWARD_BUCK, // 正向降压模式(输入700V→输出<700V)MODE_REVERSE_BOOST, // 反向升压模式(输入1200V→输出700V)MODE_REVERSE_BUCK // 反向降压模式(输入<700V→输出700V)// 硬件参数float Vin;// 输入电压(0-1200V)

567

实战:RK3568 Android14 调试 MIPI DSI 液晶屏

LCD1_RST -> 对应原理图网络连接到 GPIO。LCD1_PWR_EN ->用于给屏幕 VCC 供电。LCD0_BL_EN / LCD0_BL_PWM -> MP3302 升压芯片驱动 LED 灯条。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/100f2be7f763494da1032464e272e63b.png&pinctrl {/* 配置 LCD_RST 和 LCD_EN */

qq_33427070的博客 1548

卷积神经网络卷积计算,卷积网络计算公式

卷积神经网络的连接性:卷积神经网络中卷积层间的连接被称为稀疏连接(sparseconnection),即相比于前馈神经网络中的全连接,卷积层中的神经元仅与其相邻层的部分,而非全部神经元相连。卷积神经网络的稀疏连接具有正则化的效果,提高了网络结构的稳定性和泛化能力,避免过度拟合,同时,稀疏连接减少了权重参数的总量,有利于神经网络的快速学习,和在计算时减少内存开销。然后核的具体的值,就是要训练出来的,核的初始化的话,若果你的输入是0-1之前,那么核值也可以初始化在0-1之间,不会有太大的误差。

神器榜 9307

UG NX二次开发(C#)--详细讲述编程模板NXOpen_CS_Wizard的代码意义,帮你轻松进入NXOpen(C#)二次开发

有几个读者私信问我,在看了“NX1957在VS2019上二次开发的环境配置”后,能完成了UG NX二次开发(C#)模板的配置,也能根据模板创建工程,但是对工程文件.cs不甚理解;并且,在UG Styler新建完成后,其也有一个dlx文件和.cs文件,也不清楚怎么使用。本文先对UG NX二次开发(C#)模板文件进行讲解,在下一个博客中,讲解Styler新建后的模板文件。以上就是对编程模板NXOpen_CS_Wizard(c#)的讲解,其实只要明白了逻辑关系,编程实现只是时间问题,祝你好运。

GimiGimmy 1786

CNN卷积神经网络学习笔记

最近开始从事视觉领域的研究工作,CNN(卷积神经网络)是图像处理最常用的深度学习算法,听起来比较高深的样子,但是有了之前无线通信算法的经验,理解起来也非常容易。虽然网上介绍CNN的文章很多,还是自己写一下,理解更为深刻,其中很多图用了网络上,一并表示感谢。

Tony's Blog 1219

如何用Python编程实现算术割圆术?

第10章 割圆术 Python编程要点 from … import …语句 math模块的sqrt()函数 round()函数 10.1 图解九章 {:–}觚( gū ):正多边形。“六觚”即正六边形,“十二觚”即正十二边形。 图10-1 六觚、十二觚、二十四觚 提示 图10-1所示由图解九章源码中的“图解割圆术.py”自动绘制而成,我们可运行脚本文件,查看动态的绘制过程。 割六觚以...

人邮异步社区 3237

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[神经网络学习笔记]卷积神经网络CNN(Convolutional Neural Networks, CNN) 综述

本人刚入门神经网络,边学习边总结,参考了很多大佬的博客和论文,整理出的自己思路的笔记,供入门的同学一起参考。其中可能有理解错误的地方,望指出 参考主要文献和博客 通俗讲解什么叫卷积、池化 参考资料 -卷积神经网络研究综述-周飞燕 一、常用的深度学习模型有 深度置信网络(Deep Belief Network DBN) 层叠自动去噪编码机(Stacked Deoising Autoencodes,SDA) 卷积神经网络(Convolutional Neural Network,CNN) 二、神经元

BetterBench的博客 6526

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CNN学习笔记

学习CNN的一些总结

u010067397的专栏 362

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

卷积神经网络CNN学习笔记

主要操作 卷积、非线性变换(ReLU)、池化或子采样、分类(完全连接层) 卷积 卷积的主要目的是从输入图像中提取特征。 卷积的解释:将橙色矩阵在原始图像(绿色)上以每次1个像素的速率(也称为“步幅”)移动,对于每个位置,计算两个矩阵相对元素的乘积并相加,输出一个整数并作为最终输出矩阵(粉色)的一个元素。 在卷积神经网路的术语中,这个3 × 3矩阵被称为“过滤器”或“核”或“特征探测器”,通过在图...

qq_33793792的博客 926

卷积神经网络(CNN)入门学习笔记

CNN,全称,是一种专门用来处理图片、语音、文本等结构化数据的神经网络。,一步步提取特征,最后做出判断。

dark 1675

[深度学习笔记][CNN/GCN]卷积神经网络基础

注:这是写给自己看的学习笔记,如有错误敬请指出。 1.卷积神经网络的结构 由四层构成,分别为:输入、卷积、池化、输出层。 2.卷积神经网络的形象理解 2.1卷积层的形象理解 卷积层的目的实际上是进行特征的提取。 在卷积层(convention layer)中,使用一个过滤器(kernel)去扫描一个图像,这个过滤器的参数是需要学习的。过滤器与图像进行卷积并滑动,会生成这个图像的特征映射(feature map)。 此处可以深究的问题是:如何选取合适的过滤器、如何确定过滤器的大小等。(书中.

猎人伯爵 877

python3 27.keras使用卷积神经网络(CNN)对MNIST数据集进行分类 学习笔记

文章目录前言 前言      计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github上下载到,gitbub地址:https://github....

112 4267

深度学习—卷积神经网络(CNN)全笔记,附代码

K近邻;神经网络基础,线性函数,损失函数,前向传播; 卷积神经网络,卷积网络与传统网络的区别,卷积层,卷积层涉及参数,池化层,最大池化,特征图的变化;经典网络Alexnet,经典网络—Vgg经典网络—Resnet,感受野; 项目实战—基于CNN构建识别模型一 项目实战—基于CNN构建识别模型二 图像识别实战常用模块解读...

weixin_58176527的博客 2万+

CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络

2012年我在北京组织过8期machine learning读书会,那时“机器学习”非常火,很多人都对其抱有巨大的热情。当我2013年再次来到北京时,有一个词似乎比“机器学习”更火,那就是“深度学习”。本博客内写过一些机器学习相关的文章,但上一篇技术文章“LDA主题模型”还是写于2014年11月份,毕竟自2015年开始创业做在线教育后,太多的杂事、琐碎事,让我一直想再写点技术性文章但每每恨时间抽不开。然由于公司在不断开机器学习、深度学习等相关的在线课程,耳濡目染中,总会顺带着学习学习。

2401_87555477的博客 1132

【CNN】卷积神经网络笔记笔记

卷积神经网络 卷积神经网络是如何进行工作的呢? 通俗来讲,就是以下的工作流程: 一、图片如何转化为像素矩阵(如何用数字来表示图片呢) 首先Image.open()来打开一幅图像,然后调用numpy中的array()函数就可以将PIL对象转换为数组对象。 img=np.array(Image.open(‘d:/lena.jpg’)) #打开图像并转化为数字矩阵 如果是RGB三通道图像,转化为...

qq_43557445的博客 1027

CNN笔记

李宏毅老师的听课笔记 https://www.youtube.com/watch?v=Ye018rCVvOo&list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J 写的很简单,主要是为了自己理解,如有不明白或者指出问题,请多指教! CNN Convolutional Neural Network ,专门用在图像上的,目的就是提取有用的特征 Tensor 维度大于2的矩阵 版本1: 没必要fully connected,对于一张图片,辨识他是啥就看部分特征就行 每一个neur

qq_43785048的博客 192

cs231 CNN笔记

cs231的CNN讲义的笔记 结构概述 常规的神经网络不适合大尺寸的图片。图大导致参数很多,造成浪费与增加过拟合的风险。 神经元的三维排列。充分利用了图像的特点,更合理的构建网络、 用来构建卷积神经网络的各种层 卷积层,池化层,全连接层 卷积层 概述和直观介绍:在没有大脑和生物意义上的神经元之类的比喻下,直观的说,网络会学习到一种滤波器,这种滤波器当见到某一类视觉特征时就...

weixin_40520563的博客 374
上一篇: 笔记(总结)-神经语言模型和词向量
下一篇: 笔记(总结)-循环神经网络
ZSYGOOOD
博客等级 码龄12年 113粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值