Companion webpage to the book “Mathematics For Machine Learning”
个人学习笔记,欢迎勘误!
- 机器学习强调的是设计出来的算法的 “自动”,即机器学习关注的是可应用于许多数据集的通用方法
- 机器学习的核心有三个概念:数据、模型和学习
- 机器学习本质上是数据驱动的,因此数据是机器学习的核心
- 机器学习的目标是设计通用方法,从数据中提取有价值的模式
- 设计的模型通常与生成数据的过程相关,类似于我们已有的数据集
- 如果一个模型在考虑了数据之后,在给定任务上的表现有所改善,那么这个模型就可以说是从数据中学习的。
- 学习可以理解为一种通过优化模型参数来自动发现数据中的模式和结构的学习方法。目标是找到能很好地泛化到我们将来可能会关注的未见数据的好模型
1.1 为直觉寻找词语
机器学习天然分为两个阶段:学习阶段和应用阶段。“机器学习算法”在日常口语和部分文献中被用来指代参与这两个阶段的、功能完全不同的两种系统:
- 预测器:一个已经训练好的、可以拿来用的函数或模型。用于应对新的、未见过的数据并返回出预测的结果
- 训练器:一个自动调整预测器内部参数的过程。通过从大量的训练数据中输出一个优化好的预测器 书中一个有趣的说法是 “模型通常用于描述 生成数据 的过程,与手头的数据集类似。” 模型的核心目的通常是“预测”,这句话中的“生成”,不是指让模型去创造数据,而是指模型试图去模拟和解释“现实世界中的数据(提供的数据集)究竟是如何产生的”。换句话说,“描述生成过程”是模型的“内在本质”,“进行预测”是模型的“外在用途”。好的预测,源于对数据生成过程的良好近似。模型视为黑箱,作为简化的数学结构本质就是一种对数据的生成过程的假设性描述
1.2 阅读本书的两种方法
有很多新鲜的表述,来好好记录解释一下。
机器学习有如下四大支柱:
首先是 线性回归。“线性回归的目标是找到将输入 $x \in \mathbb{R}^{D}$ 映射到观测函数值 $y \in \mathbb{R}$ 的函数”。在这句话中,$x$ 是一个 $D$ 维向量,表示一个数据点;$y$ 是一个实数,表示我们将要预测的标签。我们要找的是一个函数 $f(x)$ 能尽可能准确地预测(对应)$y$,在线性回归中,$f(x)$ 为 $\theta_0 + \theta_1 x_1 + \theta_2 \times x_2 + \dots + \theta_D \times x_D$ ,我们的任务就是去找参数 $\theta$。
线性回归有三种常用的模型拟合方法:
-
最大似然估计:假设观测到的数据 $(x, y)$ 是由某个概率模型生成的,比如 $y = f(x) + \varepsilon$(噪声 $\varepsilon$ 服从 高斯分布),最大似然估计寻找一组参数 $\theta$ 使得在当前这组参数下,观测到已有的数据集的概率(即所谓“似然”)最大。这等价于最小化均方误差。
-
最大后验估计:在最大似然估计的基础上,我们引入 先验知识。我们不仅考虑数据,还考虑我们对参数 $\theta$ 可能取值的 先验信念,我将其理解为类似于 prompt,例如参数很可能比较小,模型应该比较简单。最大后验估计寻找在给定数据的前提下,参数 $\theta$ 本身概率(后验概率)最大的那个值。根据贝叶斯定理,后验概率 $\propto$ 似然 $\times$ 先验概率。即我们在最大化似然和先验的乘积。这相当于在最大似然估计的目标函数上加上了 正则化项(L2 正则化,也叫岭规划)。先验知识起到了 防止模型过拟合(参数过大)的作用。如果没有先验,或先验也呈正态分布,最大后验估计将退化为最大似然估计。
-
贝叶斯线性回归:不同于前两种“点估计”哲学,贝叶斯线性回归是一种截然不同的方法。贝叶斯线性回归承认不确定性并不对参数做单一的决策。正如 MML 所说,贝叶斯线性回归 “对参数进行积分而不是优化”。前两种方法是“优化”出一个最好的 $\theta^*$,然后用 $f(x; \theta^*)$ 做预测。贝叶斯方法是做 “积分”,我们不选择任何一个 $\theta$,相反,我们计算参数 $\theta$ 的整个后验概率分布,在这个分布中包含了所有可能的 $\theta$ 贡献,将其按可信度加权平均。数学上,这个操作就是对参数 $\theta$ 进行积分:$P(y’ | x’, dat) = \int P(y’ | x’, \theta) \times P(\theta | dat) d_{0}$。我们得到的不是一个单一的预测值,而是一个 预测分布(通常是一个 概率分布),这个分布不仅告诉我们最可能的预测值(分布的均值),还量化了 预测的不确定性(分布的方差)。这在安全关键或风险评估领域起重要作用。
从最简单的点估计(MLE)开始奠定基础,加入正则化(MAP)思想提高模型泛化能力,最终上升到完全的贝叶斯视角,拥抱不确定性并得到更丰富的预测信息。
接下来是降维。回归是 监督学习 这一范式的典范,降维 则是 无监督学习 这一另外范式的经典代表。核心的对比是有标签:
- 对于监督学习,比如回归
- 输入数据形式为成对的 $(x, y)$,$x$ 是输入(特征),$y$ 是与之 明确相关 的标签(输出值)。
- 算法的核心目标是找到一个函数 $f$,建立从 $x \to y$ 的映射关系,目标是让 $f(x)$ 能准确预测未来的 $y$
- 其本质是学习"因果/关联关系",我们关心的是 $x$ 如何决定 $y$
- 对于无监督学习,比如降维 PCA
- 输入数据形式只有一对的 $x$,没有对应 的 $y$
- 算法的核心目标是理解 $x$ 中本身的内部结构、分布和模式。降维的目的是从 $x \in \mathbb{R}^{D}$ 中找到一个紧凑的、低维的表示 $z \in \mathbb{R}^{K}$,其中 $K \lt D$,通常 $K \lt \lt D$。
- 其本质是探索数据内在的规律,我们只关心 $x$ 本身
MML 中描述降维为 “为高维数据找到一个紧凑的低维表示”。想象一下,PCA(主成分分析)要做的事情是,从一个庞大的拥有极大维度的数据中,找到 几个全新的、自定义的维度,用这几个新的维度来最大程度保留这些极大维度的 主要信息。新的信息指的是原始的极多特征的线性组合,第一主成分是数据分布最分散的方向;第二主成分是与第一主成分正交且剩余方差最大的方向……主成分的紧凑性和易分析性体现在可视化、去冗余和降噪上。
一个重要的联系是,虽然降维本身是无监督的,但是它的结果即低维特征 $z$ 可以作为监督学习的输入从而提高模型性能,原因是 $z$ 的信息密度更高且减少了冗余与杂声。
第三个支柱是密度估计,其核心目标是用概率分布描述数据本身的结构,而不是找映射或压缩数据。关键要点在于 “描述给定数据集的概率分布”,我们假设观测到的数据点 $x$ 是从某个未知的概率分布 $p(x)$ 中采样得到的,算法的目标是根据有限的数据样本估计出这个分布 $p(x)$ 的具体形式,换句话说输出一个函数 $f(x)$ 使得输入任意一个数据点 $x$ 就能输出该点对应的概率密度。常用的算法有高斯混合模型(GMM)和 EM 算法(期望最大化算法)。密度估计的应用场景有:异常检测,低概率密度区域的数据点可能是异常值;数据生成,从学到的分布中采样,生成新数据;聚类,GMM的每个成分可以解释为一个聚类(软分配)。
第四个支柱则是分类,其核心目标是学习从输入 $x$ 到离散标签 $y$ 的映射关系。注意其与回归的区别:
- 标签类型:回归为连续整数;分类为离散整数或类别
- 预测输出:回归为数值;分类为离散标签
- 任务本质:回归为拟合曲线;分类为寻找决策边界并划分空间
一个新的关键词是支持向量机 SVM,其核心思想是找到一个最优的 决策超平面,使得两个类别之间的 间隔最大 以提高模型泛化能力——离决策边界越远的样本,分类越可靠。支持向量决定了这个最优超平面的关键样本点(通常位于间隔边界上)。
| 支柱 | 问题 | 输入 | 典例 | 输出 |
|---|---|---|---|---|
| 回归 | $x \to y$ 的连续映射 | 有标签 $(x, y), y \in \mathbb{R}$ | 线性回归 | 预测函数 |
| 降维 | 数据的高效表示 | 无标签,只有 $x$ | PCA | 低维表示 |
| 密度估计 | 数据的概率描述 | 无标签,只有 $x$ | GMM | 概率分布 |
| 分类 | $x \to y$ 的离散映射 | 有标签 $(x, y)$,$y$ 属于离散集 | SVN | 分类器 |
关于方差
方差是机器学习中无处不在的概念,因为它量化了不确定性和可变性。在模型评估中:偏差-方差权衡。任何模型的误差都可以分解为三部分:
总误差 = 偏差² + 方差 + 不可约误差
- 偏差:模型预测的平均值与真实值之间的差距
- 高偏差:模型过于简单(欠拟合)
- 用直线拟合抛物线数据
- 方差:模型对训练数据微小变化的敏感程度
- 高方差:模型过于复杂(过拟合)
- 高阶多项式严格穿过每个训练点,但对新数据预测波动大
一些经典的权衡是:
- 在简单模型上:高偏差,低方差,稳定但可能不准确
- 在复杂模型上:低偏差,高方差,准确但不稳定
设计算法的目标就是找到最佳平衡点