查看全课大纲(第 2 / 82 节)
- 1.函数与数据泛化
- 2.向量:从几何直觉到高维空间
- 3.矩阵与张量
- 4.特征值与特征向量:矩阵变换的不动方向
- 5.凸函数:从向量求导的矩阵记号到好优化的函数形状
- 6.概率与统计:机器学习的数学基础
- 7.独立性与随机变量:贝叶斯公式与二项分布
- 8.期望、方差与协方差:随机变量的数字画像
- 9.联合概率:当一条轴不够用的时候
- 10.概率分布(一):从伯努利到伽马函数
- 11.概率分布(二):贝塔、泊松、正态与两个贝叶斯故事
- 12.机器学习的模型:找输入与输出的关系
- 13.机器学习的应用
- 14.过拟合
- 15.机器学习的分类
- 16.有监督学习:从房价预测说起
- 17.损失函数
- 18.梯度下降(上):更新规则与学习速率
- 19.梯度下降(2)
- 20.牛顿方法
- 21.KNN简介
- 22.距离测算
- 23.朴素贝叶斯
- 24.朴素贝叶斯的实际应用
- 25.信息熵:决策树构建的度量基础
- 26.信息增益与决策树的构建
- 27.ID3算法
- 28.决策树节点的划分
- 29.CART树
- 30.Bagging
- 31.Boosting:自适应提升算法
- 32.Gradient Boosting
- 33.线性模型:回归与分类的同一副骨架
- 34.最小二乘:把最优参数直接解出来
- 35.最小二乘法的几何与概率视角
- 36.极大似然:给最小二乘一个概率出身
- 37.逻辑回归(1):把线性模型接到分类上
- 38.逻辑回归(2):损失函数与多分类
- 39.---- 手造数据: 5 个样本, 2 个特征; x2 几乎 = 2*x1 (偏差手工指定, 无随机) ----
- 40.讲师例: 向量 "23014" -- 三把范数尺子量同一个向量
- 41.优化方法(1):坐标下降与前向选择
- 42.优化方法(2):前向策略与最小角回归
- 43.拉格朗日乘子法(1):从无约束到等式约束
- 44.拉格朗日乘子法(2):等式约束下的平行条件与拉格朗日函数
- 45.拉格朗日乘子法(3):不等式约束与 KKT 条件
- 46.最大间隔:把分类问题变成优化问题
- 47.拉格朗日对偶问题:把 w 和 b 全部换成 α
- 48.支持向量:边界上的少数派
- 49.SVM 计算过程:一笔到底算完,再走进核方法
- 50.贝叶斯公式:概率即信念
- 51.隐含变量和概率模型:给看不见的原因建模
- 52.EM 算法:期望与最大化的迭代
- 53.琴生不等式:EM 的数学钥匙
- 54.三个硬币问题:EM 的复盘与衔接
- 55.高斯混合模型:用隐变量解释双峰数据
- 56.隐马尔可夫模型
- 57.隐马尔可夫模型(2):前向算法与动态混合模型
- 58.隐马尔可夫模型在 NLP 中的运用
- 59.EM 算法:把「为什么收敛」推到底
- 60.HMM 在 NLP 中的运用:从分词到机器翻译
- 61.HMM 参数估计:Baum-Welch 的三块拉格朗日
- 62.高维下的高斯模型
- 63.主题模型:从词袋到隐含主题
- 64.Dirichlet 分布(1)
- 65.Dirichlet 分布(2)
- 66.统计学习内容回顾
- 67.K-means 算法
- 68.PCA 降维
- 69.SVD 降维
- 70.从聚类到流形
- 71.局部线性嵌入
- 72.随机邻域嵌入:SNE 与 t-SNE
- 73.无参模型:让数据自己说话
- 74.高斯过程:函数空间里的正态分布
- 75.高斯过程(2):噪声、正则化与核的线性组合
- 76.神经网络简介:从感知器到自编码器
- 77.反向传播:把误差一层层传回去
- 78.卷积神经网络(CNN):让特征自己学出来
- 79.循环神经网络(RNN):给网络装上记忆
- 80.深度学习回顾:静态一类,动态一类
- 81.增强学习(1):蒙特卡洛、树搜索与 Q-learning
- 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 方向的单位向量分别为 、,则向量 可写作
单位向量就是”一份标准长度”, 表示 x 方向叠了 7 小份, 表示 y 方向叠了 5 小份——任何向量都能写成”各方向上有多少小份”的叠加。三维空间无非再添一根 z 轴(单位向量 )。
所有向量构成向量空间(vector space)。我们最常打交道的是欧几里得空间(Euclidean space)——可以简单理解为带笛卡尔坐标系(横轴纵轴那种直角坐标)的空间。讲师提醒:高中还学过极坐标系(用一个角度加一个长度刻画位置),那就不是欧几里得空间的玩法了;我们生活的三维空间、以及二维平面、一条直线,都是欧几里得空间,只是维度小的那些”住户”而已。
高维空间:圆与球的截面思维实验
机器学习的特征往往远超三维——描述一个同学,“是男是女”是一维特征,“多高”第二维,“体重”第三维,“学历”第四维……任何数据都能这样用高维特征表述,这就是我们为什么要研究向量与高维空间。可四维以上画不出来,怎么建立直觉?讲师给了一个漂亮的思维实验——想”圆”是什么:
- 一维空间(一条线)上的”圆”:到某点距离相等的点——恰好是两个点。
- 二维空间:到某点距离相等的点集是圆;而这个圆被一条一维直线截一下,截面正是”两个点”——一维的”圆”。
- 三维空间:到某点距离相等的点集是球;用一个平面去截球,截面是个圆——二维的”圆”。
- 依此类推,四维空间的”球”,用三维空间去截它,截面就是一个三维的球体。
顺着”截面”往下推,低维直觉就能一路延展到高维——数学构造(向量分量表示)则让我们在画不出来的维度里照样精确运算。
向量的模(Norm):衡量向量的大小
向量的模(norm)就是它的长度/大小,记作 。在二维欧几里得空间里,这就是勾股定理:向量 的模为
(下标 2 的原因马上揭晓。)模本身不是向量,是标量,且满足三条基本性质:
- 非负性:,且只有零向量模为零——向量不为零,它在各方向的投影与自身总有长度。
- 齐次性:向量乘常数,常数直接提出来:。
- 三角不等式:——两边之和大于第三边。
Lp 范数一族
刚才的模平方再开根,本质是”分量的 2 次幂求和、再开 2 次根”——把 2 换成一般指数 ,就得到 Lp 范数:
- (L1 范数):各分量绝对值直接相加。向量 的 L1 范数 。
- (L2 范数):平方和开根号,经典的欧几里得长度。 的 L2 范数 。
机器学习里还常用到两个”编外”成员:
- L0”范数”:数一数向量里有多少个非零元素。 的 L0 是 2; 的 L0 是 1(那个 0 不算数)。它不是严格意义的范数,但在稀疏编码(sparse coding)/稀疏表示里非常关键——我们常希望参数里大量元素是 0、只留少数有值,L0 正是稀疏性的直接度量。
- L∞ 范数: 时会发生什么?按定义是各分量 次幂求和再开 次根。关键在于指数增长的无情:假设最大的分量是 ,那么 会把其他项甩开天文数字般的差距——讲师的例子, 远大于 ,仅仅 0.1 的差距被指数放大成了不可逾越的鸿沟,何况 趋于无穷。于是求和被最大项独占,开 次根后:
即所有分量绝对值的最大值。比如 的 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从范数到距离
范数天然定义距离:给定点 与 ,差向量 的模就是两点距离。
- 欧几里得距离(L2 距离):——就是我们说的”直线距离”。
- 曼哈顿距离(L1 距离):。名字来自曼哈顿那样横平竖直的街区:从 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单位球的形状:范数的几何图像
把 的点集画出来(“单位球”),不同 p 会画出不同的图形: 是一个内切的小方形(顶点落在坐标轴上), 是圆, 随 p 增大不断向外鼓,直到 时变成一个大方框(由最大分量把边撑住)。讲师在课上画的就是这一族图形从里到外的连续变化。
这个形状差异在机器学习里后果深远,先记两点直觉:L2 的圆对各方向”一视同仁”;L1 的菱形顶点恰在坐标轴上——最优解容易”坐”在轴上,意味着很多分量恰好为零(稀疏解)。稀疏性正是 sparse coding 追求的性质;L1 与稀疏解、L2 与参数平滑的正式搭配,到第 9 章岭回归与 LASSO 时展开。
📝 动手练一练
- 概念辨析:向量 (三个量纲不同的特征值)的 L1 与 L2 范数各是多少?在这个量纲混杂的语境下,哪种范数更”合理”?
👉 点击查看参考答案
L1 = ;L2 = 。
没有绝对答案,重在思考:L1 是各项的简单加和,像一种”线性综合分”;L2 先平方再求和,会进一步放大特大分量的主导地位(30 的贡献占比更大)。值得注意的点是:量纲不同的特征直接算范数,本身就要小心——数值大的特征会天然主导结果,这正是后面数据预处理(特征缩放)要解决的问题。
- 代码实践:不用
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.0x ** 0.5 与 math.sqrt(x) 数值等价——开平方根本身就是”二分之一次幂”。
本章小结
向量 = 有方向的量,用各方向的分量表示;机器学习中一个样本就是一个特征向量,天然生活在高维欧几里得空间里——“圆与球的截面”帮我们用低维直觉类比高维。范数度量向量大小:L2 是勾股定理(欧几里得距离),L1 是绝对值之和(曼哈顿距离),L0 数非零个数(稀疏性),L∞ 取最大分量;Lp 公式统一全族,p 从 1 到 ∞ 的单位球从菱形一路鼓成方框。这些记号将在损失函数、KNN 的距离度量与第 9 章的正则化中反复出场。
📋 行动清单
- 用向量给自己”画像”:性别、身高、体重、学历……把每个特征当一维,体会”样本=高维空间中的点”
- 写一个函数同时输出两个向量的 L1 / L2 / L∞ 三种距离,对同一对点比较大小关系
- 思考:用 L2 距离比较两个样本时,若某特征数值范围远大于其他特征(量纲悬殊),距离会被谁主导?这对”要不要先做特征缩放”有何启示?
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。