数据生活在几何空间中
一切都是向量
在机器学习中,数据生活在几何空间中。每个具有N个特征的数据点都是N维空间中的一个点。这不是隐喻 — 这是每个算法的字面数学基础。
手写数字图像(28×28像素)是784维空间中的一个点。每个像素是一个坐标。两个相似的数字是该空间中附近的点。两个不同的数字距离很远。
词嵌入将一个词映射到300维空间中的一个点。含义相近的词最终会在同一邻域中。"狗"和"小狗"很接近。"狗"和"议会"很远。
具有50个特征的用户档案(年龄、购买历史、点击模式)是50维空间中的一个点。推荐引擎找到"附近"的用户在该空间中,并建议他们的几何邻居喜欢什么。
几何是我们推理这些空间的方式。距离、方向、角度、投影 — 这些是机器学习的基本操作。
向量操作 — 构建块
点积驱动一切
三种向量操作在机器学习中最重要:
向量加法 — 组合特征或信号。如果您添加两个词向量,您会得到一个表示两个概念混合的向量。
标量乘法 — 缩放向量改变其大小而不改变其方向。梯度下降中的学习率是标量乘数。
点积 — 这是主力。两个向量a和b的点积等于|a||b|cos(θ),其中θ是它们之间的角度。当向量被归一化(单位长度)时,点积就是角度的余弦。
余弦相似度 = cos(θ) = (a·b) / (|a||b|)
这个单一的公式驱动:
- 搜索引擎 — 找到与查询相似的文档
- 注意力机制 — 决定哪些令牌对彼此重要
- 推荐引擎 — 匹配用户档案和项目档案
- 检索增强生成 — 为语言模型查找相关背景
cos(θ) = 1意味着向量指向完全相同的方向(相同的含义)。cos(θ) = 0意味着它们垂直(无关)。cos(θ) = -1意味着它们指向相反的方向(相对的含义)。
余弦相似度
余弦相似度是现代机器学习系统中最常用的度量之一。
三种测量距离的方法
距离度量的选择改变了"相似"的含义
给定空间中的两个点,有许多方法可以测量它们之间的"距离"。每个度量定义了不同的几何,该几何决定了您的模型认为"相似"的内容。
欧几里得距离(L2) — 直线距离。d = √(Σ(aᵢ - bᵢ)²)。这是"乌鸦飞"的距离,是您的直觉所期望的。它平等对待所有维度,并对大小很敏感。
曼哈顿距离(L1) — 网格行走距离。d = Σ|aᵢ - bᵢ|。就像在城市街区中导航 — 您只能沿着轴移动,永远不会对角线。对单个维度中的异常值更强大,因为它不会对差异进行平方。
余弦距离 — 测量向量之间的角度,完全忽略大小。d = 1 - cos(θ)。两个关于相同主题的文档具有较小的余弦距离,无论长度如何。两个关于不同主题的相等长度文档具有较大的余弦距离。
选择不是任意的。如果大小很重要(药物剂量、反应器温度),请使用欧几里得。如果您关心比例而不是绝对值(词频分布、用户偏好档案),请使用余弦。如果单个特征差异比聚合大小更重要(故障诊断,其中一个传感器激增是有意义的),请使用曼哈顿。
K最近邻 — 纯几何
KNN:最简单的几何算法
K最近邻是机器学习中最透明的几何算法。它没有训练阶段 — 它就是训练数据。
要对新点进行分类:找到训练数据中最接近的K个点。让他们投票。多数阶级获胜。这就是整个算法。
KNN产生的决策边界是Voronoi图 — 空间的分割,其中每个点属于其最近训练示例的区域。边界是相邻训练点之间的垂直平分线。
这里是重要的几何洞察:距离度量的选择完全改变了Voronoi图。欧几里得距离产生弯曲的圆形边界。曼哈顿距离产生菱形边界。余弦距离产生角形的锥形边界。
相同的训练数据。相同的K。不同的距离度量。完全不同的模型。几何就是模型。
选择距离度量
距离度量不可互换 — 正确的选择取决于您的数据"相似"的含义。
超平面 — 高维中的平面边界
每个线性分类器都找到一个超平面
线性分类器找到一个平面表面,将两个类分开。该表面的维度取决于空间:
- 在2D空间中,边界是线(1维)
- 在3D空间中,边界是平面(2维)
- 在784D空间(MNIST数字图像)中,边界是783维超平面
一般的模式:在N维空间中,决策边界是一个(N-1)维的平面表面,称为超平面。
逻辑回归、支持向量机和单层感知器都是超平面查找器。它们在如何找到最佳超平面上有所不同:
- 逻辑回归最大化正确分类的概率
- SVM最大化几何边距 — 从超平面到最近数据点的距离
- 感知器简单地找到任何分离数据的超平面,无法保证最优性
线性分类器的权重向量就是超平面的法向量。偏差项将超平面从原点移开。这些是具有几何解释的几何对象。
超越平面边界
当数据不是线性可分的时
许多现实问题无法用平面边界解决。考虑对猫与狗图像进行分类 — 像素空间中没有单个超平面将它们干净地分开。
存在两种几何策略:
策略1:核技巧 — 将数据转换到更高维的空间,使其可线性分离。一个经典的例子:圆内的点(A类)和2D中的圆外点(B类)。没有线将它们分开。但添加第三维z = x² + y²,内部点(x² + y²小)低位,而外部点(x² + y²大)高位。现在一个平面完美地分离它们。
具有核函数的SVM隐式地执行此操作 — 它们在高维空间中计算点积而不会实际构造实际的高维向量。这称为"核技巧",这是一个纯粹的几何洞察。
策略2:神经网络 — 堆积线性变换与非线性激活函数。每个层应用线性变换(矩阵乘法=旋转+缩放+剪切),然后是非线性"弯曲"(ReLU、sigmoid、tanh)。许多线性然后弯曲操作的组合可以近似任何连续的边界形状。
深度神经网络是一系列几何变换,可以扭曲输入空间,直到类在最后一层中线性可分。
分离圆形数据
这是机器学习中最重要的几何问题之一。
损失表面
训练=沿着表面向下走
每个机器学习模型都有参数 — 权重和偏差。损失函数测量模型的预测错误程度。这些共同定义了损失表面:一个景观,其中每个点对应于一组特定的参数值,高度是损失。
对于一个有2个参数的模型,损失表面是一个3D的景观,您可以可视化 — 丘陵、山谷和平原。对于一个有1750亿个参数的模型(如GPT-3),损失表面存在于1750亿维空间中。数学是相同的。
梯度下降是导航该表面的算法。梯度是一个几何对象 — 一个指向最陡上升方向的向量。要减少损失,请沿相反方向移动:负梯度。这从字面上是下坡走。
学习率控制步长。太大,您就会超过山谷。太小,您就会爬行。梯度告诉您方向;学习率告诉您走多远。
鞍点、最小值和高维几何
损失景观不是一个简单的碗
对训练的天真的描写想象一个光滑的碗,有一个最低点。现实要复杂得多:
局部最小值 — 不是最深的山谷。梯度下降可能陷入这里,满足于每个方向都向上,即使存在更深的山谷。
鞍点 — 形状像马鞍。损失在某些维度中向下弯曲,在其他维度中向上弯曲。在2D中这很少见。在高维中,鞍点指数级比局部最小值更常见。1000维空间中的临界点必须在所有1000个维度中向上弯曲才能成为局部最小值。如果即使一个维度向下弯曲,它也是一个鞍点。
平坦的高原 — 梯度接近零的区域。训练停滞,因为没有坡度可以遵循。
尖锐与平坦的最小值 — 尖锐的最小值是一个狭窄的山谷。平坦的最小值是一个宽阔的山谷。研究表明,平坦最小值更好地泛化到看不见的数据,因为对参数的小扰动(来自新数据中的噪声)不会显着改变损失。
带动量的SGD有助于逃脱鞍点和尖锐的最小值。随机梯度下降的随机性作用就像在表面上摇晃一个球 — 它从狭窄的陷阱中反弹出来,找到更广阔、更平坦的山谷。
SGD对比完整批梯度下降
这是机器学习训练中最重要的实践见解之一。
词作为向量 — 语义算术
意义有方向
Word2Vec、GloVe和现代变换器嵌入将离散令牌(词、子词)映射到连续向量空间。结果是一个意义具有坐标的几何世界。
著名的例子:king - man + woman ≈ queen
这是向量算术。从"man"到"king"的向量代表概念"应用于男性的皇权"。从"woman"到"queen"的向量代表"应用于女性的皇权"。这些向量大约是平行的 — 相同的方向、相同的关系、不同的起点。
从对文本的训练中出现的其他几何关系:
- Paris - France + Italy ≈ Rome(首都关系)
- walked - walk + swim ≈ swam(过去时变换)
- bigger - big + small ≈ smaller(比较形式)
没有人为这些关系编程。模型通过阅读数十亿个词发现意义具有几何结构。嵌入空间中的方向对应于语义关系。这是机器学习中最深刻的几何发现之一。
流形假设
高维数据生活在低维表面上
一个64×64灰度面部图像有4096个像素值 — 它是4096维空间中的一个点。但并非该空间中的每个点都是有效的面部。大多数随机4096维向量看起来像静态噪声,而不是面部。
流形假设指出,现实世界的高维数据实际上存在于或附近低维弯曲表面(流形)嵌入到高维空间。面部流形可能只有50维 — 由照明角度、头部姿势、表情、肤色、年龄等因素参数化。
这是一个具有实际后果的几何主张:
- 降维(PCA、t-SNE、UMAP)有效,因为数据大约是低维的。这些算法找到流形并投影到它。
- 自编码器学会将数据压缩到低维潜在空间(流形),并从中重构。
- 生成模型(VAE、扩散模型)学习流形并在上面取样新点 — 生成看起来真实的新面部、新音乐、新文本,因为它位于学习的流形上。
当您的模型无法泛化时,一个几何的解释是:它学习了错误的流形。训练数据描绘出的表面与真实数据分布不匹配。
向量类比
嵌入空间的几何结构是现代机器学习中最令人惊讶的结果之一。
ROC曲线 — 分类质量作为面积
评估度量生活在几何空间中
ROC(接收器工作特性)曲线绘制真阳性率(y轴)对假阳性率(x轴),当您扫动分类阈值从0到1时。
这是一个具有有意义地标的几何空间:
- (0, 1) — 左上角 — 完美分类。检测到每个正数,零假警报。
- (0, 0) — 左下角 — 模型将所有内容分类为负数。
- (1, 1) — 右上角 — 模型将所有内容分类为正数。
- 对角线从(0,0)到(1,1) — 随机分类器。在每个阈值,它都有相等的真阳性和假阳性率。
AUC(曲线下面积)从字面上是一个几何面积测量。AUC = 0.5意味着模型是随机的(对角线下的面积)。AUC = 1.0意味着完美分类(整个单位平方)。一个好的模型的ROC曲线向左上角鞠躬,包围了更多的面积。
AUC有一个美妙的概率论解释:它等于模型评分随机正样本高于随机负样本的概率。但在几何上,它只是面积 — 正是这种几何的简单性使其直观。
精确度召回空间
不同的几何权衡
精确度召回曲线生活在与ROC曲线不同的几何空间中,它们讲述了不同的故事。
精确度 = 模型标记的所有正数中,实际上是正数的比例?
召回 = 所有实际阳性中,模型找到了多少比例?
当您降低分类阈值(将更多事物标记为正数)时,回想增加(您捕获更多真实的阳性),但精确度通常下降(您还捕获更多误报)。这种权衡在精确度召回空间中追踪曲线。
F1分数 = 2 × (精确度 × 召回) / (精确度 + 召回) — 调和平均值。从几何上讲,F1分数等于精确度召回曲线上精确度等于召回的点。这是曲线与精确度召回平方的对角线相交的位置。
平均精度(AP) = 精确度召回曲线下的面积。像AUC-ROC一样,它将整个曲线总结为表示几何面积的单个数字。
ROC曲线和精确度召回曲线是同一模型的互补几何视图。ROC曲线在不平衡的数据集上可能会过度乐观(99%负类)。精确度召回曲线保持信息性,因为它们关注正类。
AUC-ROC解释
从几何上理解AUC-ROC的衡量有助于您在模型之间进行选择。
变换器 — 点积作为注意力
注意力是几何相似度测量
变换器架构 — 现代语言模型的基础 — 建立在一个几何操作之上:点积。
对于序列中的每个令牌,变换器计算三个向量:查询(Q)、密钥(K)和值(V),每个都通过将输入嵌入乘以学习的权重矩阵来获得。
两个令牌之间的注意力分数是:score = Q · K^T / √d
这是一个缩放点积 — 一个几何相似度测量。当Q和K指向相同方向(它们之间的小角度)时,点积很大:这个密钥与此查询高度相关。当它们垂直时,点积为零:无关。
分数通过softmax传递以创建概率分布:注意力权重总和为1。输出是值向量的加权和,其中权重由几何对齐确定。
在"猫坐在垫子上因为它累了"的句子中,注意力计算:对于词"it",哪些其他词与最几何对齐?如果"it"的Q向量与"cat"的K向量最密切对齐,模型关注"cat" — 通过几何解析代词参考。
多头注意力 — 多个几何视角
为什么多个头?
具有单个Q、K、V矩阵集合的自注意力计算一种类型的几何对齐。但语言有许多类型的关系 — 语法、语义、位置、指称。
多头注意力使用多个Q、K、V投影矩阵集合,每个投影到嵌入的不同子空间。每个头在其自己的几何子空间中测量对齐。
研究人员在检查注意力头时观察到的:
- 头1可能关注前面的词(位置接近)
- 头2可能关注主语中的动词(语法依赖)
- 头3可能关注更早背景中语义相关的词
- 头4可能关注最近的名词(共指)
每个头是对相同数据的不同几何透镜。投影以不同的方式旋转和缩放嵌入空间,通过对齐使不同的关系可见。
这就是为什么变换器的表现优于具有单个注意力机制的模型。单个点积在完整嵌入空间中捕获一个相似性概念。多个点积在不同的子空间中同时捕获多个、互补的概念。
多头注意力
多头注意力是变换器的关键架构创新之一。
机器学习是应用几何
统一的线索
看看我们所涵盖的内容。机器学习中的每个主要概念都有一个几何核心:
数据 = 高维空间中的点
特征 = 该空间的维度
相似性 = 点之间的距离或角度
分类 = 在类之间找到几何边界
训练 = 通过遵循梯度来导航损失表面
嵌入 = 学习的坐标系,其中几何编码含义
评估 = 度量空间中曲线下的面积
注意力 = 测量角度对齐的点积
这不是巧合。机器学习从线性代数和微分几何继承了其数学框架 — 从根本上关于空间、形状和变换的领域。
理解几何给您的东西是仅仅记住算法无法做到的:直觉。当您的模型失败时,几何观点建议到哪里看。类不能分离吗?看看边界。训练困在吗?检查损失景观。嵌入差吗?检查相似的项是否在几何上接近。注意力分散吗?检查子空间投影。
几何是相同的,无论您是使用3个维度还是30亿个。数学缩放。直觉转移。这是使几何成为机器学习的通用语言的原因。
几何调试
我们已经涵盖了向量、距离、边界、训练、嵌入、评估和注意力 — 所有通过几何的镜头。