IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【一起看花书1.1】——第五章 机器学习基础 -> 正文阅读

[人工智能]【一起看花书1.1】——第五章 机器学习基础

第五章 机器学习基础(1)

本章介绍的是关于机器学习中的一些模型评价方面的知识。深度学习火了很久,但是深度学习也是发源于ML的感知机方法。我们要想充分理解深度学习,必须对机器学习的基本原理有深刻的理解。
作者推荐的ML的书,有:

  1. Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer. 87, 126
  2. Murphy, K. P. (2012). Machine Learning: a Probabilistic Perspective. MIT Press, Cambridge,
    MA, USA. 56, 87, 126

之前也读过一些中文的推荐书记,比如西瓜书+南瓜书、统计学习方法等等,但是总是看的快,忘得快,理解不深刻。

这里,也希望自己不做抄书匠,有点自己的体会。

这里有个观点:

  • 机器学习本质上属于应用统计学,更多地关注于如何用计算机统计地估计复杂函数,不太关注为这些函数提供置信区间;因此我们会探讨两种统计学的主要方法:频率派估计和贝叶斯推断(见【一起看花书1.2】).

本节内容只涉及相关的概念与一些“启发式思想”,对应于目录5.1-5.3节

目录

  • 5.1 学习算法
  • 5.2 容量、过拟合、欠拟合
  • 5.3 超参数和验证集
  • 5.4 估计、偏差、方差
  • 5.5.最大似然估计
  • 5.6 贝叶斯统计
  • 5.7 监督学习
  • 5.8 无监督学习
  • 5.9 随机梯度下降
  • 5.10 构建机器学习算法
  • 5.11 促使深度学习发展
  • 5.12 其他知识(补充)

5.1 学习算法

围绕机器学习,有三方面内容,是任务、性能度量和经验。从科学和哲学的角度来看,机器学习受到关注是因为提高我们对机器学习的认识需要提高我们对智能背后原理的理解,这是需要一些“数学上的洞察”。

5.1.1 任务

任务是一种能力,而不是学习本身,可以通过“指标”衡量。通常机器学习任务定义为机器学习系统应该如何处理样本(sample),样本由特征(feature)组成。
常见的任务包括:分类、回归、生成、结构化预测。作者在这里给出了非常详细的分类法,但是并不严格。

  • 分类:典型的监督学习任务,可以看作"学一个目标空间离散的函数“,即学得到一个 f : R n → 1 , 2 , 3 , . . . , k f:R^n \to {1,2,3,...,k} f:Rn1,2,3,...,k,这就是学到 k k k分类任务的模型 f f f
  • 输入缺失分类:也是一种分类任务,但是各个样本中会存在特征的缺失,这可能需要我们学习”一组分类映射“而非“一个分类映射”,有效的方法比如:“学习所有相关变量的概率分布,然后求边缘概率”。
  • 回归:也是典型的监督学习任务,可以看作学得 f : R n → R f:R^n \to R f:RnR,典型算法是“线性回归”。
  • 转录:机器学习系统观测一些相对非结构化表示的数据,并转录信息为离散的文本形式,作者举的例子是"OCR"和"ASR"。个人人为其实这是一种“结构化不太强的分类任务”。
  • 翻译:这里单纯指的是文本的翻译,而不是所谓的“跨模态”、“跨领域(domain)”、“风格迁移”之类的翻译。
  • 结构化学习:输出是向量或者其他包含多个值的数据结构,比如“树、图、线性表”等等其实都是结构化的学习,尤其是“语言序列”,它们内部的各个元素有非常强、复杂的依赖关系。因此,翻译和转录其实也是结构化学习
  • 异常检测:其实异常也是一种分类,但是问题在于“定义异常”。
  • 合成和采样:生成一些和训练数据相似的新样本,不能严格地说是分类、回归,因为往往需要一些”随机性“。
  • 缺失值填补:填补样本中的”缺失特征“。是一种监督学习任务。
  • 降噪:通过噪声样本还原为干净样本
  • 概率(密度)预测:预测样本的分布概率,其实以上很多任务都要隐式预测出概率分布。但是其实估计概率这件事非常难。

5.1.2 评估

之前保研面试时,一位在WWW发了一篇文章的同学竟然不知道评价指标F1是什么,真是令人大跌眼镜。评估是很重要的,可以说训练的目标就是为了有好的评估效果不是吗?
分类、缺失输入分类和转录任务,我们通常度量模型的 准确率、召回率、F1等指标。“度量什么?怎么度量?”,着取决于我们的目标。

而密度估计、翻译、生成和采样任务的评估本身就非常困难,需要设计对应于设计对象的替代标准,或者设计一个理想标准的良好近似。

5.1.3 经验

其实机器学习中以上种种任务,根据数据集的样本是否有标签(label)可以分为监督学习和无监督学习。

  • 简单的说,监督学习是为了学习”人定义的知识“,无监督学习是根据“某种规则学习数据的结构/分布”。

  • 从概率角度,无监督学习试图显式或隐式地学习联合分布分布 p ( x ) p(x) p(x)(这里并不包含显式的y),或者分布的其他性质;而监督学习通常是估计条件概率 p ( y ∣ x ) p(y | x) p(yx)

  • 实际上二者也可以转化,通过全概率公式贝叶斯公式对联合概率、条件概率的转化也可见一斑。

传统地,人们将回归、分类或者结构化输出问题称为监督学习。支持其他任务的密度估计通常被称为无监督学习。

其它诸如“强化学习”,和本范围讨论不同的是,其基于“行为主义”,即我们能给定“环境、智能体、交互”,但是具体的“样本”和"标签"来源于“交互过程”。

5.1.4 非参数算法

在5.2节的容量部分,讨论了很多关于参数的问题。实际上,我们也可以设计一些实用的非参数模型,使它们的复杂度和训练集大小有关,比如KNN算法。
不过,很多时候非参数模型仅是一些不能实际实现的理论抽象(比如搜索所有可能概率分布的算法),只能用作形式化表示。
在最近向量不唯一的情况下,如果允许算法对所有离 x 最近的 Xi,: 关联的 yi 求平均,那么该算法会在任意回归数据集上达到最小可能的训练误差。这样其实相当于直接记住了所有数据,并直接根据代价函数选择结果

也可以将参数学习算法嵌入另一个增加参数数目的算法来创建非参数学习算法。例如,我们可以想象这样一个算法,外层循环调整多项式的次数,内层循环通过线性回归学习模型。这就是暴力穷举。

5.2 容量、过拟合和欠拟合

泛化误差(generalization error,也称作测试误差test error)指新输入的误差期望;期望的计算,实际上通过不同的广泛采样数据体现。机器学习和优化不同的地方在于,我们不仅希望训练误差低,也希望 泛化误差很低。

因此:假设我们有概率分布 p ( x , y ) p(x, y) p(x,y),从中重复采样生成训练集和测试集,随机模型训练误差的期望和该模型测试误差的期望是一样的。

5.2.1 基础概念

1.泛化性(generalization):在未观测到的数据集上表现良好的能力。可以说是机器学习的主要挑战,也是我们为什么要分(train,dev,test)集合的原因。

2.数据生成过程(data generating process):训练集和测试集数据的生成,可以理解为在一个数据生成过程(data generating process)的概率分布采样过程。

3.重要的假设:独立同分布假设:每个数据集中的各样本都是彼此相互独立的,并且训练集和测试集是同分布的(identically distributed),采样自相同的分布。这个共享的潜在分布称为数据生成分布(data generating distribution),记作 p d a t a p_{data} pdata?(这个可以理解为数据的真实分布嘛?)

4.机器学习模型的两个目标:

  1. 降低训练误差。——太好则容易“过拟合”,反之则“过拟合”;
  2. 缩小训练误差和测试误差的差距。——差距太大为“过拟合”,(欠拟合的误差也很大?)

5.模型容量:
通俗地,模型的容量是指其拟合各种函数的能力。容量低的模型可能很难拟合训练集。容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。
表示容量:模型的理想容量。
有效容量:由于学习算法的不完美等等,使得模型实际得到的容量不足。

  • 问:模型容量和什么有关?模型结构(CNN、attention)、输入特征数、对应的超参数(几层注意力、CNN的Kernal size,pide,stride等等)

6.假设空间(hypothesis space)。一种控制训练算法容量的方法是选择 假设空间,即学习算法可以选择的解决方案函数集。例子是“线性回归”中,可以引入其它关于x的函数;例如,一个可以用3次函数达到较好效果的回归模型,用1次函数模型,会“欠拟合”,而用10次函数,可能“过拟合”。注意,选择一个合适的函数本身就是很难的问题

7.奥卡姆剃刀原则:在同样能够解释已知观测现象的假设中,我们应该挑选 ‘‘最简单’’ 的那一个。

8.Vapnik-Chervonenkis 维度理论(VC维):一种著名的量化模型容量的方法。相关统计学习理论的结论表明,“训练误差和泛化误差之间差异”的上界,随着模型容量增长而增长,但随着训练样本增多而下降。也就是说,大容量的模型需要更多的训练样本,否则很容易过拟合

9.贝叶斯误差(Bayes error):问题本身 x → y x \to y xy是有随机的或者是非确定的。理想模型假设我们能够预先知道生成数据的真实概率分布。从预先知道的真实分布 p ( x , y ) p(x, y) p(x,y) 预测而出现的误差被称为贝叶斯误差 。这可能是因为分布中仍然会有一些噪声。

  • 提问:贝叶斯误差是用来衡量数据噪声带来的不良影响的嘛?是不是和模型没有关系——我觉得是。

5.2.2 一些经验:

通常,当模型容量上升时,训练误差会下降,直到其渐近最小可能误差(假设误差度量有最小值)。通常,泛化误差是一个关于模型容量的 U 形曲线函数。

尽管在统计机器学习理论有很多误差上界的估算,但是它们很少应用于实际中的深度学习算法。一部分原因是边界太松,另一部分原因是很难确定深度学习算法的容量。

由于有效容量受限于优化算法的能力,确定深度学习模型容量的问题特别困难。而且对于深度学习中的一般非凸优化问题,我们只有很少的理论分析。这一小节所说也是很容易体会的

训练误差和泛化误差会随训练集的大小发生变化:

  1. 泛化误差的期望从不会因训练样本数目的增加而增加。因为期望值和模型有关,与数据采样无关
  2. 对于非参数模型而言,更多的数据会得到更好的泛化能力, 直到达到最佳可能的泛化误差:因为模型“记住了更多数据”
    3.值得注意的是,具有最优容量的模型仍然有可能在训练误差和泛化误差之间存在很大的差距。在这种情况下,我们可以通过收集更多的训练样本来缩小差距

5.2.3 no free lunch 规则

学习理论表明机器学习算法能够在有限个训练集样本中很好地泛化。机器学习保证找到一个在所关注的大多数样本上可能正确的规则。
no free lunch原理:在所有可能的数据生成分布上平均之后,每一个分类算法在未事先观测的点上都有相同的错误率;也就是说,如果考虑所有可能的数据生成分布时,似乎没有哪个算法一定最强。
但实际上,现实中的问题是有特定分布的。如果我们对遇到的概率分布进行假设的话,那么我们可以设计在这些分布上效果良好的学习算法。
因此,我们的目标是理解什么样的分布与人工智能获取经验的 ‘‘真实世界’’ 相关,什么样的学习算法在我们关注的数据生成分布上效果最好。即,找最能解决具体问题的方法

原书的图5.4可以再看看

5.2.4 正则化

什么是正则化(regularization):隐式或显式地表示对不同解的偏好。正则化是指我们修改学习算法,使其降低泛化误差而非训练误差。

没有免费午餐定理暗示我们必须在特定任务上设计性能良好的机器学习算法。换句话说,在特定任务上做“过拟合”

对于同一类算法,我们具体讨论修改学习算法的方法只有,通过增加或减少学习算法可选假设空间的函数。以此增加或减少模型的表示容量。

在代价函数中引入一些其他项,可以看作是“某种偏好”;而排除某些函数,就是“对具有相关特点的函数的无限反对”。

正则化是机器学习领域的中心问题之一,只有优化能够与其重要性相媲。但其实正则化方法也是**“没有免费的午餐”**的,没有一种通用方法能解决所有问题。

深度学习中普遍的(特别是本书中的)理念是大量任务(例如所有人类能做的智能任务)也许都可以使用非常通用的正则化形式来有效解决。

5.3 超参数和验证集

超参数既包括“容量超参数”(控制模型的结构、正则化参数)、“训练超参数”(控制优化过程)。

  • 为什么有些参数被设置为超参数呢?

可能是因为它太难优化了。更多的情况是,因为它不适合在训练集上学习:如模型结构,因为模型容易趋向于在训练集上过拟合——因此验证集还是有必要的。

5.3.1 留出法:

一般的,我们对训练集进行8-2切分,做成新的训练集和验证集。尽管验证集的误差通常会比训练集误差小,验证集会低估泛化误差。(也未必,我训练的时候感觉测试集的loss也会比dev集低)。

5.3.2 k-fold交叉验证:

当给定数据集 D 对于简单的训练/测试或训练/验证分
割而言太小难以产生泛化误差的准确估计时(因为在小的测试集上,模型可能具有过高的方差),k-折交叉验证算法可以用于估计学习算法 A 的泛化误差。

挑战是逐步加大难度的:在实际中,当相同的测试集已在很多年中重复地用于评估不同算法的性能,并且考虑学术界在该测试集上的各种尝试,我们最后可能也会对测试集有着乐观的估计。值得庆幸的是,学术界往往会移到新的(通常会更巨大、更具挑战性)基准数据集上。

5.12 其他知识

新名词表

  1. 设计矩阵(design Matrix),可以看作数据集的一种表示。每一行是一个样本,每一列是一个样本的特征,就像是个excel的表一样。
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:43:23  更:2021-12-11 15:45:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 0:41:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码