查看全课大纲(第 2 / 82 节)
  1. 1.函数与数据泛化
  2. 2.向量:从几何直觉到高维空间
  3. 3.矩阵与张量
  4. 4.特征值与特征向量:矩阵变换的不动方向
  5. 5.凸函数:从向量求导的矩阵记号到好优化的函数形状
  6. 6.概率与统计:机器学习的数学基础
  7. 7.独立性与随机变量:贝叶斯公式与二项分布
  8. 8.期望、方差与协方差:随机变量的数字画像
  9. 9.联合概率:当一条轴不够用的时候
  10. 10.概率分布(一):从伯努利到伽马函数
  11. 11.概率分布(二):贝塔、泊松、正态与两个贝叶斯故事
  12. 12.机器学习的模型:找输入与输出的关系
  13. 13.机器学习的应用
  14. 14.过拟合
  15. 15.机器学习的分类
  16. 16.有监督学习:从房价预测说起
  17. 17.损失函数
  18. 18.梯度下降(上):更新规则与学习速率
  19. 19.梯度下降(2)
  20. 20.牛顿方法
  21. 21.KNN简介
  22. 22.距离测算
  23. 23.朴素贝叶斯
  24. 24.朴素贝叶斯的实际应用
  25. 25.信息熵:决策树构建的度量基础
  26. 26.信息增益与决策树的构建
  27. 27.ID3算法
  28. 28.决策树节点的划分
  29. 29.CART树
  30. 30.Bagging
  31. 31.Boosting:自适应提升算法
  32. 32.Gradient Boosting
  33. 33.线性模型:回归与分类的同一副骨架
  34. 34.最小二乘:把最优参数直接解出来
  35. 35.最小二乘法的几何与概率视角
  36. 36.极大似然:给最小二乘一个概率出身
  37. 37.逻辑回归(1):把线性模型接到分类上
  38. 38.逻辑回归(2):损失函数与多分类
  39. 39.---- 手造数据: 5 个样本, 2 个特征; x2 几乎 = 2*x1 (偏差手工指定, 无随机) ----
  40. 40.讲师例: 向量 "23014" -- 三把范数尺子量同一个向量
  41. 41.优化方法(1):坐标下降与前向选择
  42. 42.优化方法(2):前向策略与最小角回归
  43. 43.拉格朗日乘子法(1):从无约束到等式约束
  44. 44.拉格朗日乘子法(2):等式约束下的平行条件与拉格朗日函数
  45. 45.拉格朗日乘子法(3):不等式约束与 KKT 条件
  46. 46.最大间隔:把分类问题变成优化问题
  47. 47.拉格朗日对偶问题:把 w 和 b 全部换成 α
  48. 48.支持向量:边界上的少数派
  49. 49.SVM 计算过程:一笔到底算完,再走进核方法
  50. 50.贝叶斯公式:概率即信念
  51. 51.隐含变量和概率模型:给看不见的原因建模
  52. 52.EM 算法:期望与最大化的迭代
  53. 53.琴生不等式:EM 的数学钥匙
  54. 54.三个硬币问题:EM 的复盘与衔接
  55. 55.高斯混合模型:用隐变量解释双峰数据
  56. 56.隐马尔可夫模型
  57. 57.隐马尔可夫模型(2):前向算法与动态混合模型
  58. 58.隐马尔可夫模型在 NLP 中的运用
  59. 59.EM 算法:把「为什么收敛」推到底
  60. 60.HMM 在 NLP 中的运用:从分词到机器翻译
  61. 61.HMM 参数估计:Baum-Welch 的三块拉格朗日
  62. 62.高维下的高斯模型
  63. 63.主题模型:从词袋到隐含主题
  64. 64.Dirichlet 分布(1)
  65. 65.Dirichlet 分布(2)
  66. 66.统计学习内容回顾
  67. 67.K-means 算法
  68. 68.PCA 降维
  69. 69.SVD 降维
  70. 70.从聚类到流形
  71. 71.局部线性嵌入
  72. 72.随机邻域嵌入:SNE 与 t-SNE
  73. 73.无参模型:让数据自己说话
  74. 74.高斯过程:函数空间里的正态分布
  75. 75.高斯过程(2):噪声、正则化与核的线性组合
  76. 76.神经网络简介:从感知器到自编码器
  77. 77.反向传播:把误差一层层传回去
  78. 78.卷积神经网络(CNN):让特征自己学出来
  79. 79.循环神经网络(RNN):给网络装上记忆
  80. 80.深度学习回顾:静态一类,动态一类
  81. 81.增强学习(1):蒙特卡洛、树搜索与 Q-learning
  82. 82.强化学习(2):从乌鸦吃核桃到井字棋的 value 回传

向量:从几何直觉到高维空间

约 22 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · 机器学习算法精讲

从本节开始进入线性代数——它在整个机器学习里无处不在。第一个概念是向量(vector):它既是物理世界里力、速度这类”有方向的量”的数学表达,更是机器学习中表示一个数据样本的基本单元。本节同时引入衡量向量”大小”的工具——范数(norm),L1、L2、L0、L∞ 这一族记号会贯穿后面的损失函数、正则化与距离度量。

💡 核心导读

  • 向量与标量的区别:向量有方向;用分量(在各坐标轴上的投影)可以把它写成代数形式。
  • 高维空间并不神秘:机器学习的特征动辄几十上百维;用”圆与球的截面”思维实验,可以从低维类比高维。
  • 范数(模):向量长度的度量,L2 是勾股定理的推广;它是个标量,满足非负性、齐次性与三角不等式。
  • 范数一族:Lp 范数统一了 L1(绝对值之和)与 L2(平方和开根);L0 数非零个数,L∞ 取最大绝对值。
  • 范数即距离:L2 定义欧几里得距离,L1 定义曼哈顿距离。

向量的直观理解与表示

先分清标量(scalar)与向量(vector)。讲师的例子很接地气:“你多重?""我 150 斤。""你多高?""我 1 米 73。“——这些只有大小、没有方向的量是标量。而物理课上学过的力、速度、位移,除了大小还有方向,这类量就是向量。

在带坐标轴的平面里,一个向量就是从原点出发、指向某一点的一支”箭头”。它在 x 轴、y 轴上的投影叫做分量:设 x、y 方向的单位向量分别为 i\mathbf{i}、j\mathbf{j},则向量 M\mathbf{M} 可写作

M=Mxi+Myj\mathbf{M} = M_x \mathbf{i} + M_y \mathbf{j}

单位向量就是”一份标准长度”,Mx=7M_x = 7 表示 x 方向叠了 7 小份,My=5M_y = 5 表示 y 方向叠了 5 小份——任何向量都能写成”各方向上有多少小份”的叠加。三维空间无非再添一根 z 轴(单位向量 k\mathbf{k})。

所有向量构成向量空间(vector space)。我们最常打交道的是欧几里得空间(Euclidean space)——可以简单理解为带笛卡尔坐标系(横轴纵轴那种直角坐标)的空间。讲师提醒:高中还学过极坐标系(用一个角度加一个长度刻画位置),那就不是欧几里得空间的玩法了;我们生活的三维空间、以及二维平面、一条直线,都是欧几里得空间,只是维度小的那些”住户”而已。

高维空间:圆与球的截面思维实验

机器学习的特征往往远超三维——描述一个同学,“是男是女”是一维特征,“多高”第二维,“体重”第三维,“学历”第四维……任何数据都能这样用高维特征表述,这就是我们为什么要研究向量与高维空间。可四维以上画不出来,怎么建立直觉?讲师给了一个漂亮的思维实验——想”圆”是什么:

  • 一维空间(一条线)上的”圆”:到某点距离相等的点——恰好是两个点。
  • 二维空间:到某点距离相等的点集是圆;而这个圆被一条一维直线截一下,截面正是”两个点”——一维的”圆”。
  • 三维空间:到某点距离相等的点集是球;用一个平面去截球,截面是个圆——二维的”圆”。
  • 依此类推,四维空间的”球”,用三维空间去截它,截面就是一个三维的球体。

顺着”截面”往下推,低维直觉就能一路延展到高维——数学构造(向量分量表示)则让我们在画不出来的维度里照样精确运算。

向量的模(Norm):衡量向量的大小

向量的模(norm)就是它的长度/大小,记作 ∥x∥\Vert\mathbf{x}\Vert。在二维欧几里得空间里,这就是勾股定理:向量 x=[x1,x2]T\mathbf{x}=[x_1, x_2]^T 的模为

∥x∥2=x12+x22\Vert\mathbf{x}\Vert_2 = \sqrt{x_1^2 + x_2^2}

(下标 2 的原因马上揭晓。)模本身不是向量,是标量,且满足三条基本性质:

  1. 非负性:∥x∥≥0\Vert\mathbf{x}\Vert \ge 0,且只有零向量模为零——向量不为零,它在各方向的投影与自身总有长度。
  2. 齐次性:向量乘常数,常数直接提出来:∥αx∥=∣α∣⋅∥x∥\Vert \alpha \mathbf{x} \Vert = |\alpha| \cdot \Vert\mathbf{x}\Vert。
  3. 三角不等式:∥x+y∥≤∥x∥+∥y∥\Vert\mathbf{x}+\mathbf{y}\Vert \le \Vert\mathbf{x}\Vert + \Vert\mathbf{y}\Vert——两边之和大于第三边。

Lp 范数一族

刚才的模平方再开根,本质是”分量的 2 次幂求和、再开 2 次根”——把 2 换成一般指数 pp,就得到 Lp 范数:

∥x∥p=(∑i=1n∣xi∣p)1p,p≥1\Vert\mathbf{x}\Vert_p = \left( \sum_{i=1}^{n} |x_i|^p \right)^{\frac{1}{p}}, \quad p \ge 1

  • p=1p=1(L1 范数):各分量绝对值直接相加。向量 (1,2)(1, 2) 的 L1 范数 =∣1∣+∣2∣=3= |1| + |2| = 3。
  • p=2p=2(L2 范数):平方和开根号,经典的欧几里得长度。(1,2)(1, 2) 的 L2 范数 =1+4=5= \sqrt{1+4} = \sqrt{5}。

机器学习里还常用到两个”编外”成员:

  • L0”范数”:数一数向量里有多少个非零元素。(1,2)(1, 2) 的 L0 是 2;(1,0)(1, 0) 的 L0 是 1(那个 0 不算数)。它不是严格意义的范数,但在稀疏编码(sparse coding)/稀疏表示里非常关键——我们常希望参数里大量元素是 0、只留少数有值,L0 正是稀疏性的直接度量。
  • L∞ 范数:p→∞p \to \infty 时会发生什么?按定义是各分量 pp 次幂求和再开 pp 次根。关键在于指数增长的无情:假设最大的分量是 xjx_j,那么 xjpx_j^p 会把其他项甩开天文数字般的差距——讲师的例子,310003^{1000} 远大于 2.910002.9^{1000},仅仅 0.1 的差距被指数放大成了不可逾越的鸿沟,何况 pp 趋于无穷。于是求和被最大项独占,开 pp 次根后:

∥x∥∞=max⁡i∣xi∣\Vert\mathbf{x}\Vert_\infty = \max_i |x_i|

即所有分量绝对值的最大值。比如 (3,7,9)(3, 7, 9) 的 L∞ 范数就是 9。

下面的代码把这一族范数一次算齐:

def l_p_norm(vector, p):
    """计算向量的 Lp 范数(p=0 计非零个数,p=inf 取最大绝对值)。"""
    if p == 0:
        return sum(1 for x in vector if abs(x) > 1e-10)
    elif p == float('inf'):
        return max(abs(x) for x in vector)
    else:
        return sum(abs(x) ** p for x in vector) ** (1.0 / p)

v = [3, -4, 0, 1]
print(f"向量 v = {v}")
print(f"L1 范数 = {l_p_norm(v, 1):g}")
print(f"L2 范数 = {l_p_norm(v, 2):.4f}")
print(f"L∞ 范数 = {l_p_norm(v, float('inf')):g}")
print(f"L0 非零个数 = {l_p_norm(v, 0)}")
向量 v = [3, -4, 0, 1]
L1 范数 = 8
L2 范数 = 5.0990
L∞ 范数 = 4
L0 非零个数 = 3

从范数到距离

范数天然定义距离:给定点 a\mathbf{a} 与 b\mathbf{b},差向量 b−a\mathbf{b}-\mathbf{a} 的模就是两点距离。

  • 欧几里得距离(L2 距离):d2(a,b)=∥b−a∥2=∑i(bi−ai)2d_2(\mathbf{a},\mathbf{b}) = \Vert\mathbf{b}-\mathbf{a}\Vert_2 = \sqrt{\sum_i (b_i - a_i)^2}——就是我们说的”直线距离”。
  • 曼哈顿距离(L1 距离):d1(a,b)=∥b−a∥1=∑i∣bi−ai∣d_1(\mathbf{a},\mathbf{b}) = \Vert\mathbf{b}-\mathbf{a}\Vert_1 = \sum_i |b_i - a_i|。名字来自曼哈顿那样横平竖直的街区:从 A 点到 B 点没法穿墙直插,只能沿街道走,横方向走了多少、纵方向走了多少,加起来就是 L1 距离——无论先横后纵还是先纵后横,走的总路程一样。
import math

def manhattan_distance(a, b):
    """L1 距离:各维差绝对值之和。"""
    return sum(abs(a_i - b_i) for a_i, b_i in zip(a, b))

def euclidean_distance(a, b):
    """L2 距离:各维差平方和开根。"""
    return math.sqrt(sum((a_i - b_i) ** 2 for a_i, b_i in zip(a, b)))

point_a = [1, 2]
point_b = [4, 6]
print(f"点 A = {point_a}, 点 B = {point_b}")
print(f"曼哈顿距离 (L1): {manhattan_distance(point_a, point_b)}")
print(f"欧几里得距离 (L2): {euclidean_distance(point_a, point_b)}")
# 验证:|4-1| + |6-2| = 7;sqrt(3^2 + 4^2) = sqrt(25) = 5
点 A = [1, 2], 点 B = [4, 6]
曼哈顿距离 (L1): 7
欧几里得距离 (L2): 5.0

单位球的形状:范数的几何图像

把 ∥x∥p=1\Vert\mathbf{x}\Vert_p = 1 的点集画出来(“单位球”),不同 p 会画出不同的图形:p=1p=1 是一个内切的小方形(顶点落在坐标轴上),p=2p=2 是圆,p=1.5,3,4…p=1.5, 3, 4 \ldots 随 p 增大不断向外鼓,直到 p=∞p=\infty 时变成一个大方框(由最大分量把边撑住)。讲师在课上画的就是这一族图形从里到外的连续变化。

这个形状差异在机器学习里后果深远,先记两点直觉:L2 的圆对各方向”一视同仁”;L1 的菱形顶点恰在坐标轴上——最优解容易”坐”在轴上,意味着很多分量恰好为零(稀疏解)。稀疏性正是 sparse coding 追求的性质;L1 与稀疏解、L2 与参数平滑的正式搭配,到第 9 章岭回归与 LASSO 时展开。

📝 动手练一练

  1. 概念辨析:向量 [30,25,5][30, 25, 5](三个量纲不同的特征值)的 L1 与 L2 范数各是多少?在这个量纲混杂的语境下,哪种范数更”合理”?
👉 点击查看参考答案

L1 = ∣30∣+∣25∣+∣5∣=60|30|+|25|+|5| = 60;L2 = 900+625+25=1550≈39.37\sqrt{900+625+25} = \sqrt{1550} \approx 39.37。

没有绝对答案,重在思考:L1 是各项的简单加和,像一种”线性综合分”;L2 先平方再求和,会进一步放大特大分量的主导地位(30 的贡献占比更大)。值得注意的点是:量纲不同的特征直接算范数,本身就要小心——数值大的特征会天然主导结果,这正是后面数据预处理(特征缩放)要解决的问题。

  1. 代码实践:不用 math.sqrt,改用指数运算符 ** 实现同样的 L2 范数函数,并与原函数核对结果。
👉 点击查看参考答案
def l2_norm_no_sqrt(vector):
    """L2 范数:平方和的 0.5 次幂(与 math.sqrt 等价)。"""
    return sum(x ** 2 for x in vector) ** 0.5

test_vector = [3, 4]
result = l2_norm_no_sqrt(test_vector)
print(f"向量 {test_vector} 的 L2 范数 = {result}")
assert abs(result - 5.0) < 1e-10
向量 [3, 4] 的 L2 范数 = 5.0

x ** 0.5 与 math.sqrt(x) 数值等价——开平方根本身就是”二分之一次幂”。

本章小结

向量 = 有方向的量,用各方向的分量表示;机器学习中一个样本就是一个特征向量,天然生活在高维欧几里得空间里——“圆与球的截面”帮我们用低维直觉类比高维。范数度量向量大小:L2 是勾股定理(欧几里得距离),L1 是绝对值之和(曼哈顿距离),L0 数非零个数(稀疏性),L∞ 取最大分量;Lp 公式统一全族,p 从 1 到 ∞ 的单位球从菱形一路鼓成方框。这些记号将在损失函数、KNN 的距离度量与第 9 章的正则化中反复出场。

📋 行动清单

  • 用向量给自己”画像”:性别、身高、体重、学历……把每个特征当一维,体会”样本=高维空间中的点”
  • 写一个函数同时输出两个向量的 L1 / L2 / L∞ 三种距离,对同一对点比较大小关系
  • 思考:用 L2 距离比较两个样本时,若某特征数值范围远大于其他特征(量纲悬殊),距离会被谁主导?这对”要不要先做特征缩放”有何启示?

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第1章课件:机器学习的数学基础 I
    下载
  • 第1章笔记:机器学习导论
    下载
  • 第1章笔记:行列式的几何解释
    下载
  • 第1章笔记:Lp 范数
    下载