当前位置: 首页 > news >正文

02.机器学习原理(复习)

目录

  • 机器学习的本质
  • 机器学习的类型
    • Regression/回归
    • Classification/分类
    • Structured Learning/结构化学习
  • ML的三板斧
    • 设定范围
    • 设定标准
      • 监督学习
      • 半监督学习
      • 其他
    • 达成目标
    • 小结
      • 达成目标
      • 设定标准
      • 设定范围

部分截图来自原课程视频《2023李宏毅最新生成式AI教程》,B站自行搜索

这节课主要是复习,但是里面有些结论可以加深对ML和DL的理解。

机器学习的本质

让机器自动寻找 计算出一个函数,这个函数能完成我们既定的目标。例如:
ChatGPT是找一个函数能够完成下一个字/词的预测。
在这里插入图片描述

Midjourney是找一个函数根据文字内容生成对应图片。(PS:中间有一节课是用ChatGPT+Midjourney玩虚拟冒险游戏,演示为主)
在这里插入图片描述
AlphaGo是找一个函数根据当前棋局预测下一步落子位置。
在这里插入图片描述

机器学习的类型

Regression/回归

函数输出为一个数值。典型的任务有NG的房价预测、这个前导课中的PM2.5预测等。
在这里插入图片描述

Classification/分类

函数输出为一个类别。典型任务有,垃圾邮件识别、银行贷款审批、手写数字识别等。
在这里插入图片描述

Structured Learning/结构化学习

函数的输出是有结构的物件(影像、图片、文字、声音等)
这个类别不属于上面两类传统机器学习的分类,这个类别更加复杂。Structured Learning发展到今天也有了更潮的称呼:Generative Learning生成式学习。Structured Learning在早期李宏毅的机器学习课程中是单独的一个部分。

对于ChatGPT而言,在微观上,每一次预测下一个字/词,相当于在做分类任务,只不过类别就是我们的词库中所有的字/词;在宏观上,当我们使用ChatGPT的时候,他一次会输出一段文字,又可以看成是生成式的学习。

结论:ChatGPT是把生成式学习拆解成多个分类问题来解决。

ML的三板斧

看到这里又梦回20年刷到机器学习课程的时候,可惜一直没有玩过宝可梦游戏,不然理解会更加深刻。
不过这次回顾讲解更加精简明的描述了机器学习找到梦中情function的过程。

前提
开始之前要决定找什么样的函数。这是一个与技术无关的问题,就是根据需要定下来函数是属于上面三种类型的哪一类,下面以回归为例,吃图片预测其战斗力数值。
在这里插入图片描述

设定范围

设定范围就是选定Model(候选函数的集合)。
DL中的各种模型结构(CNN,RNN,Transformer等)或者各种决策树、感知机等都是各种不同的候选函数的集合。例如我们选定某个结构后,使用四种不同的参数,对于相同的输入,就可以得到不同的结果:
在这里插入图片描述
当然参数有无数种可能,我们把某个DL模型的不同参数所形成的函数集合记为: H \mathcal{H} H
这里涉及到函数空间等原理,需要了解的可以看之前的课程。

设定标准

设定Loss(评价函数好坏的标准),以宝可梦战斗力预测任务来举例。现假设有一个函数 f 1 f_1 f1,对三只宝可梦进行预测结果如下:
在这里插入图片描述
然后根据数据标记方式不同,又分两种情况进行讨论:

监督学习

此时有专业人员对宝可梦实际战斗力进行标注:
在这里插入图片描述
此时我们可以对函数 f 1 f_1 f1计算结果的正确程度进行计算Loss:
L ( f 1 ) = ∣ 103 − 101 ∣ + ∣ 17 − 18 ∣ + ∣ 212 − 200 ∣ = 2 + 1 + 12 = 15 L(f_1)=|{\color{Blue}103}-101|+|{\color{Blue}17}-18|+|{\color{Blue}212}-200|=2+1+12=15 L(f1)=103101∣+1718∣+212200∣=2+1+12=15
PS: L L L称为损失函数,上面宝可梦的战斗力称为训练数据。这里为了简单就直接算,实操会更加复杂,要根据具体训练数据来拟定损失函数,例如是否要加正则项、是否对差值进行平方等。

半监督学习

此时只有部分宝可梦的战斗力得到标注,例如下面只有一只有标注,其他没有:
在这里插入图片描述
对于有标注的数据,可以按监督学习的方法进行计算Loss,对于其他可以自己制定相应规则,例如:规定外形相似的宝可梦战斗力应该一致。
但是 f 1 f_1 f1函数对于两个皮卡丘的输出如下:
在这里插入图片描述
二者差异为81,因此可以得到 f 1 f_1 f1函数的Loss为:
L ( f 1 ) = ∣ 103 − 101 ∣ + 98 − 17 = 83 L(f_1)=|{\color{Blue}103}-101|+98-17=83 L(f1)=103101∣+9817=83
当然规则是人定的,也可以定相同颜色的宝可梦战斗力一样。。。
如何定规则?当然也是要根据训练数据来。

其他

当然还有其他中训练方式,例如:强化学习,无监督学习

达成目标

找到最优的函数(Optimization),自觉上,当然是Loss最小的那个函数就是最优:
f ∗ = a r g min ⁡ f ∈ H L ( f ) f^*=arg\min_{f\in\mathcal{H}}L(f) f=argfHminL(f)
例如:
在这里插入图片描述
当然具体实作中找最优函数可以看做求Loss最小值的过程,由于Loss函数通常是多项式,那么找到多项式最小值常用的方法就是GD,而对于DL而言,BP就是正解。当然还有类似遗传算法等其他方法可以找到最优函数。

小结

步骤含义方法
设定范围选定候选函数的集合DL(CNN, RNN, Transformer), Decision Tree, Perceptron, etc.
设定标准选定评价函数好坏的标准Supervised Learning, Semi-supervised Learning, Unsupervised Learning, RL, etc.
达成目标找到最优的函数Gradient Descent(Adam, AdamW…), Back Propagation, Genetic Algorithm, etc.

好好看上面的表格可以更加深入理解很多概念,例如:RL会取代DL,这个说法是不正确的,两个方法属于不同的步骤,谈不上谁取代谁。
还可以在写论文的时候从不同的出发点来寻找创新idea。
这里有把三个步骤从后往前重新分析了一遍。

达成目标

在这里插入图片描述
可以把大大的长方形看做是一个函数,这个函数吃候选函数集合 H \mathcal{H} H和评定函数 L L L得到一个函数 f ∗ f^* f,该函数属于 H \mathcal{H} H,并且可以使得 L L L的值越小越好(这里不是最小,因为可能是局部最小值)
当然,这个长方形函数比较复杂,需要我们预先设定一些超参数(Hyperparameter):Learning Rate、Batch Size、How to Init。当然我们也希望长方形函数的鲁棒性很强,对这些超参数不这么敏感。

设定标准

在这里插入图片描述
从训练数据中根据评定函数 L L L找出 f ∗ f^* f,当然在训练数据上表现比较好的 f ∗ f^* f在测试数据上表现不一定好,这可能是因为训练数据与测试数据不是相同分布的。
我们可以在训练阶段在评定函数 L L L中加入额外考量:正则化。(就好比平时练习使用难度较高的卷子,考试题目虽然没有见过也大概率拿高分)

设定范围

为什么要设定候选函数的范围,而不把覆盖所有向量空间的函数作为我们的范围呢?因为有些函数训练结果好但测试效果差(过拟合)。
在这里插入图片描述
因此我们要划定范围将那些容易过拟合的函数排除在外。当我们设定范围太大就会将过拟合的函数包含进来(最大椭圆),如果设定范围太小,又会将正好拟合的函数排除在外(最小椭圆)。
主要还是根据数据量来看,数据量大,范围可以大一些,例如在图像上的研究趋势看,早期数据量小,因此采用CNN结构,后来数据量变大后,就开始引入Transformer结构,Transformer结构的范围正是要比CNN结构的范围大。

还有一些特殊的方法,例如下图中残差网络,虽然这个结构包含的范围可能不咋地,但是这个结构很容易找出 f ∗ f^* f
在这里插入图片描述
同理,在损失函数上,使用交叉熵比使用平方差的方式要更容易达成目标。

相关文章:

02.机器学习原理(复习)

目录 机器学习的本质机器学习的类型Regression/回归Classification/分类Structured Learning/结构化学习 ML的三板斧设定范围设定标准监督学习半监督学习其他 达成目标小结达成目标设定标准设定范围 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》,B站自行搜…...

电源集成INN3270C-H215-TL、INN3278C-H114-TL、INN3278C-H215-TL简化了反激式电源转换器的设计和制造。

一、概述 InnoSwitch™3-CP系列IC极大地简化了反激式电源转换器的设计和制造,特别是那些需要高效率和/或紧凑尺寸的产品。InnoSwitch3-CP系列将初级和次级控制器以及安全额定反馈集成到单个IC中。 InnoSwitch3-CP系列器件集成了多种保护功能,包括线路过…...

UE4和C++ 开发--HUD类

HUD 平视显示器(Head Up Display),简称HUD。在蓝图中是指在屏幕上面绘制的二维物体。 1. 创建HUD 打开蓝图编辑器,创建一个蓝图类,搜索HUD,选择并命名BP_HUD。 2. 开始绘制 打开事件列表,右键搜索 EventReceive Draw HUD。有两…...

使用js怎么设置视频背景

要使用JavaScript设置网页的视频背景&#xff0c;你需要将视频元素添加到你的HTML文档中&#xff0c;然后使用JavaScript来控制它 首先&#xff0c;在你的HTML文件中添加一个 <video> 元素 <video id"video-background" autoplay muted loop><sourc…...

Gin,Gorm实现Web计算器

目录 仓库链接0.PSP表格1. 成品展示1.基础运算2. 清零回退3.错误提示4.历史记录拓展功能1.前端可修改的利率计算器2.科学计算器3. 按钮切换不同计算器模式4.用户在一次运算后不清零继续输入操作符&#xff0c;替换表达式为上次答案 2.设计实现过程3.代码说明4.心路历程和收获 仓…...

11-网络篇-DNS步骤

1.URL URL就是我们常说的网址 https://www.baidu.com/?from1086k https是协议 m.baidu.com是服务器域名 ?from1086k是路径 2.域名 比如https://www.baidu.com 顶级域名.com 二级域名baidu 三级域名www 3.域名解析DNS DNS就是将域名转换成IP的过程 根域名服务器&#xff1a…...

设计师都应该知道的事:极简主义家具该怎么去用

这座房子有黑暗而沉重的特征&#xff0c;包括棕色和白色的马赛克浴室瓷砖&#xff0c;弯曲的锻铁壁灯和土黄色的威尼斯石膏墙。但由于房屋与他们的风格相去甚远&#xff0c;白色&#xff0c;干净和简约&#xff0c;接下来我们就着这个方向去帮助房主进行改造。 她解释说&#x…...

设计模式02———建造者模式 c#

首先我们打开一个项目 在这个初始界面我们需要做一些准备工作 建基础通用包 创建一个Plane 重置后 缩放100倍 加一个颜色 更换天空盒&#xff08;个人喜好&#xff09; 任务&#xff1a;使用【UI】点击生成6种车零件组装不同类型车 【建造者模式】 首先资源商店下载车模型 将C…...

2023最新接口自动化测试面试题

1、get和post的区别&#xff1f; l http是上层请求协议&#xff0c;主要定义了服务端和客户端的交互规格&#xff0c;底层都是tcp/ip协议 l Get会把参数附在url之后&#xff0c;用&#xff1f;分割&#xff0c;&连接不同参数&#xff0c;Get获取资源&#xff0c;post会把…...

GaN器件的工作原理

目录 AlGaN/GaNHEMT 器件工作原理&#xff08;常开-耗尽型器件&#xff09;常关 AlGaN/GaN 功率晶体管&#xff08;增强型器件&#xff09;HD-GIT与SP-HEMT AlGaN/GaNHEMT 器件工作原理&#xff08;常开-耗尽型器件&#xff09; 来源&#xff1a;毫米波GaN基功率器件及MMIC电路…...

点云从入门到精通技术详解100篇-海量三维点云的空间索引及可视化应用(续)

目录 3.2.3 方向八叉树与八叉树的比较 3.3 多级索引结构 3.3.1 多级索引结构的构建...

androidx和v4包资源冲突解决方法

一、资源包会报如下错误&#xff1a; 错误类似 (androidx.core:core:1.10.0) 和 (com.android.support:support-compat:24.2.0) 表示资源重复&#xff0c;不知调用androidx包下面的&#xff0c;还是v4包下面的 Duplicate class android.support.v4.app.INotificationSideCha…...

【发烧期间随笔】第一次游戏开发经历的总结与反思

一、前言 这两天三阳了&#xff0c;头疼头晕恶心发烧打喷嚏流鼻涕咳嗽嗓子疼气管疼都找上门来了&#xff0c;这导致一周以来都没学什么东西&#xff0c;无意间又刷到各个游戏厂关于本人目标岗位HC骤减且要求造火箭的能力的消息&#xff0c;这两天一直是在病痛和焦虑中度过的&a…...

CCombBox组合框

1、 MFC_Combo_Box(组合框)的详细用法_mfc combo-CSDN博客 2、 常用属性设置&#xff1a; 属性 含义 data 设置内容&#xff0c;不同内容间用英文的分号“;”分隔 type 显示风格 Sort True 内容自动排序 常用接口&#xff1a; 接口 功能 CComboBox::AddString 组…...

机器学习-有监督学习-神经网络

目录 线性模型分类与回归感知机模型激活函数维度诅咒过拟合和欠拟合正则数据增强数值稳定性神经网络大家族CNNRNNGNN&#xff08;图神经网络&#xff09;GAN 线性模型 向量版本 y ⟨ w , x ⟩ b y \langle w, x \rangle b y⟨w,x⟩b 分类与回归 懂得两者区别激活函数&a…...

React之组件通信

#一、是什么 我们将组件间通信可以拆分为两个词&#xff1a; 组件通信 回顾Vue系列 (opens new window)的文章&#xff0c;组件是vue中最强大的功能之一&#xff0c;同样组件化是React的核心思想 相比vue&#xff0c;React的组件更加灵活和多样&#xff0c;按照不同的方式可…...

什么是微服务架构

阅读“微服务架构”一词可能会让您直观地了解该术语的含义&#xff1a;计算架构中的小型服务。这个定义并不完全错误&#xff0c;但也不完全正确。 微服务架构通常被称为“打破整体”的一种方式。遗憾的是&#xff0c;这与《2001&#xff1a;太空漫游》无关&#xff0c;而是将…...

<%=%>模板写法

<%%> 这种写法通常称为 "内嵌式模板" 或 "模板标记"&#xff0c;在前端开发中&#xff0c;这种标记语法用于将动态数据嵌入HTML模板中。这种写法通常与模板引擎一起使用&#xff0c;这些模板引擎会根据提供的数据动态生成HTML。 不同的模板引擎可能…...

python爬取boss直聘数据(selenium+xpath)

文章目录 一、主要目标二、开发环境三、selenium安装和驱动下载四、主要思路五、代码展示和说明1、导入相关库2、启动浏览器3、搜索框定位创建csv文件招聘页面数据解析(XPATH)总代码效果展示 六、总结 一、主要目标 以boss直聘为目标网站&#xff0c;主要目的是爬取下图中的所…...

GEO生信数据挖掘(六)实践案例——四分类结核病基因数据预处理分析

前面五节&#xff0c;我们使用阿尔兹海默症数据做了一个数据预处理案例&#xff0c;包括如下内容&#xff1a; GEO生信数据挖掘&#xff08;一&#xff09;数据集下载和初步观察 GEO生信数据挖掘&#xff08;二&#xff09;下载基因芯片平台文件及注释 GEO生信数据挖掘&…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...