02-05(选修)谈谈机器学习的原理

  • 总结
  • 引例 - 宝可梦/数码宝贝 分类器
  • 如何找到一个合适的函数?- 领域知识
  • 如何定义损失函数?- 经验
    • 如何得到函数的损失值?- 训练集
  • 训练 - 目的:得到最好的模型参数
  • 如何衡量现实损失和理想损失接近程度?- 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}) \le \sigma L(htrain,Dall​)−L(hall,Dall​)≤σ
  • 如何才能使现实损失和理想损失接近?- 只要取样数据集跟总样本数据集很像
  • 如何得到跟含所有样本数据集很像的取样数据集?- ∀ h ∈ H , ∣ L ( h , D a l l ) − L ( h , D a l l ) ∣ ≤ σ / 2 \forall h\in \mathcal H, |L(h, D_{all}) - L(h, D_{all})| \le \sigma/2 ∀h∈H,∣L(h,Dall​)−L(h,Dall​)∣≤σ/2
  • 取样得到坏的数据集的概率多大?- 上界 ∑ h ∈ H P \sum_{h\in\mathcal H} P ∑h∈H​P(D t r a i n _{train} train​ is bad due to h)
  • 如何减小取样坏样本集的概率?- 增大样本集&减小参数可能值个数
  • 为什么实际情况中都是增大样本集使得理想和现实损失值接近,而不是减小 H \mathcal H H?- 减小 H \mathcal H H会导致找不到最佳参数
  • 有没有办法使得现实的损失值小并且理想与现实的损失值差距也小?- 有,深度学习。
  • 深度学习如何做到现实的损失值小并且理想与现实的损失值差距也小?-【待补充】

总结

本节讨论话题:为什么参数越多越容易过拟合?

因为模型参数越多,即 ∣ H ∣ |\mathcal H| ∣H∣很大,现实的损失值小,理想与现实的损失值差距大。

引例 - 宝可梦/数码宝贝 分类器

例子:对宝可梦和数码宝贝进行分类。(每一只宝可梦都对应一种相似的数码宝贝,例如小火龙和亚古兽)

如何找到一个合适的函数?- 领域知识

确定一个参数未知的函数,需要建立在领域知识的基础上。先对资料进行观察。

经过对样本的观察发现:数码宝贝线条复杂,宝可梦线条简单。

因此,考虑可以根据线条的复杂程度判断一只动物是宝可梦还是数码宝贝。

设计一个 edge detection 函数记为 e ,可以提取动物的线条,并计算出线条的数量。

由此,可确定出一个含未知参数的函数 f h f_h fh​,其中参数h未知。h可能值的数目称为模型的复杂度。

如何定义损失函数?- 经验

参考:分类与回归问题中的损失函数——交叉熵、L1、L2、smooth L1损失函数及python实现 - 默里的文章 - 知乎

如何得到函数的损失值?- 训练集

从所有h的可能值中,选择一个值,使用训练集数据进行训练,每个样本的损失值 l l l进行平均,得到该h值对应的整个资料集的损失 L L L。

l l l 可以使用 cross-entorpy 定义,也可以使用是否等于标签值进行定义,后面的讲解与损失函数的定义无关,所以使用简单直观的后者作为损失函数进行讲解。

训练 - 目的:得到最好的模型参数

如果可以收集到所有的宝可梦和数码宝贝数据,那么可以得出最好的模型参数。

但是,现实问题中,大多数问题只能收集到一部分样本(取样),并不能找到所有的样本数据。取样的要求:独立同分布(independently and identically distribution,i.i.d.)


如何衡量现实损失和理想损失接近程度?- 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}) \le \sigma L(htrain,Dall​)−L(hall,Dall​)≤σ

期望:现实损失和理想损失接近。

如何才能使现实损失和理想损失接近?- 只要取样数据集跟总样本数据集很像

接下来讨论问题:现实版的最佳参数和理想中的最佳参数差异多大?

如上图所示,假设现在找到的数据集就是所有样本的数据集(现实中不可能),宝可梦819,数码宝贝971,训练得到最好的模型参数 h a l l h^{all} hall为 4824 对应损失值为0.28。

从该数据集中取样200个宝可梦和数码宝贝,训练得到最好的模型参数 h t r a i n 1 h^{train1} htrain1为 4727 损失值为0.27。但是,将 h t r a i n 1 h^{train1} htrain1代入到所有样本集,得到损失值为0.28,跟 h a l l h^{all} hall对应得到损失值的一样。

为什么 L ( h t r a i n , D t r a i n ) < L ( h a l l , D a l l ) L(h^{train}, D_{train}) \lt L(h^{all}, D_{all}) L(htrain,Dtrain​)<L(hall,Dall​) ?

这种情况很正常,例如,只取样两个样本,肯定能找到一个最佳参数将这两个样本分开,损失值为0,一定比在所有数据集上计算出的损失值小。

从该数据集中重新取样200个宝可梦和数码宝贝,训练得到最好的模型参数 h t r a i n 2 h^{train2} htrain2为 3642 损失值为0.20。但是,将 h t r a i n 1 h^{train1} htrain1代入到所有样本集,得到损失值为0.37,大于 h a l l h^{all} hall对应得到损失值0.28。

为什么 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​) ?

因为在 D a l l D_{all} Dall​上找到的 h a l l h_{all} hall​一定是 D a l l D_{all} 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​)。

如何得到跟含所有样本数据集很像的取样数据集?- ∀ h ∈ H , ∣ L ( h , D a l l ) − L ( h , D a l l ) ∣ ≤ σ / 2 \forall h\in \mathcal H, |L(h, D_{all}) - L(h, D_{all})| \le \sigma/2 ∀h∈H,∣L(h,Dall​)−L(h,Dall​)∣≤σ/2

接下来讨论的问题:如何得到跟含所有样本数据集很像的取样数据集?

只要满足②,就会得到一个跟含所有样本数据集很像的取样数据集,就一定满足①(即:达到目的:理想和现实的损失值接近)。

取样得到坏的数据集的概率多大?- 上界 ∑ h ∈ H P \sum_{h\in\mathcal H} P ∑h∈H​P(D t r a i n _{train} train​ is bad due to h)

接下来讨论的问题:取样得到坏的数据集的概率多大?

说明:① 以下的讨论与模型没有关系,适用于深度学习或其他模型;② 以下的讨论没有对数据假设任何的数据分布;③ 以下的讨论与损失函数无关,适用于任何损失函数,因为分类和回归只是损失函数不同,所以以下讨论同时适用于分类和回归。

如图所示,一个点代表一组样本,蓝色点代表好的训练样本集,黄色点代表坏的训练样本集。

枚举所有样本集,计算是否是坏样本集,比较繁琐,所以使用如下方法,给定参数 h ,计算哪些样本集是坏样本集,并求出这些样本集占总样本集的概率。

求并集一定不会大于1,但是求和可能大于1,通常求和算出的P的上界都远远大于1,这时该理论无效。


上图中,使用的是霍夫丁不等式。

参考:霍夫丁不等式(Hoeffding’s inequality) - Pikachu5808的文章 - 知乎

如何减小取样坏样本集的概率?- 增大样本集&减小参数可能值个数

如上图所示,坏样本集的概率大小为 ∣ H ∣ ⋅ 2 e − 2 N ε 2 |\mathcal H|·2e^{-2N\varepsilon^2} ∣H∣⋅2e−2Nε2。如果要使得坏样本集的概率变小,有两种办法:一是增大样本集样本个数N;二是减小 h 可能值的个数。

实际使用中,计算出的坏数据集的概率的上界往往大于1,该理论没有什么用。

可以通过公式,计算出训练集中样本个数的下限N。

问题: H \mathcal H H 是否是连续的?

如果 H \mathcal H H是连续的,那么 H \mathcal H H就是无穷大, ∣ H ∣ ⋅ 2 e − 2 N ε 2 |\mathcal H|·2e^{-2N\varepsilon^2} ∣H∣⋅2e−2Nε2 也是无穷大,这个不等式将失去存在的意义。

解释一:计算机中没有绝对连续的数据。
解释二:vc-dimension(描述模型复杂程度的指标),即使 H \mathcal H H 是连续的,那么 H \mathcal H H不一定是无穷大,还是有办法估计。

为什么实际情况中都是增大样本集使得理想和现实损失值接近,而不是减小 H \mathcal H H?- 减小 H \mathcal H H会导致找不到最佳参数

因为减小 H \mathcal H H会导致 h 可能选择的值很少,进而导致在总样本中选择不出使损失值很小的 h a l l h_{all} hall​,理想崩坏。

想要理想与现实接近,需要满足两个条件:① Larger N 大样本集;② smaller ∣ H ∣ |\mathcal H| ∣H∣ 参数可选值少。

∣ H ∣ |\mathcal H| ∣H∣很小时,理想的损失值大,理想与现实的损失值差距小
∣ H ∣ |\mathcal H| ∣H∣很大时,理想的损失值小,理想与现实的损失值差距大。

有没有办法使得现实的损失值小并且理想与现实的损失值差距也小?- 有,深度学习。

深度学习如何做到现实的损失值小并且理想与现实的损失值差距也小?-【待补充】

【深度学习】02-06-谈谈机器学习的原理(选修)-李宏毅老师2122深度学习课程笔记相关推荐

  1. 【深度学习】04-01-自注意力机制(Self-attention)-李宏毅老师2122深度学习课程笔记

    04-01-自注意力机制Self-attention 模型输入 文字处理 语音处理 Graph 模型输出 类型一:一对一(Sequence Labeling) 类型二:多对一 类型三:多对多(由模型自 ...

  2. 【深度学习】01-04-深度学习(选修)-李宏毅老师2122深度学习课程笔记

    01-04-深度学习(选修) Introduction Deep learning attracts lots of attention Ups and downs of Deep Learning ...

  3. 【深度学习】02-04-类神经网络训练不起来怎么办?(自动调整学习速率)-李宏毅老师2122深度学习课程笔记

    自动调整学习速率 总结 Training stuck ≠ Small Gradient(训练卡住不代表小梯度)- 有可能是梯度还很大但是训练停止了(在峡谷间震荡不能到峡谷底部) 为什么需要自动调整学习 ...

  4. 机器学习数学原理(3)——生成型学习算法

    机器学习数学原理(3)--生成型学习算法 在上一篇博文中我们通过广义线性模型导出了针对二分类的Sigmoid回归模型以及针对多项分类的Softmax回归模型,需要说明的是,这两种算法模型都属于判别学习 ...

  5. 【机器学习】<刘建平Pinard老师博客学习记录>线性回归原理

    目录 一.线性回归的模型函数和损失函数: 二.线性回归的算法: 1.梯度下降法: 2.最小二乘法: 三.线性回归的推广:多项式回归 四.线性回归的推广:广义线性回归 五.线性回归的正则化: 一.线性回 ...

  6. 【机器学习】<刘建平Pinard老师博客学习记录>Scikit-learnPandas(NumpyMatplotlib)学习线性回归

    目录 一.数据获取&问题定义: 1.数据获取: 2.问题定义: 二.整理数据: 三.使用Pandas读取数据: 1.导入依赖库: 2.使用Pandas读取函数: 四.数据准备: 1.查看数据: ...

  7. 【强推】李宏毅老师2021深度学习课程学习笔记(持续更新中)

    机器学习可以理解为是让机器自动寻找函数的一个过程. 根据函数功能的不同,可以将机器学习进行以下分类. Alpha Go做的事情也是一个分类问题:将当前棋盘上白子黑子的位置作为输入,输出是19*19个c ...

  8. 【机器学习】<刘建平Pinard老师博客学习记录>感知机原理

    目录 一.感知机模型: 二.感知机模型损失函数: 三.感知机模型损失函数的优化方法: 四.感知机模型算法: 五.感知机模型的算法对偶形式: 六.小结: 感知机可以说是最古老的分类方法之一了,在1957 ...

  9. 【机器学习】<刘建平Pinard老师博客学习记录>机器学习算法的随机数据生成

    目录 一.Numpy生成随机数: 二.Scikit-learn随机数据生成API介绍: 三.Scikit-learn随机数据生成实例: 1.回归模型随机数据: 2.分类模型随机数据: 3.聚类模型随机 ...

最新文章

  1. java学习之成员内部类
  2. 北京工业大学c语言期末考试题,北京工业大学C语言部分练习答案.docx
  3. Chromium Microsoft Edge 浏览器现已可供下载
  4. 简单的print函数的实现
  5. 红帽linux安装wordpress,linux Centos怎么安装wordpress
  6. 调用钉钉接口和微信实现消息通知
  7. 计算机视觉:步态识别-综述(一)
  8. Java关于数字的正则校验
  9. 一招教你电脑微信双开
  10. noip2018提高组广东省成绩
  11. linux报错的Syntax error “(“ 的解决方法
  12. @SuppressWarnings注解用法详解
  13. [74系列------74HC595]
  14. Python 短文本自动识别个体是否有自杀倾向
  15. EasyX教程(一)
  16. 链表的定义及使用 综合实战:超市购物车
  17. 每日一题——LeetCode977(有序数组的平方)二种方法
  18. 反编译DLL并修改DLL中的内容
  19. Chrome 113 发布,默认启用 WebGPU
  20. 皖能集团财务部主任朱文静:财务数字化转型为集团改革发展赋能

热门文章

  1. Python编程基础题(2-求一元二次方程的解Ⅱ)
  2. 关于小程序 scroll
  3. 招聘网站分析-智联招聘网的爬虫设计与实现
  4. 中国医科大学22春《病理学(本科)》在线作业【标准答案】
  5. Mac版Endnote 20导入中文参考格式Chinese Std GBT7714 (numeric)
  6. 实验一:Cifar10图像分类竞赛 学习记录
  7. 如何在latex中用tikz画一把“圣剑“
  8. 一群不想鸡娃的直男程序员,决定对一支笔下手了
  9. 移动视频类设备平台国标GB28181输入输出,GB28181平台对接说明
  10. c语言双目运算和单目运算符,单目运算符 双目运算符 三目运算符