人工智能与机器学习原理精解【31】
文章目录
- 卷积神经网络
- CNN
- 定义
- 数学原理与公式
- 计算与定理
- 架构
- 例子
- 例题
- 全连接层的前馈计算
- 定义
- 数学原理与公式
- 计算过程
- 示例
- 参考文献
卷积神经网络
CNN
即卷积神经网络(Convolutional Neural Networks),是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习领域的核心成员之一。
定义
CNN是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习领域的代表算法之一。它特别适用于处理图像数据,能够通过卷积操作自动提取图像特征,并通过池化、全连接等操作实现特征的进一步处理和分类。
数学原理与公式
CNN的数学原理主要基于卷积运算、池化操作和全连接层的前馈计算。
-
卷积运算:
- 输入:输入图像(或特征图)表示为一个矩阵。
- 卷积核:一个小矩阵,也叫滤波器或权重矩阵。
- 输出:输出特征图。
卷积运算的公式可以表示为:
( f ∗ g ) ( n ) = ∑ m = − ∞ ∞ f ( m ) g ( n − m ) (f*g)(n) = \sum_{m=-\infty}^{\infty} f(m)g(n-m) (f∗g)(n)=m=−∞∑∞f(m)g(n−m)
在离散情况下,假设输入图像为 X X X,卷积核为 W W W,则卷积运算可以表示为:
Y ( i , j ) = ∑ m ∑ n X ( i + m , j + n ) W ( m , n ) Y(i, j) = \sum_{m} \sum_{n} X(i+m, j+n)W(m, n) Y(i,j)=m∑n∑X(i+m,j+n)W(m,n) -
池化操作:
- 池化操作主要用于降低特征图的维度,减少计算量,同时保留重要特征。
- 常见的池化操作有最大池化(Max Pooling)和平均池化(Average Pooling)。
池化操作的公式可以表示为:
Y ( i , j ) = max m , n ∈ R i j X ( m , n ) (Max Pooling) Y(i, j) = \max_{m,n \in R_{ij}} X(m, n) \quad \text{(Max Pooling)} Y(i,j)=m,n∈RijmaxX(m,n)(Max Pooling)
Y ( i , j ) = 1 ∣ R i j ∣ ∑ m , n ∈ R i j X ( m , n ) (Average Pooling) Y(i, j) = \frac{1}{|R_{ij}|} \sum_{m,n \in R_{ij}} X(m, n) \quad \text{(Average Pooling)} Y(i,j)=∣Rij∣1m,n∈Rij∑X(m,n)(Average Pooling)
其中, R i j R_{ij} Rij表示池化窗口在特征图上的区域。 -
全连接层:
- 全连接层将前面卷积层和池化层提取的特征进行综合,通过权重和偏置进行线性变换,然后通过激活函数进行非线性变换,最终得到分类或回归结果。
全连接层的公式可以表示为:
Y = φ ( W X + b ) Y = \varphi(WX + b) Y=φ(WX+b)
其中, W W W是权重矩阵, X X X是输入特征向量, b b b是偏置向量, φ \varphi φ是激活函数。
计算与定理
CNN的计算过程主要包括前向传播和反向传播。在前向传播过程中,输入图像通过卷积层、池化层和全连接层逐层计算得到输出。在反向传播过程中,根据损失函数的梯度通过链式法则逐层更新网络参数。
关于CNN的定理,虽然没有像传统数学那样的严格定理,但有一些重要的结论和性质。例如,CNN具有平移不变性(Shift Invariance),即输入图像的小幅平移不会改变卷积层的输出。此外,CNN通过局部连接和权重共享等机制有效减少了网络参数的数量,降低了过拟合的风险。
架构
CNN的架构通常由输入层、卷积层、池化层、全连接层和输出层组成。其中,卷积层和池化层是CNN的核心组成部分,它们负责提取图像特征并降低特征维度。全连接层则负责将提取的特征进行综合和分类。
例子
以经典的LeNet-5网络为例,它包含两个卷积层、两个池化层和一个全连接层。LeNet-5网络主要用于手写数字识别任务,通过卷积层提取图像特征,通过池化层降低特征维度,最后通过全连接层进行分类。
例题
例题:假设有一个5x5的输入图像,使用一个3x3的卷积核进行卷积操作,步长为1,没有填充。请计算输出特征图的大小。
解答:根据卷积运算的公式,输出特征图的大小可以通过以下公式计算:
N = ( W − F + 2 P ) / S + 1 N = (W - F + 2P) / S + 1 N=(W−F+2P)/S+1
其中, N N N是输出特征图的大小, W W W是输入图像的大小, F F F是卷积核的大小, P P P是填充的大小, S S S是步长。将题目中的参数代入公式,得到:
N = ( 5 − 3 + 2 × 0 ) / 1 + 1 = 3 N = (5 - 3 + 2 \times 0) / 1 + 1 = 3 N=(5−3+2×0)/1+1=3
因此,输出特征图的大小为3x3。
全连接层的前馈计算
是神经网络中的一项基本运算,它涉及将前一层的所有神经元的输出作为当前层每个神经元的输入,并通过加权求和与激活函数处理,最终得到当前层的输出。以下是全连接层前馈计算的详细解释:
定义
全连接层(Fully Connected Layer),也称为密集层(Dense Layer),是神经网络中的一种层结构。在这种结构中,当前层的每个神经元都与前一层的每个神经元相连接。因此,这种连接方式被称为全连接。前馈计算则是指数据在神经网络中从输入层向输出层单向传播的过程。
数学原理与公式
全连接层的前馈计算可以通过以下公式表示:
-
加权求和:
z j = ∑ i = 1 n w i j x i + b j z_j = \sum_{i=1}^{n} w_{ij}x_i + b_j zj=i=1∑nwijxi+bj
其中, z j z_j zj是当前层第 j j j个神经元的净输入, x i x_i xi是前一层的第 i i i个神经元的输出, w i j w_{ij} wij是第 i i i个神经元到第 j j j个神经元的连接权重, b j b_j bj是第 j j j个神经元的偏置项, n n n是前一层的神经元数量。 -
激活函数:
a j = σ ( z j ) a_j = \sigma(z_j) aj=σ(zj)
其中, a j a_j aj是当前层第 j j j个神经元的输出, σ \sigma σ是激活函数。常见的激活函数包括ReLU(Rectified Linear Unit)、sigmoid和tanh等。
计算过程
全连接层的前馈计算过程可以概括为以下几个步骤:
- 输入数据:将前一层的输出作为当前层的输入数据。
- 加权求和:根据公式计算当前层每个神经元的净输入。
- 激活函数:将每个神经元的净输入通过激活函数进行非线性变换,得到当前层的输出。
示例
假设有一个全连接层,前一层的输出为 x = [ x 1 , x 2 , x 3 ] x = [x_1, x_2, x_3] x=[x1,x2,x3],当前层的权重矩阵为 W = [ w 11 w 12 w 13 w 21 w 22 w 23 ] W = \begin{bmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \end{bmatrix} W=[w11w21w12w22w13w23],偏置项为 b = [ b 1 , b 2 ] b = [b_1, b_2] b=[b1,b2],激活函数为ReLU。则全连接层的前馈计算过程如下:
-
加权求和:
z 1 = w 11 x 1 + w 12 x 2 + w 13 x 3 + b 1 z_1 = w_{11}x_1 + w_{12}x_2 + w_{13}x_3 + b_1 z1=w11x1+w12x2+w13x3+b1
z 2 = w 21 x 1 + w 22 x 2 + w 23 x 3 + b 2 z_2 = w_{21}x_1 + w_{22}x_2 + w_{23}x_3 + b_2 z2=w21x1+w22x2+w23x3+b2 -
激活函数:
a 1 = max ( 0 , z 1 ) a_1 = \max(0, z_1) a1=max(0,z1)
a 2 = max ( 0 , z 2 ) a_2 = \max(0, z_2) a2=max(0,z2)
最终,当前层的输出为 a = [ a 1 , a 2 ] a = [a_1, a_2] a=[a1,a2]。
全连接层的前馈计算是神经网络中的一项基本运算,它通过加权求和与激活函数处理,实现了数据在神经网络中的前向传播。
参考文献
- 文心一言
相关文章:

人工智能与机器学习原理精解【31】
文章目录 卷积神经网络CNN定义数学原理与公式计算与定理架构例子例题 全连接层的前馈计算定义数学原理与公式计算过程示例 参考文献 卷积神经网络 CNN 即卷积神经网络(Convolutional Neural Networks),是一类包含卷积计算且具有深度结构的前…...

如何安全地大规模部署 GenAI 应用程序
大型语言模型和其他形式的生成式人工智能(GenAI) 的广泛使用带来了许多组织可能没有意识到的安全风险。幸运的是,网络和安全提供商正在寻找方法来应对这些前所未有的威胁。 随着人工智能越来越深入地融入日常业务流程,它面临着泄露专有信息、提供错误答…...

verilog实现FIR滤波系数生成(阶数,FIR滤波器类型及窗函数可调)
在以往采用 FPGA 实现的 FIR 滤波功能,滤波器系数是通过 matlab 计算生成,然后作为固定参数导入到 verilog 程序中,这尽管简单,但灵活性不足。在某些需求下(例如捕获任意给定台站信号)需要随时修改滤波器的…...

OSPF的不规则区域
1.远离骨干非骨干区域 2.不连续骨干 解决方案 tunnel ---点到点GRE 在合法与非ABR间建立隧道,然后将其宣告于OSPF协议中; 缺点:1、周期和触发信息对中间穿越区域造成资源占用(当同一条路由来自不同区域,路由器会先…...

大数据新视界 --大数据大厂之 Ibis:独特架构赋能大数据分析高级抽象层
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

总结TypeScript相关知识
目录 引入认识特点安装使用变量声明类型推导 JS 和 TS 共有类型number类型boolean类型string类型Array类型null和undefined类型object类型symbol类型对象类型函数类型 可选和只读type 和 interface索引签名类型断言非空类型断言类型缩小严格赋值检测现象TS 新增类型字面量类型a…...

pdf怎么编辑修改内容?详细介绍6款pdf编辑器功能
■ pdf怎么编辑修改内容? PDF(Portable Document Format)作为一种广泛使用的文件格式,具有特点包括兼容性强、易于传输、文件安全性高、跨平台性、可读性强、完整性、可搜索性、安全性、可压缩性。 PDF文件本身是不可以直接进行编…...

【Blender Python】4.获取场景对象的几种方式
概述 有时候我们需要获取场景中已经添加或存在的对象。本节就总结在Blender Python中获取场景中对象的一些方法。 通过名称获取 py.data的objects()方法返回一个对象集合,可以使用键名或者下标形式获取具体的对象。 在默认新建的场景中,存在三个对象…...

鸿蒙harmonyos next flutter通信之EventChannel获取ohos系统时间
建立通道 flutter代码: EventChannel eventChannel EventChannel("com.xmg.eventChannel"); ohos代码: //定义eventChannelprivate eventChannel: EventChannel | null null//定义eventSinkprivate eventSink: EventSink | null null//建…...

Python 代码编写规范
本规范旨在为 Python 项目的代码编写提供一致性指南。它遵循 Python 社区的 PEP 8 标准,并结合了通用的编程最佳实践。 1. 编码风格 1.1 缩进 使用 4 个空格 作为缩进,不要使用制表符(Tab)。 def example():if True:print(&quo…...

k8s中pod的管理
一、资源管理 1.概述 说到k8s中的pod,即荚的意思,就不得不先提到k8s中的资源管理,k8s中可以用以下命令查看我们的资源: kubectl api-resources 比如我们现在需要使用k8s开启一个东西,那么k8s通过apiserver去对比etc…...

JavaScript中引用数据类型的浅拷贝
在JavaScript中,数据类型被分为“基本数据类型”和“引用数据类型”两大类。基本数据类型包括数值型、字符型、逻辑型、未定义型(undefined)、空型(null)和ES6新增的Symbol类型,引用数据类型包括数组、对象和函数。 当我们在程序中执行变量赋值操作的时候…...

自闭症寄宿学校陕西:提供综合发展的教育环境
在陕西这片古老而充满希望的土地上,有一所特殊的学校——星贝育园康复中心,它如同一座灯塔,照亮了无数自闭症儿童及其家庭前行的道路。这所全国规模较大的广泛性发育障碍全托寄宿制儿童康复训练机构,不仅以其专业的康复训练和独特…...

JS模块化工具requirejs详解
文章目录 JS模块化工具requirejs详解一、引言二、RequireJS 简介1、什么是 RequireJS2、RequireJS 的优势 三、RequireJS 的使用1、配置 RequireJS1.1、基础配置 2、定义模块3、加载模块 四、总结 JS模块化工具requirejs详解 一、引言 随着前端技术的快速发展,Jav…...

JavaScript中的异步编程:从回调到Promise
在JavaScript中,异步编程是一项至关重要的技能,它允许我们在不阻塞主线程的情况下执行耗时操作,如网络请求、文件读取或定时任务。随着JavaScript的发展,异步编程的模式也在不断演进,从最初的回调函数,到现…...

windows下DockerDesktop命令行方式指定目录安装
windows下DockerDesktop指定目录安装(重新安装) 因为DcokerDesktop占用内存较大, 并且拉去镜像后占用本地空间较多,所以建议安装时就更改默认安装路径和镜像存储路径 这里,展示了从下载到安装的过程: 首先下载DcokerDesktop;找到Docker Desktop Installer.exe 并重命名为 do…...

排查和解决JVM OOM实战
JVM OOM介绍 Java内存区域布局 下面的分析中都是基于JDK 8开始的。关于JMM不过多介绍每个区域的作用。OOM不单只会发生在堆内存,也可能是因为元空间或直接内存泄漏导致OOM,此时在OOM的详细信息中会有不同体现。 Java OOM的类别 java.lang.OutOfMemory…...

【Swift官方文档】7.Swift集合类型
集合类型 使用数组、集合和字典来组织数据。Swift 提供了三种主要的集合类型:数组、集合和字典,用于存储值的集合。数组是有序的值集合。集合是无序的唯一值集合。字典是无序的键值对集合。 Swift 中的数组、集合和字典始终清晰地指明它们可以存储的值…...

QT调用最新的libusb库
一:下载libusb文件 下载最新的库的下载网站:https://libusb.info/ 下载: 解压后目录如下: 二:库文件添加QT中 根据自己的编译器选择库: ①将头文件中添加libusb.h ②源文件中添加libusb-1.0.lib ③添加…...

白嫖EarMaster Pro 7简体中文破解版下载永久激活
EarMaster Pro 7 简体中文破解版功能介绍 俗话说得好,想要成为音乐家,就必须先拥有音乐家的耳朵,相信很多小伙伴都已经具备了一定的音乐素养,或者是说想要进一步得到提升。那我们就必须练好听耳的能力,并且把这种能力…...

使用JavaScript写一个网页端的四则运算器
目录 style(内联样式表部分) body部分 html script 总的代码 网页演示 style(内联样式表部分) <style>body {font-family: Arial, sans-serif;display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f0f0;}.calculator {…...

Linux find命令详解及实用示例
Linux 系统中的 find 命令是一个功能强大的工具,用于在文件系统中搜索文件并执行相应的操作。无论是系统管理员还是普通用户,掌握 find 命令都能极大地提高工作效率。本文将详细介绍 find 命令的用法,并通过多个示例展示其在实际中的应用。 …...

CSS基础-常见属性(二)
6、CSS三大特性 6.1 层叠性 如果样式发生冲突,则按照优先级进行覆盖。 6.2 继承性 元素自动继承其父元素、祖先元素所设置的某些元素,优先继承较近的元素。 6.3 优先级 6.3.1 简单分级 1、内联样式2、ID选择器3、类选择器/属性选择器4、标签名选择器/…...

Spring Boot 2.4.3 + Java 8 升级为 Java 21 + Spring Boot 3.2.0
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Spring Boot 2.4.3 + Java 8 升级为 Java 21 + Spring Boot 3.2.0前言更换 Java 21 SD…...

如何利用免费音频剪辑软件制作出精彩音频
现在有许多免费的音频剪辑软件可供选择,它们为广大用户提供了丰富的功能和便捷的操作体验,让音频编辑变得更加轻松和有趣。接下来,让我们一起走进这些免费音频剪辑软件的世界,探索它们的独特魅力和强大功能。 1.福昕音频剪辑 链…...

安宝特分享 | AR技术重塑工业:数字孪生与沉浸式培训的创新应用
在数字化转型的浪潮中,AR(增强现实)技术与工业的结合正在呈现新的趋势和应用延伸。特别是“数字孪生”概念的崛起,为AR技术在工业中提供了独特而创新的切入点。 本文将探索AR如何与数字孪生、沉浸式体验和实用案例相结合…...

专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
目录 搜索 vs 深度优先遍历 vs 深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜 1.深度优先遍历 vs 深度优先搜索(dfs) 2.宽度优先遍历 vs 宽度优先搜索(bfs) 2.关系图暴力枚举一遍所有的情况 3.拓展搜索问题全排列 决策树 1. 计算布尔⼆叉树的值(medi…...

基于springboot vue3 在线考试系统设计与实现 源码数据库 文档
博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆…...

什么是 HTTP 请求中的 options 请求?
在 Chrome 开发者工具中的 Network 面板看到的 HTTP 方法 OPTIONS,其实是 HTTP 协议的一部分,用于客户端和服务器之间进行“预检”或“协商”。OPTIONS 请求的作用是让客户端能够获取关于服务器支持的 HTTP 方法和其他跨域资源共享 (CORS) 相关的信息&am…...

[图形学]smallpt代码详解(1)
一、简介 本文介绍了著名的99行代码实现全局光照的光线跟踪代码smallpt。 包括对smallpt的功能介绍、编译运行介绍,和对代码的详细解释。希望能够帮助读者更进一步的理解光线跟踪。 二、smallpt介绍 1.smallpt是什么 smallpt(small Path Tracing) 是一个全局光照…...