人工智能与机器学习原理精解【31】

news2024/10/7 6:35:38

文章目录

  • 卷积神经网络
    • CNN
      • 定义
      • 数学原理与公式
      • 计算与定理
      • 架构
      • 例子
      • 例题
    • 全连接层的前馈计算
      • 定义
      • 数学原理与公式
      • 计算过程
      • 示例
  • 参考文献

卷积神经网络

CNN

即卷积神经网络(Convolutional Neural Networks),是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习领域的核心成员之一。

定义

CNN是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习领域的代表算法之一。它特别适用于处理图像数据,能够通过卷积操作自动提取图像特征,并通过池化、全连接等操作实现特征的进一步处理和分类。

数学原理与公式

CNN的数学原理主要基于卷积运算、池化操作和全连接层的前馈计算。

  1. 卷积运算

    • 输入:输入图像(或特征图)表示为一个矩阵。
    • 卷积核:一个小矩阵,也叫滤波器或权重矩阵。
    • 输出:输出特征图。

    卷积运算的公式可以表示为:
    ( f ∗ g ) ( n ) = ∑ m = − ∞ ∞ f ( m ) g ( n − m ) (f*g)(n) = \sum_{m=-\infty}^{\infty} f(m)g(n-m) (fg)(n)=m=f(m)g(nm)
    在离散情况下,假设输入图像为 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)=mnX(i+m,j+n)W(m,n)

  2. 池化操作

    • 池化操作主要用于降低特征图的维度,减少计算量,同时保留重要特征。
    • 常见的池化操作有最大池化(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,nRijmaxX(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)=Rij1m,nRijX(m,n)Average Pooling
    其中, R i j R_{ij} Rij表示池化窗口在特征图上的区域。

  3. 全连接层

    • 全连接层将前面卷积层和池化层提取的特征进行综合,通过权重和偏置进行线性变换,然后通过激活函数进行非线性变换,最终得到分类或回归结果。

    全连接层的公式可以表示为:
    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=(WF+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=(53+2×0)/1+1=3
因此,输出特征图的大小为3x3。

全连接层的前馈计算

是神经网络中的一项基本运算,它涉及将前一层的所有神经元的输出作为当前层每个神经元的输入,并通过加权求和与激活函数处理,最终得到当前层的输出。以下是全连接层前馈计算的详细解释:

定义

全连接层(Fully Connected Layer),也称为密集层(Dense Layer),是神经网络中的一种层结构。在这种结构中,当前层的每个神经元都与前一层的每个神经元相连接。因此,这种连接方式被称为全连接。前馈计算则是指数据在神经网络中从输入层向输出层单向传播的过程。

数学原理与公式

全连接层的前馈计算可以通过以下公式表示:

  1. 加权求和
    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=1nwijxi+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是前一层的神经元数量。

  2. 激活函数
    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等。

计算过程

全连接层的前馈计算过程可以概括为以下几个步骤:

  1. 输入数据:将前一层的输出作为当前层的输入数据。
  2. 加权求和:根据公式计算当前层每个神经元的净输入。
  3. 激活函数:将每个神经元的净输入通过激活函数进行非线性变换,得到当前层的输出。

示例

假设有一个全连接层,前一层的输出为 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。则全连接层的前馈计算过程如下:

  1. 加权求和
    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

  2. 激活函数
    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]

全连接层的前馈计算是神经网络中的一项基本运算,它通过加权求和与激活函数处理,实现了数据在神经网络中的前向传播。

参考文献

  1. 文心一言

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

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

相关文章

No.8 笔记 | SQL 查询语句:数据探索的钥匙

2024/10/7 心记 - 致在路上默默奋斗的你 在当今数字化的时代,网络安全已成为我们生活中不可或缺的一部分。它如同守护数字世界的隐形盾牌,保护着我们的隐私、数据和整个社会的稳定运行。 学习网络安全,是踏上一段充满挑战与机遇的征程。 每一…

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型)

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型) 目录 Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型) 1. 项目说明 2. 数据说明 (1)心跳信号分类预测数据集 3. 模型训练 (1)项目安装 &am…

查缺补漏----IP通信过程

1.DHCP协议 H3刚接入网络时,只知道自己的MAC地址,所以需要通过DHCP协议请求自己的IP地址。 通过DHCP协议,得到IP地址、子网掩码、网关与DNS服务器IP地址。 DHCP协议是应用层协议(传输层为UDP),请求报文是广播(H3不知…

深入了解Python:那些常被忽略的知识点

作为现代编程语言的典范,Python以其简洁、高效和广泛的应用领域赢得了无数开发者的青睐。然而,即使是经验丰富的Python程序员,也可能不了解Python的一些特性或最佳实践。这篇文章将介绍Python中常被忽略的一些知识点,通过全面的分…

图文深入理解Oracle DB Scheduler

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。今天继续宅继续写。本篇图文深入介绍Oracle DB Scheduler。 Oracle为什么要使Scheduler? 答案就是6个字:简化管理任务。 • Scheduler(调度程序&#x…

代码随想录训练营Day26 | 669. 修剪二叉搜索树 | 108.将有序数组转换为二叉搜索树 | 538.把二叉搜索树转换为累加树

学习文档:代码随想录 (programmercarl.com) Leetcode 669. 修剪二叉搜索树 题目描述 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留…

o1-preview 在 IMO 2024 第一题的实测表现

相关博客:Learning to Reason with LLMs 以及 Introducing OpenAI o1-preview 测试了 IMO 2024 的第一题,OpenAI-o1-preview 的解题过程包括两部分:思考和推理。 正确答案是全体偶数,o1-preview 的 **思考方向正确,推…

计算机网络——email

pop3拉出来 超出ASCII码范围就不让传了 这样就可以传更大的文件

Linux命令大全及小例子

撰写一份关于Linux命令大全的详尽报道和分析是一项重要的任务,旨在让读者全面了解Linux命令的用途和应用场景。Linux系统因其强大的命令行工具而闻名,无论是系统管理、文件操作还是网络配置,Linux命令行都提供了灵活且强大的解决方案。以下是…

【模板进阶】std::void_t

一、 s t d : : v o i d _ t std::void\_t std::void_t的源码分析和常规范例 1. s t d : : v o i d _ t 1.std::void\_t 1.std::void_t的源码分析 C 17 C17 C17引入了 s t d : : v o i d _ t std::void\_t std::void_t,它其实是一个别名模板,源码非常简…

如何为树莓派安装操作系统,以及远程操控树莓派的两种方法,无线操控和插网线操控

文章目录 一、下载树莓派的系统二、将文件下载到SD卡中1.使用官方软件2.其他选择 三、远程连接电脑安装vnc-viewer1.无线操作(配置树莓派,开启VNC)电脑远程配置2.有线连接(需要一根网线) 总结 一、下载树莓派的系统 下…

github学生认证(Github Copilot)

今天想配置一下Github Copilot,认证学生可以免费使用一年,认证过程中因为各种原因折腾了好久,记录一下解决方法供大家参考。 p.s.本文章只针对Github学生认证部分遇到的问题及解决方法,不包括配置copilot的全部流程~ 1、准备工作…

【python实操】python小程序之定义类

引言 python小程序之定义类 文章目录 引言一、定义类1.1 题目1.2 代码1.3 代码解释 二、思考2.1 面向对象编程(OOP)原则2.2 self 参数2.3 内存地址2.4 代码的可读性和可维护性 一、定义类 1.1 题目 小猫爱吃鱼,小猫要喝水,定义不…

Vue (快速上手)

Vue 初识Vue 在Vscode中创建html文件&#xff0c;然后打开该文件&#xff0c;输入英文!即可显示出提示框&#xff0c;选定第一个即可出现默认的html模板。 案例一&#xff1a;值的传递 使用大括号{{}}声明 一个将要被Vue所控制的 DOM 区域&#xff0c;其值可以在<script&…

构建数字化生态平台,开启企业新未来

随着数字化时代的到来&#xff0c;构建数字化生态平台已成为企业获取竞争优势、实现可持续发展的重要途径。数字化生态平台是指利用数字技术构建的&#xff0c;能够整合多方资源&#xff0c;为用户提供一站式服务和价值的开放平台。 数字化生态平台的特点 1.开放性&#xff1a…

Vue/组件的生命周期

这篇文章借鉴了coderwhy大佬的Vue生命周期 在Vue实例化或者创建组件的过程中 内部涉及到一系列复杂的阶段 每一个阶段的前后时机都可能对应一个钩子函数 以下是我根据coderwhy大佬文章对于每一个阶段的一些看法 1.过程一 首先实例化Vue或者组件 在实例化之前 会对应一个钩子函…

Android 组件化利器:WMRouter 与 DRouter 的选择与实践

在移动端开发中&#xff0c;组件化 和 模块化 是常见的开发策略。随着项目的规模增大&#xff0c;不同功能之间的依赖、耦合度会变得越来越复杂&#xff0c;模块间的解耦成为不可避免的需求。路由框架正是在这种需求背景下应运而生。本文我们将讨论两款在Android开发中比较流行…

PyEcharts教程(002):上手PyEcharts

2、上手PyEcharts&#xff08;以jupyter notebook编译&#xff09; 2.1 如何查看pyecharts版本 import pyecharts print(pyecharts.__version__)2.2 上手Pyecharts 首先绘制第一个图表 from pyecharts.charts import Bar # 创建柱形图对象 bar Bar() # 添加x轴 bar.add_xa…

51单片机的红外感应洗手器【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机红外感应传感器继电器LED等模块构成。适用于智能红外感应自动洗手器等相似项目。 可实现功能: 1、红外感应传感器实时检测是否有人体接近&#xff08;距离小于20cm&#xff09; 2、如果有人靠近&#xff0c;继电器自动闭合&#…

ZJYYC2360. 圆球的最大得分

思路&#xff1a;这是一道区间dp的题目。最大的数放在最远处会更优&#xff0c;所以每个小孩可以放在 l 处或 r 处&#xff0c;即这段区间的最左边或最右边。这题可以用记忆化搜索来写&#xff0c;用dp[l][r]来记录 i ~ j 之间调整位置后的最大得分。 #include <bits/stdc.…