前言
最近总算有想法回到学习上来,这次就拿AI开刀吧。本系列叫从零开始学AI不是骗人的,我对AI的了解几乎就是道听途说,所以起了这么一个标题,希望学完从0变1(?
此外,我应该不会特别关注代码实现上的内容,因为我对python也是一窍不通。
本笔记为学习周志华老师《机器学习》(西瓜书)的个人学习记录,内容基于个人理解进行整理和再阐述。由于理解可能存在偏差,欢迎指正。
引用模块说明:
在笔记中,我会使用引用模块来补充或细化本节内容的部分表述。这些内容通常是对某些概念的进一步解释或澄清,在理解主要内容时可以作为选读材料。除非特别注明,引用模块中的信息均为补充性质。
虽然都是选读,但我还是建议都扫一眼。
第一章
总的来说本章介绍了机器学习的目的与基本方法
1.1 什么是机器学习
定义: 机器学习是一门研究领域,其目标在于通过计算方法,利用数据(通常被称为“经验”)来提升计算机系统的性能。
核心思想: 机器学习的核心在于从已有的数据中,借助特定的学习算法,自动地发现并提取隐藏在数据背后的规律。这些规律能够被应用于新的、未见过的数据,从而做出符合实际情况的预测或判断。
- 所有规律的集合即模型,模型也是我们真正要得到的东西。
这整个过程中最重要的就是学习算法,学习算法是机器学习的核心组成部分。针对不同的问题和数据特点,存在着各种各样的学习算法。它们的作用是指导计算机如何从数据中有效地学习,并生成能够在新数据上表现良好的模型。因此,选择合适的学习算法是构建高效机器学习系统的关键步骤。
潜在规律的表示:
更准确地说,模型是数据中潜在规律的一种表现形式。这就像语言与思想的关系:我们脑海中先有“我饿了”的想法,然后通过“I am hungry”这样的语言将其表达出来。在这里,“I am hungry”就是“我饿了”这个思想的模型或表达。
类似的,在数学上,一个向量本身是独立于坐标系存在的,但为了具体地表示它,我们可以选择一个坐标系,并用坐标分量来表达这个向量,例如$\vec v = (1,0,0)$。这里的坐标表示就是向量这个抽象概念的一种模型。
在机器学习中,模型是我们通过学习算法从数据中习得的,用于表达数据中潜在规律的具体形式。
事实上只有在强调概念不依赖具体表示时(如向量可以由多个不同的坐标系表示,表示的选取可以任意变,但是向量本身不会变),我们才区分两者,其他环境下我们认为二者等价。在本笔记中,我们一般也不会区分模型和潜在规律。
1.2 基本术语
这一节周老师列出了很多术语,我将其整理一下简单列出如下所示:
数据术语
我们研究的数据都是一堆对象的集合,这些对象有我们感兴趣的一些特征。
- 数据集 (Dataset): 一组数据的集合,通常记为$D$。比如一组西瓜。
- 样本/示例 (Sample/Instance): 数据集中的一个元素,记为$x_i \in D$。比如一个西瓜。
- 特征/属性 (Feature/Attribute): 用于描述样本的我们感兴趣的性质,比如西瓜的颜色,重量,甜否。
- 样本空间 (Sample Space):假设每个样本有$d$个特征,所有可能的特征取值构成一个$d$维线性空间,记为$\mathcal{X}$,称为样本空间,有$D \subset \mathcal{X}$。
- 属性值 (Attribute Value): 特征的具体取值,比如青绿,6斤,是。
- 特征向量 (Feature Vector): 将一个样本的所有特征值按照样本空间中特征的顺序排列,构成一个$d$维向量,称为特征向量,记为$x_i = (x_{i1},\dots,x_{id})$。例如,(青绿, 6斤, 是) 就是一个特征向量,其中每个分量对应一个属性值。
- 值得一提的是,中文都翻译为特征向量,但是这里和特征值问题中的特征向量完全无关,我没找到更好的翻译,大家看的时候注意上下文。
学习过程术语
- 监督学习 (Supervised Learning): 监督学习是一种通过学习带有“答案”(标签)的数据,使计算机能够预测新数据“答案”的学习方式。
- 标记/标签 (Label): 是指单个数据对象对应的“答案”信息,通常用小写字母$y$表示。例如,对于一个西瓜,它的标记可以是“好瓜”或“坏瓜”。
- 标记空间 (Label Space): 所有可能的标记信息的集合称为标记空间 (Label Space),通常用大写字母$\mathcal{Y}$表示。对于上面的西瓜例子,标记空间 $\mathcal{Y}= ${“好瓜”, “坏瓜”}。
- 带标记的样本 (Labeled Sample): 携带标记的样本(也称作样例)可以用有序对 $(x_i,y_i)$ 表达。
- 监督学习的任务是利用已有的带标签的训练数据集合$\{(x_1,y_1),\dots,(x_m,y_m)\}$学习得到一个能够将输入特征空间中的$\mathcal{X}$数据映射到输出标签空间$\mathcal{Y}$的函数$f: \mathcal{X}\mapsto \mathcal{Y}$
- 分类 (Classification): 一种监督学习任务,其预测结果是数据对象所属的类别,结果是离散的。例如,判断一封邮件是“垃圾邮件”还是“正常邮件”。
回归 (Regression): 一种监督学习任务,其预测结果是数据对象的某个数值属性,结果是连续的。例如,预测房屋的价格。
- 无监督学习 (Unsupervised Learning): 无监督学习是一种在没有“答案”(标签)的情况下,让计算机自行发现数据中潜在结构和规律的学习方式。
- 聚类 (Clustering): 一种无监督学习方法,它将数据集中的相似对象自动划分到不同的组,每个组称为一个“簇”。
至此,我们已经借助数学向量有效地构建了所有基础概念的结构,从而能够理解从训练集$D$中进行学习(例如分类)的过程。然而,上述概念本身尚未构成一个能够预测新数据的模型。因此,为了实现模型构建,我们还需要引入一个关键的假设。
分布假设(独立同分布假设):我们认为样本空间 $\mathcal{X}$ 中的所有样本都遵循一个未知的概率分布 $P(\mathbf{x})$。我们观测到的数据集 $D$ 被认为是独立地从这个分布中抽样得到的。
正是这个假设,使得我们能够利用训练数据学习到的模型来预测未来遵循相同分布的新数据。
线性空间的加法:
数学上,线性空间被定义为一个阿贝尔群,其中向量加法是其基本运算之一。但在机器学习领域,当向量表示具有不同类型和含义的特征时,向量之间的直接相加往往缺乏实际意义。以特征向量$(绿,6,是)+(深绿,8,否)$为例,结果$(绿+深绿,14,是+否)$,虽然在形式上仍然属于特征空间$\mathcal{X}$但其结果很难在实际应用中解释。
因此,在机器学习中,我们通常只需要承认样本空间中存在向量加法这种运算,而在缺乏明确的领域知识或结构的情况下,这种加法本身可能没有直接的解释意义。事实上,机器学习中向量的强大之处更多体现在其所支持的其他操作,例如内积(虽然这需要内积空间),它在计算相似性、投影等方面发挥着关键作用。
1.3 假设空间与归纳偏好
以一个常见的网络题作为例子:观察下列数列,写出下一个数:
$$ 1,3,5,? $$
先不管大家如何一眼瞪出规律,身为一个机器它要如何找到这个模型呢?
首先,机器需要对可能的规律或模型进行一个初步的猜测或设定。这个所有可能规律的集合就构成了它的假设空间 (Hypothesis Space),记为$\mathcal{H}$。
比如对于现在的数列预测问题,机器可能会考虑以下几种模型:
- 常数模型:所有项都一样
- 周期性模型:存在周期性的规律
- 线性模型:满足$f(x) = ax + b$
- 其他
显然,并非所有假设空间中的模型都符合已知数据。接下来,机器会在假设空间中搜索,找出那些能够完全匹配数据集的假设,这些假设构成版本空间(Version Space)。因此版本空间 $\subset$ 假设空间.。另外,通常对于某个训练集而言,我们的假设空间足够大以至于会有多个模型都满足训练集,也就是说通常版本空间里的元素不止一个。
就这个问题而言,我们(人类)可以构建无数个函数来拟合前三个数。例如,对于任意选择的数$n$,我们可以构造一个函数:
$$ f_n(x) = a(x-2)(x-3)(x-4)+b(x-1)(x-3)(x-4)+c(x-1)(x-2)(x-4)+d(x-1)(x-2)(x-3) $$
分别带入$x=1,2,3,4$使得$f_n = 1,3,5,n$从而确定四个参数$a,b,c,d$即可得到一个满足前三个数是$1,3,5$,第四个数是$n$的函数(规律)。这也就是为什么网上说这个数列第四个数字可以随意填的原因。只是网友们似乎偏爱$114514$这个数。
对于机器学习来说,这个过程可以理解为:机器在假设空间中搜索到了各种能够拟合数据的函数$f_1,f_2,\dots,f_n$,发现它们满足数据集,所以机器把它们加入到版本空间中。
到目前为止,机器已经找到了多个模型,但我们的要求是让机器输出一个模型。但所有训练集的信息我们都已经用上了,所以这里机器必须借助训练集之外的信息来帮他做出选择,这就是归纳偏好。正如网友偏好$114514$一样。
归纳偏好 (Inductive Bias)
- 定义: 归纳偏好是指机器学习算法在学习过程中,对于选择哪种类型的假设具有的偏好或倾向。当版本空间中存在多个与训练集一致的假设时,归纳偏好就决定了算法最终会选择哪一个模型。
- 必要性: 归纳偏好的存在是必要的,因为仅仅依靠训练数据,我们可能无法确定唯一的最佳模型。归纳偏好就像一个“价值观”,引导算法做出选择,以便更好地泛化到未见过的新数据上。
- 常见原则: 一个常见的归纳偏好原则是“奥卡姆剃刀”(Occam's Razor),即“若有多个假设与观察一致,则选择最简单的那个”。
因为归纳偏好是从数据集到模型这个过程的概念,所以它也是属于学习算法的一部分,它决定了算法中“什么样的模型更好”这一决策。那么是不是存在一些更高效正确的偏好呢?事实上想想就应该明白,针对不同上下文,相同的偏好自然有不同的表现,针对不同的数据集选用不同的算法才是最重要的。
这其实也体现了机器学习中著名的“没有免费的午餐”定理 (No Free Lunch Theoremm,NFL) 的思想,该定理表明不存在一个在所有问题上都表现最优的通用学习算法。因此,选择合适的归纳偏好对于解决特定类型的问题至关重要。
NFL定理
这个定理说明了没有一个学习算法在所有可能的问题上都取得最佳性能。原始证明在论文中,书上也只是给出了个基于二分类且所有可能真实函数均匀分布的情形。对这个定理证明感兴趣的朋友可以自己去看一下,我这里只给出一些辅助信息帮助看懂。
因为是2分类问题,不同的问题对相同的数据集打的标签不同,那么训练集$\mathcal{X}$一共有$2^{|\mathcal{X}|}$个不同的问题,对应$2^{|\mathcal{X}|}$个不同的真实函数。
指示函数$\mathbb{I}$中$h(x)$与$f(x)$分别代表预测函数和真实函数对数据集外的样本点映射的结果,如果一致指示函数取0,这个预测函数没有贡献误差;如果不一致指示函数取1,这个预测函数贡献了误差。再和数据集外的样本点$x$加权求和得到预测函数$h$的误差,最后对所有预测函数误差求期望,得到算法的误差。
最后是真实问题平均分布,某一个预测函数与所有真实函数对比样本外的数据,只能是50%的正确率。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。