COMP5270 Week 7 总结:Nearest Neighbours and Dimensionality Reduction(题解 + 知识点)
课程: COMP5270 - Randomness, Probability, and Algorithms 学期: S1 2026 来源: Week 7 Lecture Notes & Tutorial 7 Solutions
Part 1: Tutorial 7 详细题解
如果
metric space / ANN / LSH / JL Lemma这些词还不熟,先看 Part 2 的名词速查,再回来读题解。本部分按官方 Solutions PDF(Week 7 - Tutorial 7 (Solutions))整理,每题先给完整题目,再逐步展开;所有结论与官方一致,比官方更细的推导步骤会标注【展开】。
Tutorial 难度总览
| 题目 | 所属部分 | 难度 | 复习时怎么安排 |
|---|---|---|---|
| Problem 1 | Warm-up | 需读讲义,应该 doable | 基础题:exact NN 线性扫描 baseline |
| Problem 2 | Warm-up | 需读讲义,应该 doable | 基础题:Hamming cube 上空间换查询 |
| Problem 3 | Warm-up | 需读讲义,应该 doable | 概念题:Bloom filter 能否替代 hash table |
| Problem 4 | Problem Solving | 重点:baby ANN 推广到 general ANN | |
| Problem 5 | Problem Solving | recommended;最后的 |
推荐:Euclidean SimHash LSH 分析 |
| Problem 6 | Problem Solving | 长难题:Jaccard 距离 / MinHash LSH | |
| Problem 7 | Advanced | 有时间再做;not necessary | 扩展:kd-tree |
Problem 1: Exact NN
的链表实现, 空间与查询
题目: 给出一个针对 Nearest Neighbour
问题的数据结构,使用 Query 运行时间为 Insert 和
Remove 各需要多少时间。
题解:
数据结构:简单链表
维护一个包含所有元素的简单链表(linked list),存储
各操作的时间复杂度
Insert(
Remove(
Query(
- 初始化
, - 逐一扫描链表中每个
,计算(每次 ) - 若
,更新和 - 扫描完后返回
共扫描
【展开】为什么这是一种 offline 的
baseline:讲义说"有两种基线方案,每种只满足空间或查询时间其中一项要求"。此方案实现的是"空间
Problem 2:
Hamming Cube 上的位数组,
空间与查询
题目: 给出一个针对 Query 运行时间为 Insert 和
Remove 各运行在
题解:
数据结构:位数组(bit array)
用一个大小为
- Insert(
): 令 ,。 - Remove(
): 令 ,。 - 空间:
bits,即 。
Query( ):BFS 搜索
把
- 第
层: 本身(Hamming 距离 ) - 第
层:与 相差一位的节点,共 个 - 第
层:与 相差 位的节点,共 个
每次展开一层,检查该层所有节点中
【展开】为什么 BFS 更好:朴素遍历整个数组需
【展开】权衡:这个方案是讲义中 §Baseline
的第二个方案(Part 2 §2):空间
Problem 3: Bloom Filter 能否替代 Hash Table?
题目: 检查你的理解:既然我们想要高效查询并且愿意接受小概率失败,可以在 LSH 的"baby version"中用 Bloom filter 替代 hash table 吗?会出什么问题?
题解:
不能。原因是:
LSH 数据结构的 Query 操作不仅要回答"
但 Bloom filter 根本不存储元素本身——它只记录"某元素是否在集合中"的 membership bit。即使 Bloom filter 回答"有近邻",我们也无法从它那里取出那个近邻是谁。
因此 Bloom filter 对于这里的查询语义是不够的,我们必须用能真正存储并返回元素的 hash table。这与 Week 6 中 Bloom filter vs hash table 的对比(Part 2 §12)完全一致:Bloom filter 用来做 membership,不能做 retrieval。
Problem 4: 从 baby ANN 到 general ANN(倍增搜索)
题目(标
中的一个对数因子。
题解:
符号定义
设
设查询点
算法
第一步:构造 threshold 列表
第二步:对每个
第三步:查询时对
为什么下界是 ?
命题: 对于任意查询点
证明: 反设有两个不同的点
矛盾。所以
当
为什么上界是 ?
命题: 若
证明: 设
中间情况的处理
若
用阈值
总结
无论
Problem 5: Euclidean SimHash 的 LSH 分析
题目: 分析讲义中针对 Euclidean 空间的 LSH family——对
证明对任意
题解:
第一步:碰撞概率的几何解释
设
由于
设
第二步:从 推出
由于
所以
利用三角恒等式
第三步:确定
对于两点距离为
对于两点距离为
第四步:证明
【展开】当
因此
其中最后一步用到了函数
这说明
Problem 6: Jaccard 距离与 MinHash LSH
题目: 设 universe
对每个排列
以及
(a) 验证 Jaccard 距离是度量。其范围是什么?
(b)
(c) 证明对任意
题解:
(a) Jaccard 距离是度量
范围:
验证三条公理:
自反性:
对称性:
三角不等式: 需证
等价于:
【展开】证明使用以下三个辅助不等式(可由"画 Venn 图"验证):
: : :
由
再由
再由
从而:
这正是我们要证的。
(b)
(c) MinHash 的 LSH 性质及
对任意
对均匀随机排列
由此,对任意
- 若
,则碰撞概率 ; - 若
,则碰撞概率 。
所以
灵敏度参数
【展开】当
精确界:
因此这个 MinHash 方案的
Problem 7: kd-Tree(Advanced,了解即可)
题目: 给出基于 kd-tree 的 Nearest Neighbour 数据结构,分析空间复杂度和查询时间。
简要说明:
kd-tree 是一种将
Part 2: 讲义知识点详解
按讲义(Week 7 - Nearest Neighbours and dimensionality reduction.pdf)结构整理,涵盖所有 Definition、Theorem、Lemma、Corollary 及其证明。
§0 名词与符号速查
| 符号 | 含义 |
|---|---|
| 度量空间(metric space) | |
| 数据集, |
|
| 宇宙(universe)的维数 | |
| Nearest Neighbour(精确最近邻) | |
| Approximate Nearest
Neighbour(近似最近邻),参数 |
|
| Johnson–Lindenstrauss,降维引理 | |
| hash function family | |
| Locality-Sensitive Hash family,参数见 Definition 37.1 | |
| LSH 灵敏度参数(sensitivity
parameter), |
|
| LSH 数据结构的两个关键参数(哈希表个数
|
§1 问题设定
1.1 度量空间与距离
以下是课程中常见的三种距离:
- Manhattan 距离
: ,适用于 。 - Euclidean 距离
: ,适用于 。 - Hamming 距离:
,适用于 (两个位字符串不同位数的个数)。
度量(metric)需满足:
- 非负性:
,且 - 对称性:
- 三角不等式:
1.2 最近邻问题(NN Problem)
定义: 给定度量空间
复杂度目标:
- 空间复杂度:理想目标
( 个 维元素)。 - 查询时间:理想目标
(次线性),或 类的组合。
注意维度
1.3 近似最近邻问题(ANN Problem)
定义: 参数 Query(x) 返回
当
Quiz 知识点: - 原题问 "对于这类应用,我们关心大维度
和大数据集 ,其中 通常_ ",答案是 Much smaller than。ANN 场景中 远小于 ,但精确 NN 在高维下有指数级下界。 - 原题问 "ANN 放宽 NN 的方式是_",答案是 Allowing to return a point that might not be the closest to the query(允许返回可能不是最近的点)。这是 ANN 的核心思想:用近似换取查询效率。
§2 Baseline 数据结构
讲义给出两种朴素 baseline,各自满足空间/查询时间中的一项:
| 方案 | 空间 | 查询时间 | 关键思路 |
|---|---|---|---|
| 链表 | 线性扫描所有元素 | ||
| 位数组(Hamming) | BFS on hypercube |
Quiz 知识点:原题问 "
维空间中精确最近邻查询的查询时间_,空间_",答案是 。链表方案同时满足这两个界,但都是线性的。
Quiz 知识点:原题问 "若点数
是维度 的指数级,精确最近邻算法的查询时间或空间复杂度随 ____",答案是 Exponentially(指数级增长)。这是"维度诅咒"(curse of dimensionality)的直接体现。
坏消息:讲义指出,这两种 baseline
是目前已知的(甚至包括概率算法)所能做到的最好的——任何 NN
数据结构的空间或查询时间都至少是
§3 Johnson–Lindenstrauss 降维引理
Theorem 37 (Distributional JL Lemma)
定理: 设
设随机矩阵
直觉: 随机高斯矩阵把
计算成本:
Corollary 37.1 (JL Lemma)
推论: 设
设
证明思路: 对
含义: 把
Lemma 37.1: JL 对 ANN 的应用
引理: 对任意
证明思路: 对集合
局限: 查询时间仍然是
JL 相关 Quiz 知识点: - 原题问 "JL 引理可精确保持
个点的欧氏距离,只需 维"(T/F),答案是 False。JL 引理是近似保持(失真 ),不是精确保持。 - 原题问 "JL 引理可近似保持距离,只需 维"(T/F),答案是 False。目标维度是 (与点数相关),不是 。 - 原题问 "JL 引理可近似保持距离,只需 维"(T/F),答案是 True。 - 原题问 "JL 引理可近似保持 Hamming 距离,只需 维"(T/F),答案是 False。标准 JL 引理针对欧氏距离,适用于 Hamming 空间需要额外的技巧(如 embedding)。
§4 Locality-Sensitive Hashing(LSH)
Definition 37.1: LSH Family
定义: 设
- 若
(近),则 ; - 若
(远),则 。
定义灵敏度参数(sensitivity parameter):
直觉:
Quiz 知识点:原题问 "LSH 使用一类使相近元素更可能碰撞的哈希函数"(T/F),答案是 True。这正是 LSH 的核心理念:碰撞概率随距离单调递减,使得相似的元素以更高概率被哈希到同一个桶。
Lemma 37.2: LSH Family 的复合
引理: 设
则由所有这样的
证明: "写下来即得。" 对近点,
作用: 通过
§5 LSH 数据结构
数据结构描述
给定
预处理 Preprocess(S):
- 从
中独立选取 个函数 - 建立
个 hash table ,使用 separate chaining,其中 是普通的(好的)hash function - 对所有
,对所有 :
查询 Query_r(x):
- 对所有
: (与碰撞的元素列表)
- 对所有
:- 若
,返回
- 若
- 返回
(未找到)
为什么用两层 hash?
- 第一层
(LSH 函数):locality-sensitive,让近邻碰撞,远邻不碰撞。但哈希的输出空间 很大,直接存储不省空间。 - 第二层
(普通 hash 函数):把 的输出映射到合理大小的数组,保证空间效率(Week 6 的 universal hashing 保证)。
§6 LSH 数据结构的性能分析
Theorem 38: 数据结构保证
定理: 上述数据结构(设每个 LSH 函数计算耗时
- 空间复杂度:
- 期望查询时间:
- 正确性: 若存在
满足 ,则失败概率(Query_r(x)返回)至多
证明要点:
空间:
查询时间: - 计算
正确性: - 若
参数设置
设定
则期望查询时间中的
此时
Quiz 知识点:原题问 "用 LSH 可在 Hamming 和欧氏空间中解决 ANN,期望查询时间关于
为_,空间为_",答案是 sublinear / nearly linear。查询时间 是次线性的( , ),空间 是近线性的。这是 LSH 相比 JL-ANN 方案的核心优势。
设定
Corollary 38.1: 最终性能
推论: 取上述
这是次线性查询!因为
§7 从 baby ANN 到 general ANN
Theorem 39
定理: 若对每个
简化版本(Tutorial Problem 4 给出): 代价是 aspect
ratio
§8 Hamming 空间的 LSH Family
构造: 设 universe
即每个 hash 函数就是"取第
LSH 参数: 对任意
验证:
- 若
(即最多位不同),则 的概率 (均匀随机位恰好命中不同的那 位之一的概率是 ) - 若
,则碰撞概率
灵敏度参数:
(在
§9 Euclidean 空间的 LSH Family(SimHash)
构造: 限制到单位向量,
LSH 参数 及
碰撞概率为
注: 对 Euclidean 空间,更复杂的构造可以达到
§10 核心记忆卡片
| 名称 | 结论 |
|---|---|
| NN Baseline 1(链表) | 空间 |
| NN Baseline 2(位数组) | 空间 |
| NN 下界 | 任何 NN 方案:空间或查询 |
| JL Lemma(Corollary 37.1) | |
| JL 应用到 ANN | ANN, |
| LSH 定义(Def 37.1) | |
| LSH 复合(Lemma 37.2) | |
| LSH 数据结构(Theorem 38) | 空间 |
| 参数设置 | |
| LSH 最终性能(Corollary 38.1) | 空间 |
| Hamming LSH | |
| Euclidean SimHash | |
| MinHash(Jaccard) |
Part 3: Week 7 Quiz 回顾
来源:Canvas Quiz,整理自
5270-questions-organized.md。每题含中英文题目、正确答案及知识点解析。
Question 1
[EN] We know how to solve the (exact) Nearest
Neighbour question over a
[CN]
| 选项 | 答案 |
|---|---|
| ❌ | |
| ✅ | |
| ❌ | |
| ❌ |
知识点:链表方案同时满足这两个界——线性扫描所有
个 维元素。
Question 2
[EN] Typically, for this type of applications we
care about large dimension
[CN] 对于这类应用,我们关心大维度
| 选项 | 答案 |
|---|---|
| Much larger than | ❌ |
| Equal to | ❌ |
| Much smaller than | ✅ |
| Comparable to | ❌ |
知识点:ANN 场景中
,但维度诅咒仍然让精确 NN 不可行。
Question 3
[EN] Suppose the number of points
[CN] 若点数
| 选项 | 答案 |
|---|---|
| Exponentially | ✅ |
| Logarithmically | ❌ |
| Linearly | ❌ |
知识点:精确最近邻在高维下遭遇"维度诅咒"(curse of dimensionality),复杂度指数级增长。
Question 4
[EN] The Approximate Nearest Neighbour problem relaxes the Nearest Neighbour problem by...
[CN] 近似最近邻(ANN)放宽 NN 的方式是……
| 选项 | 答案 |
|---|---|
| Allowing exponential space | ❌ |
| Allowing a probability of failure | ❌ |
| Allowing to return a point that might not be the closest to the query | ✅ |
知识点:ANN 的核心妥协:允许返回不是最近邻的点,换取查询效率。
Question 5
[EN] The Johnson-Linderstrauss Lemma allows us to
preserve exactly the Euclidean distances between
[CN] Johnson-Linderstrauss
引理可精确保持
| 选项 | 答案 |
|---|---|
| True | ❌ |
| False | ✅ |
知识点:JL 引理是近似保持距离(失真
),不是精确保持。
Question 6
[EN] The Johnson-Linderstrauss Lemma allows us to
preserve approximately the Euclidean distances between
[CN] JL 引理可近似保持欧氏距离,只需
| 选项 | 答案 |
|---|---|
| True | ❌ |
| False | ✅ |
知识点:目标维度是
(与点数相关),不是 。这个是最常见的混淆点。
Question 7
[EN] The Johnson-Linderstrauss Lemma allows us to
preserve approximately the Euclidean distances between
[CN] JL 引理可近似保持欧氏距离,只需
| 选项 | 答案 |
|---|---|
| True | ✅ |
| False | ❌ |
Question 8
[EN] The Johnson-Linderstrauss Lemma allows us to
preserve approximately the Hamming distances between
[CN] JL 引理可近似保持 Hamming 距离,只需
| 选项 | 答案 |
|---|---|
| False | ✅ |
| True | ❌ |
知识点:标准 JL 引理针对欧氏距离。Hamming 距离需要在 Hamming cube 上嵌入到欧氏空间,或使用其他方法。
Question 9
[EN] Locality-Sensitive Hashing uses a type of hash functions which makes collisions more likely when hashing elements close to each other.
[CN] 局部敏感哈希(LSH)使用一类使相近元素更可能碰撞的哈希函数。
| 选项 | 答案 |
|---|---|
| False | ❌ |
| True | ✅ |
知识点:LSH 的核心理念——碰撞概率随距离单调递减。
Question 10
[EN] Using LSH, one can solve the ANN question in
Hamming and Euclidean space with expected query time _____ in the number
of points
[CN] 用 LSH 可在 Hamming 和欧氏空间中解决
ANN,期望查询时间关于
| 选项 | 答案 |
|---|---|
| exponential/sublinear | ❌ |
| exponential/sublinear | ❌ |
| sublinear/sublinear | ❌ |
| sublinear/nearly linear | ✅ |
知识点:LSH 实现次线性查询(
, )加近线性空间( ),这是它相较 JL-ANN 方案的核心优势。
Week 7 Quiz 速查表
| 题号 | 核心概念 | 正确答案 |
|---|---|---|
| 1 | Exact NN 时间/空间 | |
| 2 | Much smaller than | |
| 3 | 维度诅咒 | Exponentially |
| 4 | ANN 放宽方式 | Allows approximate answer |
| 5 | JL 精确保持 | False(近似保持) |
| 6 | JL 只需 |
False(是 |
| 7 | JL 只需 |
True |
| 8 | JL 对 Hamming | False(仅欧氏距离) |
| 9 | LSH 碰撞性质 | True(近邻更易碰撞) |
| 10 | LSH 查询/空间 | sublinear / nearly linear |
高频混淆点: - JL 维度是