李宏毅机器学习课程学习笔记04 | 浅谈机器学习-宝可梦、数码宝贝分类器
文章目录
- 案例:宝可梦、数码宝贝分类器
- 第一步:需要定义一个含有未知数的function
- 第二步:loss of a function
- 如何Sample Training Examples => 如何抽样可以得到一个较好的结果
- 如何权衡模型的复杂程度 Tradeoff of Model Complexity
todo
这里主要讲了如果挑选训练数据集,后续的内容在
,等之后看到这里再补充笔记
案例:宝可梦、数码宝贝分类器
案例:需要找一个函数,输入一个动物,输出类别宝可梦还是数码宝贝
第一步:需要定义一个含有未知数的function
先对资料做一些观察,想象一下function应该长什么样。
观察发现①数码宝贝的线条比较复杂②宝可梦的线条比较简单 => 根据线条风格区分
使用一些工具包做Edge detection
边缘检测后,将图片隐射成黑白,白色的为边缘,输出白色像素点的个数。白色像素点的个数超过某个阈值,说明线条复杂。
这个阈值h是一个未知参数,我们先假设函数只有这一个未知参数。
第二步:loss of a function
首先需要数据集D,loss根据数据集D算出
1.有数据集 D = { ( x 1 , y ^ 1 ) , . . . . , ( x n , y ^ n ) } D=\{(x^1,\hat{y}^1),....,(x^n,\hat{y}^n)\} D={(x1,y^1),....,(xn,y^n)},n表示第几个资料
x x x:输入宝可梦或者数码宝贝的图片
y ^ \hat y y^: 该图是宝可梦还是数码宝贝
2.先随机给个阈值h,然后根据资料D计算参数h的loss
数据集的损失L(h,D):输入阈值h和数据集D,输出错误率
每一笔资料的loss l ( h , x n , y ^ n ) ) l(h,x^n,\hat{y}^n)) l(h,xn,y^n)):h是f的参数,输入xn,输出yn,比较model值与真实值是否相等,不相等就输出0,相等就输出1
Error rate 很直观。也可以选择使用cross-entropy
如何Sample Training Examples => 如何抽样可以得到一个较好的结果
理想情况:假设我们可以收集所有的宝可梦和数码宝贝,其集合为 D a l l D_{all} Dall。我们找到了最好的阈值 h a l l h^{all} hall, h a l l = a r g min h L ( h , D a l l ) h^{all} = arg\min_hL(h,D_{all}) hall=argminhL(h,Dall)
这里的损失函数不可以微分,所以没办法用梯度下降方法。但是h的个数其实是有限的,可以通过穷举的方法找出使损失函数值最小的阈值h。
事实情况:我们只能收集到 D a l l D_{all} Dall中的部分案例 D t r a i n D_{train} Dtrain(从all中随机抽样出来的案例,案例符合独立同分布), D t r a i n = { ( x 1 , y ^ 1 ) , . . . . , ( x n , y ^ n ) } D_{train}=\{(x^1,\hat{y}^1),....,(x^n,\hat{y}^n)\} Dtrain={(x1,y^1),....,(xn,y^n)}。可以找到 h t r a i n = a r g min h L ( h , D t r a i n ) h^{train} = arg\min_hL(h,D_{train}) htrain=argminhL(h,Dtrain)
希望现实情况的 h t r a i n h^{train} htrain在所有数据集中的表现和 h a l l h^{all} hall在所有数据集中的表现越接近越好。
不同的 D t r a i n D_{train} Dtrain训练出来出来的 h t r a i n h^{train} htrain不同,这里 h t r a i n h^{train} htrain在所有数据集中的表现很依赖训练h时Sample到的数据集。
问题:我们希望 L ( h t r a i n , D a l l ) − L ( h a l l , D a l l ) ≤ δ L(h^{train},D_{all}) - L(h^{all},D_{all}) \leq \delta L(htrain,Dall)−L(hall,Dall)≤δ,什么样的 D t r a i n D_{train} Dtrain训练出来的 h t r a i n h^{train} htrain可以满足这个期望?
h a l l h^{all} hall是从 D a l l D_{all} Dall中找出来让 L ( h a l l , D a l l ) L(h^{all},D_{all}) L(hall,Dall)最小的值,所以 L ( h t r a i n , D a l l ) L(h^{train},D_{all}) L(htrain,Dall)是大于等于 L ( h a l l , D a l l ) L(h^{all},D_{all}) L(hall,Dall)。
不过 L ( h t r a i n , D t r a i n ) L(h^{train},D_{train}) L(htrain,Dtrain)是有可能小于 L ( h a l l , D a l l ) L(h^{all},D_{all}) L(hall,Dall)。
解:Smaple
出来的资料 D t r a i n D_{train} Dtrain,穷举所有可能的h(从1到10000),任意h满足 ∣ L ( h , D t r a i n ) − L ( h , D a l l ) ∣ ≤ δ 2 |L(h,D_{train}) - L(h,D_{all})| \leq \frac{\delta}{2} ∣L(h,Dtrain)−L(h,Dall)∣≤2δ,理想和显示就会很接近。 => D t r a i n D_{train} Dtrain与 D a l l D_{all} Dall分布很像。
问题:有多大的可能性Sample
出来一个bad D t r a i n D_{train} Dtrain
- 以下的讨论与模型无关
- 以下的讨论对资料本来的分布无假设
- 以下的讨论可以使用任何loss function
每一个坏的资料,背后都存在一个h使得 ∣ L ( h , D t r a i n ) − L ( h , D a l l ) ∣ > ϵ |L(h,D_{train}) - L(h,D_{all})| \gt \epsilon ∣L(h,Dtrain)−L(h,Dall)∣>ϵ => P ( D t r a i n i s b a d ) = ∪ h ∈ H P ( D t r a i n i s b a d d u e t o h ≤ ∑ h ∈ H P ( D t r a i n i s b a d d u e t o h ) P(D_{train} \ is \ bad) = \cup_{h \in \Eta} P(D_{train} \ is \ bad \ due \ to \ h\leq \sum_{h\in \Eta} P(D_{train} \ is \ bad \ due \ to \ h) P(Dtrain is bad)=∪h∈HP(Dtrain is bad due to h≤∑h∈HP(Dtrain is bad due to h)重叠的地方会多次被计算
由最后的式子可知, ∣ H ∣ |H| ∣H∣是候选项h的数量,N是所选数据集 D t r a i n D_{train} Dtrain里资料的个数
- 增加训练样本数量,N越大 D t r a i n D_{train} Dtrain越接近 D a l l D_{all} Dall, P ( D t r a i n i s b a d ) P(D_{train} \ is \ bad) P(Dtrain is bad)的概率越小。
- 较少模型复杂性,|H|候选项的数目越小,较少模型的复杂程度, P ( D t r a i n i s b a d ) P(D_{train} \ is \ bad) P(Dtrain is bad)的概率越小。
其实这些理论只是用来试图解释原理,但并没有人用在实际数据集中真正计算,因为计算的结果往往会大于1
最小样本量应该满足以下式子
问题:本案例中h的取值是离散的,所以 ∣ H ∣ |H| ∣H∣是个确定值。当h取值是连续的, ∣ H ∣ |H| ∣H∣是一个无穷 ,那 P ( D t r a i n i s b a d ) P(D_{train} \ is \ bad) P(Dtrain is bad)永远小于无穷大,那式子还有什么意思?
回答
- 在计算机中没有真正连续的东西,用计算机中的bit描述数值时,精度终究是有限的(所以就不是无穷的)。
VC-dimension
另外一种计算参数是连续时模型的复杂程度
如何权衡模型的复杂程度 Tradeoff of Model Complexity
理论上,理想与现实接近的方法
- 增加训练样本数量,N越大 D t r a i n D_{train} Dtrain越接近 D a l l D_{all} Dall, P ( D t r a i n i s b a d ) P(D_{train} \ is \ bad) P(Dtrain is bad)的概率越小。
- 较少模型复杂性,|H|候选项的数目越小,较少模型的复杂程度, P ( D t r a i n i s b a d ) P(D_{train} \ is \ bad) P(Dtrain is bad)的概率越小。
问题:|H|太小会导致什么问题?模型复杂程度太小会导致什么问题?
|H|太小,能选择的h数量太少,可能找不到使 L ( h , D a l l ) L(h,D_{all}) L(h,Dall)最小的h。(大海捞针,针不在大海)
收集数据集中案例的个数N通常不是我们能控制的,可能想采用小的|H|来让理想和现实更接近。
=> 小的|H|会导致可选择的参数h数量变少,导致最优的 h a l l h^{all} hall在可选范围之外,也就是说得到一个较大的 L ( h a l l , D a l l ) L(h^{all},D_{all}) L(hall,Dall)
相关文章:

李宏毅机器学习课程学习笔记04 | 浅谈机器学习-宝可梦、数码宝贝分类器
文章目录 案例:宝可梦、数码宝贝分类器第一步:需要定义一个含有未知数的function第二步:loss of a function如何Sample Training Examples > 如何抽样可以得到一个较好的结果如何权衡模型的复杂程度 Tradeoff of Model Complexity todo 这…...

AIGC(生成式AI)试用 26 -- 跟着清华教程学习 - DeepSeek与AI幻觉
目标:继续学习 个人理解: - AI幻觉:一本正经的胡说八道,你还觉得很道理,倾向于相信;事实不一致,指令(预期)与实际不一致:跑题 - 潜在风险:把AI带坏了;信息误…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump
ngx_conf_add_dump 定义在src\core\ngx_conf_file.c static ngx_int_t ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename) {off_t size;u_char *p;uint32_t hash;ngx_buf_t *buf;ngx_str_node_t *sn;ngx_conf_dump_t *cd;has…...
QEMU源码全解析 —— 内存虚拟化(23)
接前一篇文章:QEMU源码全解析 —— 内存虚拟化(22) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 QEMU内存管理模型...

【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第1章 体验OpenHarmony—烧写镜像
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…...
TypeScript 类型声明
在 TypeScript 开发中简化类型声明,可以通过以下 7 种实用技巧 显著提升效率: 一、善用类型推断(30% 场景免声明) // ❌ 冗余写法 const user: { name: string; age: number } { name: Jack, age: 25 };// ✅ 自动推断ÿ…...

从0搭建Tomcat第二天:深入理解Servlet容器与反射机制
在上一篇博客中,我们从0开始搭建了一个简易的Tomcat服务器,并实现了基本的HTTP请求处理。今天,我们将继续深入探讨Tomcat的核心组件之一——Servlet容器,并介绍如何使用反射机制动态加载和管理Servlet。 1. Servlet容器的作用 S…...
【Python】yield函数
【Python】yield函数 1. yield介绍2.yield基本用法3.yield高级用法3.1 yield send() 方法3.2 yield from方法3.3 yield 和yield from叠加处理复杂情况下的叠加 4.yield主要应用场景5.总结 python官方api地址 1. yield介绍 在Python中,yield关键字主要用于生成器函…...
Android13修改多媒体默认音量
干就完了! 设置音量为最大音量,修改如下: /framework/base/media/java/android/media/AudioSystem.java/** hide */public static int[] DEFAULT_STREAM_VOLUME new int[] {4, // STREAM_VOICE_CALL7, // STREAM_SYSTEM5, // STREAM_RING-5, // STREAM_MUSIC15, // STREAM…...
nginx+keepalived负载均衡及高可用
一、环境准备 主机名ip地址备注openEuler-1 192.168.121.11(本机) 192.168.131.11(心跳连接) nginx主负载均衡调度器openEuler-2 192.168.121.12(本机) 192.168.131.12(心跳连接) n…...

SP导入智能材质球
智能材质球路径 ...\Adobe Substance 3D Painter\resources\starter_assets\smart-materials 放入之后就会自动刷新...
Kotlin语言特性(一):空安全、扩展函数与协程
Kotlin语言特性(一):空安全、扩展函数与协程 一、引言 Kotlin作为Android官方推荐的开发语言,相比Java具有诸多现代化特性。本文将重点介绍Kotlin三个最具特色的语言特性:空安全、扩展函数和协程,并结合A…...

Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接
官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…...

Python 爬虫 – BeautifulSoup
Python 爬虫(Web Scraping)是指通过编写 Python 程序从互联网上自动提取信息的过程。 爬虫的基本流程通常包括发送 HTTP 请求获取网页内容、解析网页并提取数据,然后存储数据。 Python 的丰富生态使其成为开发爬虫的热门语言,特…...

【星云 Orbit-STM32F4】07. 用判断数据尾来接收据的串口通用程序框架
【星云 Orbit-STM32F4】用判断数据尾来接收一串数据的串口通用程序框架 摘要 本文介绍了一种基于STM32F407微控制器的串口数据接收通用程序框架。该框架通过判断数据尾来实现一串数据的完整接收,适用于需要可靠数据传输的应用场景。本文从零开始,详细讲…...
授权与认证之jwt(一)创建Jwt工具类
JWT的Token要经过加密才能返回给客户端,包括客户端上传的Tokn,后端项目需要验证核 实。于是我们需要一个WT工具类,用来加密Token和验证Token的有效性。 一、导入依赖 <dependency><groupId>com.auth0</groupId><artifactId>jav…...
Kubernetes Service服务发现dns之CoreDNS
文章目录 背景什么是Service、服务发现、Endpoint什么是CoreDNSCoreDNS 的工作原理 常用命令coredns 运行状态根据服务名,判断某个服务dns解析是否正常 背景 Kubernetes 集群内部的服务发现是微服务架构的核心基础,而 DNS 服务则是实现这一机制的关键组…...

Spring Boot 测试:单元、集成与契约测试全解析
一、Spring Boot 分层测试策略 Spring Boot 应用采用经典的分层架构,不同层级的功能模块对应不同的测试策略,以确保代码质量和系统稳定性。 Spring Boot 分层架构: Spring Boot分层架构 A[客户端] -->|HTTP 请求| B[Controller 层] …...

用友NC系列漏洞检测利用工具
声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 目录标题 YongYouNcTool启动及适配环境核心功能界面预览一键检测命令执…...
PostgreSQL 创建表格
PostgreSQL 创建表格 在数据库管理中,表格(Table)是数据存储的基础。PostgreSQL作为一款强大的开源对象关系型数据库管理系统(ORDBMS),创建表格是其最基本的功能之一。本文将详细讲解如何在PostgreSQL中创…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...