机器学习基础(4)
超越基于常识的基准
除了不同的评估方法,还应该利用基于常识的基准。训练深度学习模型就好比在平行世界里按下发射火箭的按钮,你听不到也看不到。你无法观察流形学习过程,它发生在数千维空间中,即使投影到三维空间中,你也无法解释它。唯一的反馈信号就是验证指标,就像隐形火箭的高度计。特别重要的是,我们需要知道火箭是否离开了地面。发射地点的海拔高度是多少?模型似乎有15%的精度——这算是很好吗?在开始处理一个数据集之前,你总是应该选择一个简单的基准,并努力去超越它。如果跨过了这道门槛,你就知道你的方向对了——模型正在使用输入数据中的信息做出具有泛化能力的预测,你可以继续做下去。这个基准既可以是随机分类器的性能,也可以是最简单的非机器学习方法的性能。
比如对于MNIST数字分类示例,一个简单的基准是验证精度大于0.1(随机分类器);对于IMDB示例,基准可以是验证精度大于0.5。对于路透社示例,由于类别不均衡,因此基准约为0.18~0.19。对于一个二分类问题,如果90%的样本属于类别A,10%的样本属于类别B,那么一个总是预测类别A的分类器就已经达到了0.9的验证精度,你需要做得比这更好。在面对一个全新的问题时,你需要设定一个可以参考的基于常识的基准,这很重要。如果无法超越简单的解决方案,那么你的模型毫无价值——也许你用错了模型,也许你的问题根本不能用机器学习方法来解决。这时应该重新思考解决问题的思路。
模型评估的注意事项
选择模型评估方法时,需要注意以下几点。数据代表性(data representativeness)。训练集和测试集应该都能够代表当前数据。假设你要对数字图像进行分类,而初始样本是按类别排序的,如果你将前80%作为训练集,剩余20%作为测试集,那么会导致训练集中只包含类别0~7,而测试集中只包含类别8和9。这个错误看起来很可笑,但非常常见。因此,将数据划分为训练集和测试集之前,通常应该随机打乱数据。
时间箭头(the arrow of time)。如果想根据过去预测未来(比如明日天气、股票走势等),那么在划分数据前不应该随机打乱数据,因为这么做会造成时间泄露(temporal leak):模型将在未来数据上得到有效训练。对于这种情况,应该始终确保测试集中所有数据的时间都晚于训练数据。数据冗余(redundancy in your data)。如果某些数据点出现了两次(这对于现实世界的数据来说十分常见),那么打乱数据并划分成训练集和验证集,将导致训练集和验证集之间出现冗余。从效果上看,你将在部分训练数据上评估模型,这是极其糟糕的。一定要确保训练集和验证集之间没有交集。
有了评估模型性能的可靠方法,你就可以监控机器学习的核心矛盾——优化与泛化之间的矛盾,以及欠拟合与过拟合之间的矛盾。
改进模型拟合
为了实现完美的拟合,你必须首先实现过拟合。由于事先并不知道界线在哪里,因此你必须穿过界线才能找到它。在开始处理一个问题时,你的初始目标是构建一个具有一定泛化能力并且能够过拟合的模型。得到这样一个模型之后,你的重点将是通过降低过拟合来提高泛化能力。在这一阶段,你会遇到以下3种常见问题。
训练不开始:训练损失不随着时间的推移而减小。
训练开始得很好,但模型没有真正泛化:模型无法超越基于常识的基准。
训练损失和验证损失都随着时间的推移而减小,模型可以超越基准,但似乎无法过拟合,这表示模型仍然处于欠拟合状态。
我们来看一下如何解决这些问题,从而抵达机器学习项目的第一个重要里程碑:得到一个具有一定泛化能力(可以超越简单的基准)并且能够过拟合的模型。
调节关键的梯度下降参数
有时训练不开始,或者过早停止。损失保持不变。这个问题总是可以解决的——请记住,对随机数据也可以拟合一个模型。即使你的问题毫无意义,也应该可以训练出一个模型,不过模型可能只是记住了训练数据。
出现这种情况时,问题总是出在梯度下降过程的配置:优化器、模型权重初始值的分布、学习率或批量大小。所有这些参数都是相互依赖的,因此,保持其他参数不变,调节学习率和批量大小通常就足够了。我们来看一个具体的例子:训练MNIST模型,但选取一个过大的学习率(取值为1),如代码清单5-7所示。
代码清单5-7 使用过大的学习率训练MNIST模型
(train_images, train_labels), _ = mnist.load_data()train_images = train_images.reshape((60000, 28 * 28))train_images = train_images.astype("float32") / 255model = keras.Sequential([layers.Dense(512, activation="relu"),layers.Dense(10, activation="softmax")])model.compile(optimizer=keras.optimizers.RMSprop(1.),loss="sparse_categorical_crossentropy",metrics=["accuracy"])model.fit(train_images, train_labels,epochs=10,batch_size=128,validation_split=0.2)
这个模型的训练精度和验证精度很快就达到了30%~40%,但无法超出这个范围。下面我们试着把学习率降低到一个更合理的值1e-2,如代码清单5-8所示。
代码清单5-8 使用更合理的学习率训练同一个模型
model = keras.Sequential([layers.Dense(512, activation="relu"),layers.Dense(10, activation="softmax")])model.compile(optimizer=keras.optimizers.RMSprop(1e-2),loss="sparse_categorical_crossentropy",metrics=["accuracy"])model.fit(train_images, train_labels,epochs=10,batch_size=128,validation_split=0.2)
现在模型可以正常训练了。
如果你自己的模型出现类似的问题,那么可以尝试以下做法。降低或提高学习率。学习率过大,可能会导致权重更新大大超出正常拟合的范围,就像前面的例子一样。学习率过小,则可能导致训练过于缓慢,以至于几乎停止。增加批量大小。如果批量包含更多样本,那么梯度将包含更多信息且噪声更少(方差更小)。最终,你会找到一个能够开始训练的配置。
相关文章:
机器学习基础(4)
超越基于常识的基准 除了不同的评估方法,还应该利用基于常识的基准。训练深度学习模型就好比在平行世界里按下发射火箭的按钮,你听不到也看不到。你无法观察流形学习过程,它发生在数千维空间中,即使投影到三维空间中,…...
技术的魅力与价值
区块链技术正改变公益事业。它能极大提高公益透明度和公信力。通过区块链,每一笔捐款的流向都清晰可查,无法篡改,让捐赠者放心。比如某公益平台利用区块链记录捐赠信息,大家随时能看到善款使用情况。还有些项目用区块链追踪物资发…...
【报错】微信小程序预览报错”60001“
1.问题描述 我在微信开发者工具写小程序时,使用http://localhost:8080是可以请求成功的,数据全都可以无报错,但是点击【预览】,用手机扫描二维码浏览时,发现前端图片无返回且报错60001(打开开发者模式查看日…...
[数据结构]并查集--C++版本的实现代码
目录 并查集的基本框架 查找一个元素在哪一个集合 判断两个元素是否在同一个集合 将两个集合进行合并 查询有多少组 测试 大学班级的同学会来自于五湖四海,每个人的家乡可能都不相同,那么如何将相同省份的同学连接到一块,也就是按省份进…...
随机森林:强大的集成学习算法
引言 在机器学习领域,随机森林(Random Forest)是一种非常流行的集成学习算法。它通过构建多个决策树并将它们的结果进行集成,能够有效提高模型的准确性和鲁棒性。随机森林广泛应用于分类、回归、特征选择等任务,因其简…...
C# 实现 AI SSE (Server-Sent Events)接口方式输出(对接AI模型API)
以下是一个使用 C# 实现接收 SSE(Server-Sent Events)接口数据、进行数据修改解析,然后再以 SSE 方式输出给前端的示例代码。 using System; using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; using M…...
企业招聘能力提升之道:突破困境,精准纳才
企业招聘能力提升之道:突破困境,精准纳才 在企业运营的广袤版图中,招聘工作无疑是一块至关重要的拼图。然而,不少企业在这片领域中举步维艰,尽管投入了海量的时间与精力,收获的成果却不尽人意。面试环节仿…...
[数据结构]堆详解
目录 一、堆的概念及结构 二、堆的实现 1.堆的定义 2堆的初始化 3堆的插入 编辑 4.堆的删除 5堆的其他操作 6代码合集 三、堆的应用 (一)堆排序(重点) (二)TOP-K问题 一、堆的概念及结构 堆的…...
KafkaRocketMQ
Kafka 消息生产与消费流程 1. 消息生产 生产者创建消息: 指定目标 Topic、Key(可选)、Value。可附加 Header 信息(如时间戳、自定义元数据)。 选择分区(Partition): 若指定 Key&am…...
DeepSeek Kimi详细生成PPT的步骤
以下是使用 DeepSeek 和 Kimi 协作生成 PPT 的详细步骤,结合了两者的优势实现高效创作: 第一步:使用 DeepSeek 生成 PPT 大纲或内容 明确需求并输入提示词 在 DeepSeek 的对话界面中,输入具体指令,要求生成 PPT 大纲或…...
HTTP和HTTPS
一.介绍HTTP HTTP全称为超文本传输协议,是一种应用非常广泛的应用层协议。目前,主流使用的HTTP版本是HTTP1.1和HTTP2.0,在这边文章中,讨论的是HTTP1.1。 使用浏览器,打开手机上的APP或者是后端程序,都是分布…...
应急响应--流量分析
(一)Cobalt Strike流量特征分析 1.HTTP特征 源码特征: 在流量中,通过http协议的url路径,在checksum8解密算法计算后,32位的后门得到的结果是92,64位的后门得到的结果是93,该特征符…...
docker 学习
在docker中通常需要使用ADD等命令复制附件,同时也需要使用其他命令操作原始镜像中的内容,会导致原文文件被覆盖后缺少执行权限,比如: sqlmapapi: ERROR (file is not executable) 或者XXX: ERROR (file is not execu…...
C++时间复杂度详解
一、时间复杂度核心概念 1.1 为什么要研究时间复杂度 当处理大规模数据时(如计算斐波那契数列第57项),不同算法效率差异巨大: 递推解法:0.23秒完成 递归解法:需要2369秒(约40分钟)…...
【WPF】Slider滑动方法(INotifyPropertyChanged、ValueChanged )响应速度对比分析
一、Slider基础用法 在 XAML 中添加一个 Slider 控件,并设置其基本属性: <Slider Minimum"0" <!-- 最小值 -->Maximum"100" <!-- 最大值 -->Value"50" <!-- 初始值 -->Width&quo…...
PgSql 操作技巧
1、查询数据导出csv数据 \COPY (SELECT w.* from t_sys_warn w ) TO /home/cuadmin/warn_output.csv WITH CSV HEADER;2、导出sql Insert语句 pg_dump -U 用户名 -h 主机名 -p 端口号 -d 数据库名 --inserts -t 表名 > 导出文件.sqlpg_dump -U username -d dbname -t tabl…...
高效自动化测试:打造Python+Requests+Pytest+Allure+YAML的接口测试框架
一、背景 在快节奏的开发周期中,如何确保接口质量?自动化测试是关键。通过构建标准化、可复用的测试框架,能显著提升测试效率与准确性,为项目质量保驾护航[1][7]。 二、目标 ✅ 核心目标: ● 实现快速、高效的接口测试…...
设计模式文章汇总-Golang语言实现
Golang学习笔记_27——单例模式 Golang学习笔记_28——工厂方法模式 Golang学习笔记_29——抽象工厂模式 Golang学习笔记_30——建造者模式 Golang学习笔记_31——原型模式 Golang学习笔记_32——适配器模式 Golang学习笔记_33——桥接模式 Golang学习笔记_34——组合模式 Gola…...
深度学习PyTorch之13种模型精度评估公式及调用方法
深度学习pytorch之22种损失函数数学公式和代码定义 深度学习pytorch之19种优化算法(optimizer)解析 深度学习pytorch之4种归一化方法(Normalization)原理公式解析和参数使用 深度学习pytorch之简单方法自定义9类卷积即插即用 实时…...
c#面试题整理4
1.stirng str"",string strnull,俩者有何区别 空字符串占有存储控件,null不占用 2.class与struct的异同 异同class 可继承 引用类型 1.都可以定义方法字段 2.都可实例化,与类的使用几乎一样 struct 不可继承 值类型 只能声明带…...
游戏辅助技术培训班教程【A001-初级班】
课程概述: 本教程为游戏辅助技术培训班的初级班课程,本章为第二阶段,旨在帮助学员系统掌握游戏辅助技术的核心技能。课程内容从C/C编程基础到高级内存操作、代码注入、DLL注入及MFC编程,全面覆盖游戏辅助开发的关键知识点。 课程…...
[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】
题目: 发现id处可以sql注入: 虽然输入id1;show databases;#没什么回显,但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs:列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…...
SSTI注入笔记
文章目录 基础知识SSTI利用条件验证SSTI是否存在验证console码SSTI类引用机制过滤的绕过.被过滤下划线被过滤中括号被过滤过滤了{{过滤了单引号或者双引号过滤了数字关键字被过滤 基础知识 python的模块引用,优先引用当前目录下的模块,比如from pwn imp…...
大模型中的剪枝、蒸馏是什么意思?
环境: 剪枝 蒸馏 问题描述: 大模型中的剪枝、蒸馏是什么意思? 解决方案: 大模型的剪枝(Pruning)和蒸馏(Distillation)是两种常见的模型优化技术,用于减少模型的大小…...
AI学习记录 - PPO算法草稿
returns 下面是两种方式生成returns的值,第一种好一点 delta计算方式不一样 通过一些计算方式,将未来的一些计算值,赋予到前面去,从而影响将前面的token和后面的token绑定到一起,从而实现每当生成一个tokend…...
蓝桥杯FPGA-ds1302驱动
1. 驱动的作用 调用SPI底层驱动,实现DS1302的驱动 2. 关键程序代码说明 1. 独热编码设置状态机的状态 使用独热编码会使系统更加高效稳定 localparam IDLE 8b0000_0001; localparam CE_HIGH 8b0000_0010; localparam CE_LOW 8b0000_0100; localparam…...
探索C/C++的奥秘之list
list和我们之前讲的东西都一样,list第二个参数是一个空间配置器,是一个内存池, 底层是一个带头双向循环列表。list可以重载[],但是效率太低了。 list的遍历不能使用下标[],因为它的空间不是连续的,可以使用…...
Linux第六讲:进程控制
Linux第六讲:进程控制 1.进程创建1.1回顾fork1.2写时拷贝 2.进程终止2.1exit与_exit 3.进程等待3.1进程等待的方法(wait和waitpid) 4.进程程序替换4.1自定义shell的编写4.1.1输出命令行提示符4.1.2获取用户输入的命令4.1.3命令行分析4.1.4指令…...
LabVIEW基于双通道FFT共轭相乘的噪声抑制
对于双通道采集的含噪信号,通过FFT获取复数频谱后,对第二通道频谱取共轭并与第一通道频谱相乘,理论上可增强相关信号成分并抑制非相关噪声。此方法适用于通道间信号高度相关、噪声独立的场景(如共模干扰抑制)。以下为L…...
疯狂安卓入门,crayandroid
系列文章目录 文章目录 系列文章目录第一组 ViewGroup 为基类帧布局约束布局 第二组 TextView 及其子类button时钟 AnalogClock 和 TextClock计时器 第三组 ImageView 及其子类第四组 AdapterView 及其子类AutoCompleteTextView 的功能和用法ExapndaleListViewAdapterViewFlipp…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(10)
7.3. 查询计划相关操作符 88)Sequence Project:该操作符通过对一个排序集合增加字段来进行计算。其基于一个或多个字段的值将其输入的数据行分成多个段,这样,该操作符每次输出一个段,这些字段显示为该操作符的参数。该…...
【Matlab仿真】如何解决三相交流信号源输出波形失真问题?
问题描述 如标题所示,在搭建simulink模型过程中,明明模型搭建的没有问题,但是输出的波形却不是理想的正弦波,影响问题分析。 问题分析 以三相交流信号源输出波形为例,输出信号理应为三相正弦量,但是仿真…...
[含文档+PPT+源码等]精品基于Python实现的校园小助手小程序的设计与实现
基于Python实现的校园小助手小程序的设计与实现背景,可以从以下几个方面进行阐述: 一、技术背景 1. Python与Django框架的优势 Python作为一种高级编程语言,以其简洁的语法、丰富的库和强大的社区支持,在Web开发领域得到了广泛…...
Nginx(基础安装+配置文件)
目录 一.Nginx基础 1.基础知识点 2.异步非阻塞机制 二.Nginx安装 2.1安装nginx3种方式 1.包管理工具安装(yum/apt) 2.本地包安装(rpm/dpkg) 3.源码编译安装 3.1 源码编译安装nginx流程(ubuntu) 1.…...
el-table中slot=“header“和#header的区别
在<el-table>中,自定义表头单元格内容,可以用<templat slot"header">或者<templat #header>插入自定义表头内容,但如果表头中含有变量,比如<template slot"header">{{name}}</tem…...
S19文件格式详解:汽车ECU软件升级中的核心镜像格式
文章目录 引言一、S19文件格式的起源与概述二、S19文件的核心结构三、S19在汽车ECU升级中的应用场景四、S19与其他格式的对比五、S19文件实例解析六、工具链支持与安全考量七、未来趋势与挑战结语引言 在汽车电子控制单元(ECU)的软件升级过程中,S19文件(也称为Motorola S-…...
鸿蒙跨平台框架ArkUI-X
01 引言 目前,移动端主流跨平台方案有Flutter、React Native、uni-app等等,还有刚推出不久的Compose-Multiplatform,真所谓是百花齐放。这些框架各有特点,技术实现各有差异,比如Flutter通过Dart编写的UI描述对接Flutte…...
群晖DS223 Docker搭建为知笔记
群晖DS223 Docker搭建为知笔记,打造你的专属知识宝库 一、引言 在数字化信息爆炸的时代,笔记软件成为了我们管理知识、记录灵感的得力助手。为知笔记,作为一款专注于工作笔记和团队协作的云笔记产品,以其丰富的功能和便捷的使用体…...
FPGA入门教程
引言 FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种灵活且强大的硬件设备,广泛应用于数字电路设计、信号处理、嵌入式系统等领域。与传统的ASIC(专用集成电路)不同,FPGA允许用户…...
DR和BDR的选举规则
在 OSPF(开放最短路径优先)协议中,DR(Designated Router,指定路由器) 和 BDR(Backup Designated Router,备份指定路由器) 的选举是为了在广播型网络(如以太网…...
无需环境,直接用 Docker 来启动你的 Python 项目
大家好 我是洪峰 想象这样一种场景,你写好了代码,准备部署在新的服务器上,这台服务器只有 Python2 和 Python3.6,没有你代码适配好的 Python3.12,那怎么办? 1、编译安装 Python,我不推荐这种方…...
STM32之BKP
VBAT备用电源。接的时候和主电源共地,正极接在一起,中间连接一个100nf的电容。BKP是RAM存储器。 四组VDD都要接到3.3V的电源上,要使用备用电池,就把电池正极接到VBAT,负极跟主电源共地。 TEMPER引脚先加一个默认的上拉…...
【08】单片机编程核心技巧:变量命名规范
【08】单片机编程核心技巧:变量命名规范 (基于单片机开发实践,适用于 C/C 语言) 📌 核心原则 1️⃣ 清晰性:通过前缀、后缀、大小写区分变量类型、作用域、数据宽度等。 2️⃣ 一致性:同一项…...
JVM、MySQL常见面试题(尽力局)
JVM篇 一.谈一谈JDK、JRE、JVM分别是什么,有什么联系? 1.JDK是Java工具包,里面包含了JRE、Javac编译器等。 2.JRE是java运行环境,里面包含了JVM、JavaSE标准库类等。 3.JVM是Java虚拟机,运行编译后的.class的文件&am…...
Pytorch 转向TFConv过程中的卷积转换
转换知识基础 图像中使用的卷积一般为,正方形卷积核针对一个同等面积邻域的,进行相乘后邻域叠加到中心,相当于考虑中心像素的周围信息,做了一定的信息融合。 卷积相关参数 卷积前: input c1 卷积中: kernel 卷积核 stride 步…...
基于LabVIEW的伺服阀高频振动测试闭环控制系统
为实现伺服阀在设定位置上下快速移动(1kHz控制频率)的振动测试目标,需构建基于LabVIEW的闭环控制系统。系统需满足高速数据采集、实时控制算法(如PID或自适应控制)、高精度电流驱动及传感器反馈处理等需求。结合用户提…...
QQuick3D-Camera的介绍
QQuick3D-Camera的介绍 Camera的概述 Camera类继承于 Node;Camera定义了怎样将一个3D场景(Scene)投影到2D的表面上;一个场景至少需要一个Camera来可视化其内容。 Camera 可以像场景中任何节点一样,被定位和旋转&…...
django下防御race condition漏洞(竞争型漏洞)
目录 竞争型漏洞 概念 常见类型及示例 环境搭建 编辑漏洞复现 ucenter/1/ ucenter/2/ ucenter/3/ ucenter/4/ 总结 悲观锁 乐观锁 竞争型漏洞 概念 竞争型漏洞,也称为竞态条件漏洞(Race Condition Vulnerability),…...
【测试框架篇】单元测试框架pytest(4):assert断言详解
一、前言 用例三要素之一就是对预期结果的断言。 何为断言?简单来说就是实际结果和期望结果去对比,符合预期就测试pass,不符合预期那就测试 failed。断言内容就是你要的预期结果。断言包含对接口响应内容做断言、也包含对落DB的数据做断言。…...
多视图几何--结构恢复--三角测量
三角测量 1. 核心公式推导 假设两个相机的投影矩阵为 P P P 和 P ′ P P′,对应的匹配图像点(同名点)为 ( u , v ) (u, v) (u,v) 和 ( u ′ , v ′ ) (u, v) (u′,v′),目标是求解三维点 X [ X x , X y , X z , 1 ] T X [X_x, X_y, X_z, 1]^T X…...