机器学习小补充(加深理解)

1. 分类交叉熵损失(Categorical Crossentropy)

定义:当标签以独热编码形式表示时使用。

原理:在多分类问题中,分类交叉熵损失用于计算模型预测的概率分布与实际分布之间的差异。模型输出的预测概率通常是一个向量,其元素表示每个类别的预测概率。

公式

假设有 N N N 个样本,每个样本的类别数为 C C C。模型输出的概率分布为 p p p,实际标签为独热编码向量 y y y。分类交叉熵损失的公式如下:

Loss = − 1 N ∑ i = 1 N ∑ c = 1 C y i c log ⁡ ( p i c ) \text{Loss} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{ic} \log(p_{ic}) Loss=N1i=1Nc=1Cyiclog(pic)

其中:

  • y i c y_{ic} yic 是样本 i i i 的实际标签(独热编码),如果样本属于类别 c c c,则 y i c = 1 y_{ic}=1 yic=1;否则 y i c = 0 y_{ic}=0 yic=0
  • p i c p_{ic} pic 是模型预测样本 i i i 属于类别 c c c 的概率。

2. 稀疏分类交叉熵损失(Sparse Categorical Crossentropy)

定义:当标签以整数形式表示时使用。

原理:稀疏分类交叉熵损失与分类交叉熵损失的概念相似,不同之处在于它的标签是以整数形式表示的,而不是独热编码。这种表示形式可以更方便地用于多分类问题。

公式

假设有 N N N 个样本,模型输出的概率分布为 p p p,实际标签用整数 y y y 表示。稀疏分类交叉熵损失的公式如下:

$
\text{Loss} = -\frac{1}{N} \sum_{i=1}^{N} \log(p_{i, y_i})
$

其中:

  • y i y_i yi 是样本 i i i 的实际标签(整数形式),表示样本 i i i 的类别。
  • p i , y i p_{i, y_i} pi,yi 是模型预测样本 i i i 属于真实类别的概率。

1. 准确率(Accuracy)

Accuracy = 正确分类的样本数量 总样本数量 \text{Accuracy} = \frac{\text{正确分类的样本数量}}{\text{总样本数量}} Accuracy=总样本数量正确分类的样本数量

  • 优点:简单易懂,适合于类别分布相对均衡的场景。
  • 缺点:在类别不平衡的情况下,准确率可能会误导。例如,如果95%的样本是某一类,仅凭准确率,模型可以只预测该类就能达到95%的准确率,但实际上并没有学习到有效的信息。

2. 混淆矩阵(Confusion Matrix)

混淆矩阵是一个非常有用的工具来可视化模型的性能。它展示了实际标签与模型预测标签之间的关系。一个二分类问题的混淆矩阵通常如下所示:

Predicted PositivePredicted Negative
Actual PositiveTrue Positive (TP)False Negative (FN)
Actual NegativeFalse Positive (FP)True Negative (TN)
  • True Positive (TP):正确预测为正样本的数量
  • False Positive (FP):错误预测为正样本的数量(实际为负样本)
  • True Negative (TN):正确预测为负样本的数量
  • False Negative (FN):错误预测为负样本的数量(实际为正样本)

3. 精确率(Precision)、召回率(Recall)与 F1 分数

这些指标特别适用于类别不平衡的情况,以下是它们的定义:

  • 精确率(Precision)

    定义:精确率是指在所有模型预测为正样本的结果中,实际上是真正正样本的比例。这一指标主要关注模型的假正率(False Positive, FP),即将负样本预测为正样本的错误数量。

    衡量模型预测为正的样本中有多少是真正的正样本,公式为:

    Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP

  • 召回率(Recall)

    定义:召回率是指在所有实际为正的样本中,模型正确预测为正的比例。召回率主要关注模型的假负率(False Negative, FN),即将正样本预测为负样本的错误数量。

    衡量实际正样本中有多少被模型正确预测为正,公式为:

    Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP

  • F1 分数:精确率和召回率的调和平均数,旨在找到两者之间的平衡,公式如下:

    F 1 = 2 × Precision × Recall Precision + Recall F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1=2×Precision+RecallPrecision×Recall

作用:

1. 卷积层(Convolutional Layer)

  • 原理:卷积层通过滑动窗口(也称为卷积核或过滤器)在输入图像上进行操作,计算局部区域的加权和。这使得网络能够提取图像中的特征,如边缘、纹理和形状。
  • 作用:通过卷积操作,卷积层能够有效地捕捉空间特征,从而减少参数数量,并且相比全连接层更能利用图像的空间结构。

2. 池化层(Pooling Layer)

  • 原理:池化层通常位于卷积层后面,其通过选择局部区域内的最值或均值来减少特征图的空间维度。最大池化选择一个窗口中的最大值,而平均池化则计算平均值。
  • 作用:降低特征图的维度,减少计算量,增加模型的计算速度,并在某种程度上防止过拟合,通过提炼出关键特征,增强模型的鲁棒性。

3. 全连接层(Dense Layer)

  • 原理:每个神经元与上一层的每个神经元相连接,计算所有输入的加权和并通过激活函数(如 ReLU)进行非线性变换。
  • 作用:全连接层往往是网络的最后一层,负责将所有提取的特征映射到最终的分类标签或回归输出,适用于较小的输入特征集。

4. 批归一化层(Batch Normalization Layer)

  • 原理:对每一批输入进行归一化,使得每个特征的均值接近于 0,方差接近于 1。这是通过计算当前批次的均值和标准差来实现的。
  • 作用:加速训练,稳定模型,提高收敛速度,降低对初始化和学习率的敏感性,通常用在激活函数之前。

5. Dropout层

  • 原理:在每个训练批次中,随机选择一定比例的神经元将其输出设置为零,这样有效地减少了模型的复杂度。
  • 作用:防止模型在训练数据上过拟合,增加模型的泛化能力。

6. 循环层(Recurrent Layer)

  • 原理:通过内部状态(记忆)和序列数据的输入进行连接,允许前一时刻的信息影响当前时刻的输出。LSTM 通过门机制来控制信息流,而 GRU 是 LSTM 的一个简化版本。
  • 作用:处理序列数据,比如时间序列分析和自然语言处理,能够记住长期依赖的信息。

7. 自注意力层(Attention Layer)

  • 原理:计算输入序列中每个元素对其他元素的重要性权重,然后为每个元素生成加权求和的输出。注意力机制帮助模型选择性地关注输入中的重要部分。
  • 作用:在处理序列数据时增强模型的注意力,特别是在自然语言处理和图像任务中提升性能。

8. 嵌入层(Embedding Layer)

  • 原理:将离散的输入(如词汇中的单词)映射到连续的向量空间中,使得相似的输入在向量空间中也相近。嵌入层通常会学习这些向量。
  • 作用:提高文本或离散空间数据的表示能力,将离散数据转化为能够参与深度学习模型的稠密特征向量。

9. 转置卷积层(Transposed Convolution Layer)

  • 原理:通过逆向的卷积操作(也被称为反卷积),在特征图上进行上采样,将低维空间的特征映射到更高维空间。通过在输入中插入零并应用卷积来实现。
  • 作用:用于生成更大输出的特征图,广泛应用于图像生成任务,如生成对抗网络(GAN)中。

10. 残差块(Residual Block)

  • 原理:通过添加跳跃连接,将输入直接加到输出中,让模型更容易学习到恒等映射。这样在训练深层网络时,可以有效缓解梯度消失问题。
  • 作用:在构建深层网络时提高了训练的有效性,减少了复杂度,使得网络可以更高效地学习,能够构建更深的网络而不会遇到性能下降的问题。

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

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

相关文章

openresty入门教程:rewrite_by_lua_block

在OpenResty中,rewrite_by_lua_block 是一个强大的工具,它允许你在Nginx的rewrite阶段执行Lua脚本。这个阶段在Nginx处理请求的早期发生,通常用于修改请求URI、请求参数、请求头等,或者根据某些条件执行重定向、返回特定响应等。 …

nuget 管理全局包、缓存和临时文件夹

查看文件夹位置 dotnet nuget locals all --list清空数据 # Clear the 3.x cache (use either command) dotnet nuget locals http-cache --clear nuget locals http-cache -clear# Clear the 2.x cache (NuGet CLI 3.5 and earlier only) nuget locals packages-cache -clea…

【ubuntu】Geogebra

Geogebra 几何作图工具 是一款跨平台的几何作图工具软件, 目前已经覆盖了, windows,android, mac, linux 等操作系统。 Ubuntu 现状 Ubuntu 自带应用市场 Ubuntu 自带应用市场目前只有 Geogebra 4.0 版本, 不能画立…

Qt 编写插件plugin,支持接口定义信号

https://blog.csdn.net/u014213012/article/details/122434193?spm1001.2014.3001.5506 本教程基于该链接的内容进行升级,在编写插件的基础上,支持接口类定义信号。 环境:Qt5.12.12 MSVC2017 一、创建项目 新建一个子项目便于程序管理【…

Qt 监控USB设备的插入和移除

Qt 监控USB设备的插入和移除 flyfish Ubuntu22.04 Qt 6.2.4 CMakeLists.txt 内容 # 指定 CMake 的最低版本要求 cmake_minimum_required(VERSION 3.16)# 定义项目的名称和使用的编程语言 project(USBMonitor LANGUAGES CXX)# 开启自动 UIC,MOC 和 RCC 工具 set(…

MFC工控项目实例二十九主对话框调用子对话框设定参数值

在主对话框调用子对话框设定参数值,使用theApp变量实现。 子对话框各参数变量 CString m_strTypeName; CString m_strBrand; CString m_strRemark; double m_edit_min; double m_edit_max; double m_edit_time2; double …

《C++在金融领域的技术革命:高效、安全与创新的融合》

引言 在当今数字化高速发展的时代,金融领域对技术的需求日益增长。C作为一种强大的编程语言,以其高效的执行性能、强大的内存管理能力和丰富的功能库,在金融领域中占据着重要的地位。本文将深入探讨 C在金融领域的热点技术应用,以…

mac上使用docker搭建gitlab

在 Mac 上搭建 GitLab 可以使用 Docker 来简化安装过程 一、安装详细步骤 1. 安装 Docker 如果你尚未安装 Docker,可以通过以下步骤安装: 下载并安装 Docker Desktop for Mac.安装完成后,启动 Docker Desktop,确保 Docker 运行…

x-cmd pkg | lf - 轻量级终端文件管理器,开销低,效率高,适合资源受限的环境

目录 简介快速上手安装使用 技术特点竞品和相关项目进一步阅读 简介 lf(list files)是 github.com/gokcehan 用 Go 开发的轻量级终端文件管理器,能提供一个通过键盘快捷键进行文件浏览、操作和管理的方法。它的界面风格和操作模式类似于 ran…

D64【python 接口自动化学习】- python基础之数据库

day64 SQL-DQL-基础查询 学习日期:20241110 学习目标:MySQL数据库-- 133 SQL-DQL-基础查询 学习笔记: 基础数据查询 基础数据查询-过滤 总结 基础查询的语法:select 字段列表|* from 表过滤查询的语法:select 字段…

力士乐工控机触摸屏面板维修CFG-BTV40.BN

力士乐工控机触摸屏维修包括BTV20系列,BTV30系列,BTV40等系列均可提供维修服务。 力士乐工控机维修,先区分故障是来自小信号处理部分,还是功率部分故障,很多设备的上位机会有所提示。处理部分包括i/o端口,…

数据挖掘全景:从基础理论到经典算法的深度探索

1 绪论--1.1 数据挖掘的概念和任务 1. (单选题)目前数据分析与挖掘领域的现实情况描述不正确的是() A. 信息爆炸 B. 数据爆炸 C. 信息贫瘠 D.数据收集能力远远超过人们的分析和理解能力 2. (单选题)你认为下面哪种数据对于数据挖掘算法来说最简单最…

简易入手《SOM神经网络》的本质与原理

原创文章,转载请说明来自《老饼讲解神经网络》:www.bbbdata.com 关于《老饼讲解神经网络》: 本网结构化讲解神经网络的知识,原理和代码。 重现matlab神经网络工具箱的算法,是学习神经网络的好助手。 目录 一、入门原理解说 01.…

ubuntu 安装kafka-eagle

上传压缩包 kafka-eagle-bin-2.0.8.tar.gz 到集群 /root/efak 目录 cd /root/efak tar -zxvf kafka-eagle-bin-2.0.8.tar.gz cd /root/efak/kafka-eagle-bin-2.0.8 mkdir /root/efakmodule tar -zxvf efak-web-2.0.8-bin.tar.gz -C /root/efakmodule/ mv /root/efakmodule/efak…

小程序服务商常见问题

1: 服务器域名和开发域名都不带https前缀, 业务域名每个都需要校验文件 2: 手机开了调试可以请求, 关闭调试无法请求, 体验版接口请求不同 答: 服务商还需要通过接口给小程序设置业务域名; 但不需要校验文件; 注意: 体验版通过快速配置小程序服务器域名接口会不生效, 用普通的 …

Llama架构及代码详解

Llama的框架图如图: 源码中含有大量分布式训练相关的代码,读起来比较晦涩难懂,所以我们对llama自顶向下进行了解析及复现,我们对其划分成三层,分别是顶层、中层、和底层,如下: Llama的整体组成…

Docker在微服务架构中的最佳实践

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 Docker在微服务架构中的最佳实践 引言 Docker 概述 定义与原理…

排序算法 - 冒泡

文章目录 1. 冒泡排序1.1 简介1.2 基本步骤:1.3 示例代码(C)1.4 复杂度分析1.5 动画展示 1. 冒泡排序 1.1 简介 冒泡排序(Bubble Sort)是一种简单的排序算法,其基本思想是通过相邻元素的比较和交换&#…

Spring MVC 与 JSP 数据传输

在Spring MVC框架中,控制器(Controller)与视图(View)之间的数据传输是一个常见的操作。本文将介绍几种在Spring MVC中将数据从控制器传递到JSP页面的方法,并提供相应的代码案例。 1. 使用Model对象 Sprin…

理解 HTML5 Canvas 中逻辑像素与物理像素的关系

理解 HTML5 Canvas 中逻辑像素与物理像素的关系 在使用 HTML5 Canvas 时,开发者经常会遇到一个困惑:为什么鼠标的 offsetX 和 offsetY 和我绘制的图形坐标对不上?这通常是因为 Canvas 的逻辑像素大小和物理像素大小不一致。本文将详细解释这…