李宏毅机器学习课程学习笔记04 | 浅谈机器学习-宝可梦、数码宝贝分类器

文章目录

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的参数,输入x^n^,输出y^n^,比较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里资料的个数

  1. 增加训练样本数量,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)的概率越小。
  2. 较少模型复杂性,|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)永远小于无穷大,那式子还有什么意思?

回答

  1. 在计算机中没有真正连续的东西,用计算机中的bit描述数值时,精度终究是有限的(所以就不是无穷的)。
  2. VC-dimension另外一种计算参数是连续时模型的复杂程度
如何权衡模型的复杂程度 Tradeoff of Model Complexity

理论上,理想与现实接近的方法

  1. 增加训练样本数量,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)的概率越小。
  2. 较少模型复杂性,|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)

相关推荐
屁股割了还要学18 分钟前
【计算机网络入门】初学计算机网络(五)
学习·计算机网络·考研·青少年编程
屁股割了还要学25 分钟前
【计算机网络入门】初学计算机网络(七)
网络·学习·计算机网络·考研·青少年编程
Sol-itude2 小时前
【文献阅读】Collective Decision for Open Set Recognition
论文阅读·人工智能·机器学习·支持向量机
一天八小时2 小时前
计算机网络学习————(五)TCP/IP学习
学习·tcp/ip·计算机网络
tt5555555555553 小时前
每日一题——接雨水
数据结构·笔记·学习·算法
熊猫烧竹3 小时前
【量化金融自学笔记】--开篇.基本术语及学习路径建议
笔记·学习·金融
lihuhelihu4 小时前
精神分裂症患者GAF评分的可视化分析|使用集成学习模型 LightGBM
人工智能·python·机器学习·scikit-learn·集成学习·sklearn·boosting
wyz09234 小时前
python 之协程笔记
开发语言·笔记·python
武昌库里写JAVA5 小时前
【Redis学习】Redis Docker安装,自定义config文件(包括RDB\AOF setup)以及与Spring Boot项目集成
java·开发语言·spring boot·学习·课程设计
姓刘的哦5 小时前
IMX6Ull学习笔记1:汇编点亮LED灯
汇编·笔记·学习