目录
- 第一部分:可计算性理论
- 第一章:绪论------什么是计算
- 第二章:图灵机与可计算函数
- 第三章:不可计算性与哥德尔定理
- 第二部分:计算复杂性
- 第四章:复杂性类------P 与 NP
- 第五章:NP 完全性与归约
- 第六章:空间复杂性与层次定理
- 第三部分:信息论
- 第七章:信息的度量------熵
- 第八章:信道编码定理
- 第九章:数据压缩与编码
- 第四部分:学习理论
- 第十章:统计学习理论基础
- 第十一章:PAC 学习与 VC 维
- 第十二章:泛化理论的现代视角
- 第五部分:哲学与联系
- 第十三章:计算主义与心智哲学
- 第十四章:人工智能的理论基础
- 第十五章:深度学习的理论挑战
- 第十六章:开放问题与未来方向
- 附录
第一部分:可计算性理论
第一章:绪论------什么是计算
1.1 计算的直觉概念
在日常生活中,我们对"计算"有很强的直觉:
- 计算器做加法是计算
- 排序一个列表是计算
- 搜索网页是计算
- 训练神经网络是计算
但是,如果有人问:"什么是计算的本质?"这个问题就变得不那么显然了。
1.2 从具体到抽象
1.2.1 早期的计算模型
机械计算:算盘、差分机、分析机------通过物理机械执行运算。
逻辑推理:布尔代数、命题逻辑------通过符号操作进行推理。
形式系统:公理、推理规则、定理------通过形式化规则推导结论。
1.2.2 关键问题
是否存在一个通用的计算模型,能够描述所有"有效的"计算过程?
这个问题在 20 世纪 30 年代得到了回答------通过几种等价的计算模型。
1.3 三种等价的计算模型
1936 年,三位数学家独立提出了不同的计算模型:
| 模型 | 提出者 | 核心思想 |
|---|---|---|
| 图灵机 | Alan Turing | 一条无限长的纸带,一个读写头,一组状态 |
| λ 演算 | Alonzo Church | 函数定义与函数应用 |
| 递归函数 | Kurt Gödel | 基本函数与递归构造 |
Church-Turing 论题:所有"有效可计算"的函数都可以用图灵机计算。
这是一个论题(thesis),而非定理------因为"有效可计算"是一个直觉概念,无法严格证明。
1.4 计算的本质特征
通过分析各种计算模型,我们可以提取出计算的本质特征:
- 离散性:计算操作是离散的、有限的
- 确定性:每一步操作都是确定的(忽略随机化)
- 有限描述:算法可以用有限的符号串描述
- 机械执行:不需要创造性,可以机械地执行
第二章:图灵机与可计算函数
2.1 图灵机的定义
2.1.1 直觉描述
想象一个人在做计算:
- 他面前有一条无限长的纸带,分成一个个格子
- 每个格子上写着一个符号(来自有限字母表)
- 他有一个读写头,可以读取当前格子的符号,也可以写入新符号
- 他有一个状态(来自有限状态集)
- 他根据规则决定下一步做什么
2.1.2 形式定义
一个图灵机是一个七元组 M=(Q,Σ,Γ,δ,q0,qaccept,qreject)M = (Q, \Sigma, \Gamma, \delta, q_0, q_{accept}, q_{reject})M=(Q,Σ,Γ,δ,q0,qaccept,qreject):
- QQQ:有限状态集
- Σ\SigmaΣ:输入字母表(不包含空白符号)
- Γ\GammaΓ:纸带字母表(包含空白符号 ⊔\sqcup⊔)
- δ\deltaδ:转移函数
- q0q_0q0:初始状态
- qacceptq_{accept}qaccept:接受状态
- qrejectq_{reject}qreject:拒绝状态
转移函数的形式:
δ:Q×Γ→Q×Γ×{L,R}\delta: Q \times \Gamma \to Q \times \Gamma \times \{L, R\}δ:Q×Γ→Q×Γ×{L,R}
含义:在状态 qqq 读到符号 aaa 时,转移到状态 q′q'q′,写入符号 bbb,读写头向左或向右移动一格。
2.2 图灵机的计算过程
2.2.1 格局
图灵机在某一时刻的格局(configuration)包括:
- 当前状态
- 纸带内容
- 读写头位置
2.2.2 计算步骤
每一步,图灵机根据转移函数更新格局。
2.2.3 接受与拒绝
- 如果进入 qacceptq_{accept}qaccept,则接受输入
- 如果进入 qrejectq_{reject}qreject,则拒绝输入
- 如果永远不停机,则循环
2.3 可计算函数
2.3.1 定义
一个函数 f:Σ∗→Σ∗f: \Sigma^* \to \Sigma^*f:Σ∗→Σ∗ 是图灵可计算 的,如果存在一个图灵机,对于任意输入 xxx:
- 如果 f(x)f(x)f(x) 有定义,则机器停机,纸带上写着 f(x)f(x)f(x)
- 如果 f(x)f(x)f(x) 无定义,则机器不停机
2.3.2 例子
可计算函数:
- 加法、减法、乘法、除法
- 字符串操作(拼接、反转、搜索)
- 排序、搜索
不可计算函数:
- 停机问题的解
- 某些数学定理的判定
2.4 编码与通用图灵机
2.4.1 图灵机的编码
任何图灵机都可以编码为一个二进制字符串。这意味着:
- 图灵机本身可以作为数据
- 可以构造处理其他图灵机的图灵机
2.4.2 通用图灵机
通用图灵机 UUU 可以模拟任何图灵机:
U(⟨M,x⟩)=M(x)U(\langle M, x\rangle) = M(x)U(⟨M,x⟩)=M(x)
其中 ⟨M,x⟩\langle M, x\rangle⟨M,x⟩ 是图灵机 MMM 和输入 xxx 的编码。
通用图灵机是可编程计算机的理论模型。
2.5 Church-Turing 论题
2.5.1 论题内容
任何"有效可计算"的函数都是图灵可计算的。
2.5.2 支持证据
- 所有已知的计算模型都与图灵机等价
- 没有发现比图灵机更强大的"合理"计算模型
- 物理定律似乎不允许超图灵计算
2.5.3 物理 Church-Turing 论题
任何物理过程都可以用图灵机高效模拟。
这个更强的论题受到量子计算的挑战。
第三章:不可计算性与哥德尔定理
3.1 对角线论证
3.1.1 Cantor 的对角线论证
定理:实数是不可数的。
证明思路:假设实数可数,可以列出所有实数。然后构造一个实数,它与列表中每个实数都不同(通过取对角线上的数字并改变它)。矛盾。
3.1.2 对角线论证的威力
对角线论证是一种强大的证明技术,用于证明某些集合"太大"而无法被某些方法穷尽。
3.2 停机问题
3.2.1 问题定义
停机问题 :给定图灵机 MMM 和输入 xxx,判断 MMM 在 xxx 上是否停机。
3.2.2 不可计算性证明
定理 3.1:停机问题是不可计算的。
证明(对角线论证):
假设存在一个图灵机 HHH 解决停机问题:
H(⟨M,x⟩)={1M(x) 停机0M(x) 不停机H(\langle M, x\rangle) = \begin{cases} 1 & M(x) \text{ 停机} \\ 0 & M(x) \text{ 不停机} \end{cases}H(⟨M,x⟩)={10M(x) 停机M(x) 不停机
构造一个新的图灵机 DDD:
D(⟨M⟩)={不停机H(⟨M,⟨M⟩⟩)=1停机H(⟨M,⟨M⟩⟩)=0D(\langle M\rangle) = \begin{cases} \text{不停机} & H(\langle M, \langle M\rangle\rangle) = 1 \\ \text{停机} & H(\langle M, \langle M\rangle\rangle) = 0 \end{cases}D(⟨M⟩)={不停机停机H(⟨M,⟨M⟩⟩)=1H(⟨M,⟨M⟩⟩)=0
现在问:D(⟨D⟩)D(\langle D\rangle)D(⟨D⟩) 停机吗?
- 如果停机,则 H(⟨D,⟨D⟩⟩)=1H(\langle D, \langle D\rangle\rangle) = 1H(⟨D,⟨D⟩⟩)=1,但根据 DDD 的定义,D(⟨D⟩)D(\langle D\rangle)D(⟨D⟩) 不停机。矛盾。
- 如果不停机,则 H(⟨D,⟨D⟩⟩)=0H(\langle D, \langle D\rangle\rangle) = 0H(⟨D,⟨D⟩⟩)=0,但根据 DDD 的定义,D(⟨D⟩)D(\langle D\rangle)D(⟨D⟩) 停机。矛盾。
因此,HHH 不存在。□\square□
3.2.3 停机问题的意义
停机问题的不可计算性告诉我们:
- 存在原则上无法用算法解决的问题
- 计算有固有的局限性
- 完全自动化的程序验证是不可能的
3.3 哥德尔不完备定理
3.3.1 背景:希尔伯特计划
20 世纪初,希尔伯特提出:
- 将所有数学形式化
- 证明数学是完备的(所有真命题都可证)
- 证明数学是一致的(不会证明假命题)
- 存在判定过程(可以机械地判断命题的真假)
3.3.2 第一不完备定理
定理 3.2(哥德尔第一不完备定理):任何包含算术的一致的形式系统都是不完备的------存在既不能证明也不能证伪的命题。
直觉:存在"真的但不可证"的数学命题。
3.3.3 第二不完备定理
定理 3.3(哥德尔第二不完备定理):任何包含算术的一致的形式系统都无法证明自身的一致性。
直觉:数学无法"自证清白"。
3.3.4 不完备定理的意义
- 数学有固有的局限性
- 形式化方法有边界
- 人工智能有理论上的限制
3.4 不可计算性的层级
3.4.1 图灵度
不同的不可计算问题有不同的"难度"------这形成了图灵度的层级。
3.4.2 停机问题的变体
- 停机问题:不可计算
- 通用停机问题:不可计算
- 某些特定问题:可计算
3.4.3 实际意义
不可计算性告诉我们:
- 不是所有问题都有算法解
- 程序验证有根本性的困难
- 人工智能有理论上的天花板
第二部分:计算复杂性
第四章:复杂性类------P 与 NP
4.1 为什么需要复杂性理论
4.1.1 可计算性 vs 可行性
可计算性理论告诉我们问题能否 被解决,但没有告诉我们多快能被解决。
一个可计算的问题可能需要指数时间------这在实际中是不可接受的。
4.1.2 复杂性理论的核心问题
哪些问题可以在合理的时间内解决?
4.2 时间复杂性
4.2.1 时间复杂性类
TIME(t(n))\text{TIME}(t(n))TIME(t(n)) :在 O(t(n))O(t(n))O(t(n)) 时间内可判定的语言类。
P\mathbf{P}P(多项式时间):
P=⋃kTIME(nk)\mathbf{P} = \bigcup_{k} \text{TIME}(n^k)P=k⋃TIME(nk)
EXPTIME\mathbf{EXPTIME}EXPTIME(指数时间):
EXPTIME=⋃kTIME(2nk)\mathbf{EXPTIME} = \bigcup_{k} \text{TIME}(2^{n^k})EXPTIME=k⋃TIME(2nk)
4.2.2 P 类的意义
P\mathbf{P}P 通常被认为是"高效可解"问题的数学形式化。
理由:
- 多项式时间算法通常是实用的
- 指数时间算法通常在实际中不可行
- 多项式时间在复合下封闭(多项式组合仍是多项式)
4.2.3 P 中的例子
- 排序(O(nlogn)O(n \log n)O(nlogn))
- 最短路径(O(n3)O(n^3)O(n3))
- 线性规划(多项式时间)
- 素数测试(AKS 算法,O(n12)O(n^{12})O(n12))
4.3 NP 类
4.3.1 非确定性图灵机
非确定性图灵机(NDTM)在每一步可以"猜"一个选择,如果存在一条接受路径,则接受。
直觉:NDTM 可以"并行"探索所有可能的计算路径。
4.3.2 NP 的定义
NP\mathbf{NP}NP(非确定性多项式时间):可以用非确定性图灵机在多项式时间内判定的语言类。
等价定义 :L∈NPL \in \mathbf{NP}L∈NP 当且仅当存在一个多项式时间验证器 VVV,使得:
x∈L ⟺ ∃y (证书), V(x,y)=1x \in L \iff \exists y \text{ (证书), } V(x, y) = 1x∈L⟺∃y (证书), V(x,y)=1
4.3.3 NP 的直觉
NP 问题是"容易验证"的问题------给定一个候选解,可以在多项式时间内验证它是否正确。
例子:
- 布尔可满足性(SAT):给定一个布尔公式,是否存在使其为真的赋值?(验证:给定赋值,代入检查)
- 旅行商问题(TSP) :是否存在长度不超过 kkk 的路线?(验证:给定路线,计算长度)
- 图着色 :能否用 kkk 种颜色着色?(验证:给定着色,检查相邻顶点)
4.4 P vs NP 问题
4.4.1 核心问题
P=NP\mathbf{P} = \mathbf{NP}P=NP 吗?
即:所有容易验证的问题是否也容易求解?
4.4.2 为什么这个问题重要
如果 P=NP\mathbf{P} = \mathbf{NP}P=NP:
- 密码学被打破(许多密码基于 NP 问题的困难性)
- 优化问题变得容易
- 数学证明可以自动化
如果 P≠NP\mathbf{P} \neq \mathbf{NP}P=NP:
- 某些问题本质上是困难的
- 密码学有理论基础
- 启发式算法是必要的
4.4.3 当前状态
P\mathbf{P}P vs NP\mathbf{NP}NP 是计算机科学最重要的开放问题之一(克雷数学研究所百万美元悬赏问题)。
大多数专家相信 P≠NP\mathbf{P} \neq \mathbf{NP}P=NP,但没有证明。
第五章:NP 完全性与归约
5.1 归约
5.1.1 归约的定义
问题 AAA 归约 到问题 BBB(记为 A≤pBA \leq_p BA≤pB),如果存在一个多项式时间可计算的函数 fff,使得:
x∈A ⟺ f(x)∈Bx \in A \iff f(x) \in Bx∈A⟺f(x)∈B
直觉 :如果能解决 BBB,就能解决 AAA。
5.1.2 归约的意义
- 如果 A≤pBA \leq_p BA≤pB 且 B∈PB \in \mathbf{P}B∈P,则 A∈PA \in \mathbf{P}A∈P
- 如果 A≤pBA \leq_p BA≤pB 且 A∉PA \notin \mathbf{P}A∈/P,则 B∉PB \notin \mathbf{P}B∈/P
归约建立了问题之间的相对难度关系。
5.2 NP 完全性
5.2.1 定义
语言 LLL 是 NP 完全的,如果:
- L∈NPL \in \mathbf{NP}L∈NP
- 对于所有 L′∈NPL' \in \mathbf{NP}L′∈NP,L′≤pLL' \leq_p LL′≤pL
直觉:NP 完全问题是 NP 中"最难"的问题。
5.2.2 Cook-Levin 定理
定理 5.1(Cook-Levin):布尔可满足性问题(SAT)是 NP 完全的。
这是第一个被证明为 NP 完全的问题(1971 年)。
5.2.3 NP 完全性的意义
如果任何 NP 完全问题在 P\mathbf{P}P 中,则 P=NP\mathbf{P} = \mathbf{NP}P=NP。
因此,NP 完全问题是"最有可能不在 P\mathbf{P}P 中"的问题。
5.3 经典 NP 完全问题
5.3.1 组合优化问题
- 旅行商问题(TSP):找最短的访问所有城市的路线
- 图着色:用最少的颜色给图着色
- 背包问题:在重量限制下最大化价值
- 子集和:是否存在子集和为某值
5.3.2 逻辑与约束问题
- SAT:布尔公式的可满足性
- 3-SAT:每个子句恰好 3 个文字的 SAT
- 哈密顿回路:图中是否存在访问所有顶点的回路
- 团问题 :图中是否存在大小为 kkk 的完全子图
5.4 处理 NP 完全问题
5.4.1 近似算法
对于优化问题,可以寻找近似解------保证在最优解的某个因子内。
例子:
- TSP(满足三角不等式):2-近似算法
- 顶点覆盖:2-近似算法
- 集合覆盖:O(lnn)O(\ln n)O(lnn)-近似算法
5.4.2 参数化复杂性
对于某些问题,困难性只依赖于某个参数 kkk,而不是输入大小 nnn。
固定参数可解(FPT) :时间复杂度为 f(k)⋅nO(1)f(k) \cdot n^{O(1)}f(k)⋅nO(1)。
5.4.3 随机化算法
使用随机性可能加速某些问题的求解。
BPP 类:可以用随机化多项式时间算法高效解决的问题。
5.4.4 启发式方法
在实际中,启发式方法(如遗传算法、模拟退火、深度学习)通常能找到"足够好"的解。
第六章:空间复杂性与层次定理
6.1 空间复杂性
6.1.1 空间复杂性类
SPACE(s(n))\text{SPACE}(s(n))SPACE(s(n)) :在 O(s(n))O(s(n))O(s(n)) 空间内可判定的语言类。
L\mathbf{L}L(对数空间):
L=SPACE(logn)\mathbf{L} = \text{SPACE}(\log n)L=SPACE(logn)
PSPACE\mathbf{PSPACE}PSPACE(多项式空间):
PSPACE=⋃kSPACE(nk)\mathbf{PSPACE} = \bigcup_{k} \text{SPACE}(n^k)PSPACE=k⋃SPACE(nk)
6.1.2 空间与时间的关系
定理 6.1 :P⊆NP⊆PSPACE\mathbf{P} \subseteq \mathbf{NP} \subseteq \mathbf{PSPACE}P⊆NP⊆PSPACE
定理 6.2(Savitch) :NSPACE(s(n))⊆SPACE(s(n)2)\mathbf{NSPACE}(s(n)) \subseteq \mathbf{SPACE}(s(n)^2)NSPACE(s(n))⊆SPACE(s(n)2)
这意味着非确定性在空间上比在时间上"便宜"。
6.2 层次定理
6.2.1 时间层次定理
定理 6.3(时间层次) :如果 t1(n)=o(t2(n))t_1(n) = o(t_2(n))t1(n)=o(t2(n)),则:
TIME(t1(n))⊊TIME(t2(n))\text{TIME}(t_1(n)) \subsetneq \text{TIME}(t_2(n))TIME(t1(n))⊊TIME(t2(n))
意义:更多时间确实能解决更多问题。
6.2.2 空间层次定理
定理 6.4(空间层次) :如果 s1(n)=o(s2(n))s_1(n) = o(s_2(n))s1(n)=o(s2(n)),则:
SPACE(s1(n))⊊SPACE(s2(n))\text{SPACE}(s_1(n)) \subsetneq \text{SPACE}(s_2(n))SPACE(s1(n))⊊SPACE(s2(n))
6.2.3 层次定理的意义
- 复杂性类形成真正的层级
- 资源增加确实能解决更多问题
- P≠EXPTIME\mathbf{P} \neq \mathbf{EXPTIME}P=EXPTIME(确定的)
6.3 电路复杂性
6.3.1 电路模型
布尔电路是由逻辑门(AND, OR, NOT)组成的有向无环图。
6.3.2 电路复杂性类
NC\mathbf{NC}NC:可以用多项式大小、对数深度的电路解决的问题。
AC\mathbf{AC}AC :类似于 NC\mathbf{NC}NC,但允许无界扇入的门。
6.3.3 电路下界
证明某些问题需要"大"电路是困难的。
已知:存在需要指数大小电路的问题(通过计数论证)。
未知:NP 问题是否需要超多项式大小的电路?
第三部分:信息论
第七章:信息的度量------熵
7.1 信息的直觉概念
7.1.1 什么是信息
- 太阳从东方升起:几乎没有信息(已知的事实)
- 今天会下雨:有一定信息(不确定性减少)
- 彩票中奖:大量信息(极不可能的事件)
直觉 :信息量与事件的意外程度相关。
7.1.2 Shannon 的洞察
Claude Shannon(1948)提出了信息的数学定义:
信息是不确定性减少的度量。
7.2 信息熵
7.2.1 自信息
事件 AAA 的自信息:
I(A)=−logP(A)I(A) = -\log P(A)I(A)=−logP(A)
直觉:
- 概率大的事件,自信息小(不意外)
- 概率小的事件,自信息大(很意外)
7.2.2 熵
随机变量 XXX 的熵:
H(X)=−∑xP(x)logP(x)H(X) = -\sum_x P(x) \log P(x)H(X)=−x∑P(x)logP(x)
直觉:熵是自信息的期望值------平均而言,每次观测能获得多少信息。
7.2.3 熵的性质
- H(X)≥0H(X) \geq 0H(X)≥0
- H(X)=0H(X) = 0H(X)=0 当且仅当 XXX 是确定的
- H(X)≤log∣X∣H(X) \leq \log |X|H(X)≤log∣X∣,等号成立当且仅当 XXX 是均匀分布
- 熵是凹函数
7.2.4 联合熵与条件熵
联合熵:
H(X,Y)=−∑x,yP(x,y)logP(x,y)H(X, Y) = -\sum_{x,y} P(x,y) \log P(x,y)H(X,Y)=−x,y∑P(x,y)logP(x,y)
条件熵:
H(Y∣X)=−∑xP(x)H(Y∣X=x)H(Y|X) = -\sum_x P(x) H(Y|X=x)H(Y∣X)=−x∑P(x)H(Y∣X=x)
链式法则:
H(X,Y)=H(X)+H(Y∣X)H(X, Y) = H(X) + H(Y|X)H(X,Y)=H(X)+H(Y∣X)
7.3 互信息
7.3.1 定义
互信息:
I(X;Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)I(X; Y) = H(X) - H(X|Y) = H(Y) - H(Y|X)I(X;Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)
直觉 :知道 YYY 后,XXX 的不确定性减少了多少。
7.3.2 互信息的性质
- I(X;Y)≥0I(X; Y) \geq 0I(X;Y)≥0
- I(X;Y)=0I(X; Y) = 0I(X;Y)=0 当且仅当 X,YX, YX,Y 独立
- I(X;Y)=I(Y;X)I(X; Y) = I(Y; X)I(X;Y)=I(Y;X)(对称性)
7.3.3 数据处理不等式
定理 7.1 :如果 X→Y→ZX \to Y \to ZX→Y→Z 形成马尔可夫链,则:
I(X;Z)≤I(X;Y)I(X; Z) \leq I(X; Y)I(X;Z)≤I(X;Y)
直觉:信息处理不能创造新信息,只能保持或丢失信息。
7.4 相对熵(KL 散度)
7.4.1 定义
KL 散度:
DKL(P∥Q)=∑xP(x)logP(x)Q(x)D_{KL}(P \| Q) = \sum_x P(x) \log \frac{P(x)}{Q(x)}DKL(P∥Q)=x∑P(x)logQ(x)P(x)
7.4.2 性质
- DKL(P∥Q)≥0D_{KL}(P \| Q) \geq 0DKL(P∥Q)≥0(Gibbs 不等式)
- DKL(P∥Q)=0D_{KL}(P \| Q) = 0DKL(P∥Q)=0 当且仅当 P=QP = QP=Q
- DKL(P∥Q)≠DKL(Q∥P)D_{KL}(P \| Q) \neq D_{KL}(Q \| P)DKL(P∥Q)=DKL(Q∥P)(不对称)
7.4.3 与机器学习的联系
KL 散度是许多机器学习目标函数的基础:
- 变分推断中的 ELBO
- 策略梯度中的策略更新
- 语言模型的训练目标
第八章:信道编码定理
8.1 通信系统模型
8.1.1 Shannon 的通信模型
信源 → 编码器 → 信道 → 解码器 → 信宿
↑ ↑
噪声 噪声
8.1.2 信道的数学描述
离散无记忆信道:
P(y∣x) 给定输入 x 时输出 y 的概率P(y|x) \text{ 给定输入 } x \text{ 时输出 } y \text{ 的概率}P(y∣x) 给定输入 x 时输出 y 的概率
常见信道:
- 二进制对称信道(BSC) :以概率 ppp 翻转比特
- 二进制擦除信道(BEC) :以概率 ppp 擦除比特
- 高斯信道:输出 = 输入 + 高斯噪声
8.2 信道容量
8.2.1 定义
信道容量:
C=maxP(x)I(X;Y)C = \max_{P(x)} I(X; Y)C=P(x)maxI(X;Y)
直觉:信道每传输一个符号能可靠传输的最大信息量。
8.2.2 例子
BSC 信道:
C=1−H(p)=1+plogp+(1−p)log(1−p)C = 1 - H(p) = 1 + p\log p + (1-p)\log(1-p)C=1−H(p)=1+plogp+(1−p)log(1−p)
当 p=0p = 0p=0 或 p=1p = 1p=1 时,C=1C = 1C=1(完美信道)。
当 p=0.5p = 0.5p=0.5 时,C=0C = 0C=0(完全噪声)。
8.3 Shannon 信道编码定理
8.3.1 定理内容
定理 8.1(信道编码定理):
- 如果传输速率 R<CR < CR<C,则存在编码方案使得错误概率任意小。
- 如果传输速率 R>CR > CR>C,则任何编码方案的错误概率都远离零。
8.3.2 定理的意义
- 存在性:可靠的通信是可能的(即使有噪声)
- 界限:存在一个根本的速率上限
- 编码:好的编码方案存在(但定理没有给出构造方法)
8.3.3 Shannon 的贡献
Shannon 的天才在于:
- 将通信问题形式化为数学问题
- 证明了容量的存在性
- 分离了信源编码和信道编码
8.4 实际编码方案
8.4.1 线性码
汉明码:可以纠正单个错误。
LDPC 码:稀疏校验矩阵,接近 Shannon 极限。
8.4.2 Turbo 码
1993 年发现,首次接近 Shannon 极限。
8.4.3 Polar 码
2009 年发现,理论上达到 Shannon 极限,且有高效的编解码算法。
第九章:数据压缩与编码
9.1 无损压缩
9.1.1 信源编码定理
定理 9.1(信源编码定理):任何无损压缩方案的压缩率不能低于信源的熵。
压缩后大小原始大小≥H(X)\frac{\text{压缩后大小}}{\text{原始大小}} \geq H(X)原始大小压缩后大小≥H(X)
9.1.2 Huffman 编码
原理:用短码表示频繁出现的符号,用长码表示罕见的符号。
最优性:Huffman 编码是最优的前缀码。
9.1.3 算术编码
原理 :将整个消息映射到 [0,1)[0, 1)[0,1) 区间上的一个实数。
优势:可以接近熵率,比 Huffman 编码更高效。
9.1.4 Lempel-Ziv 算法
原理:利用重复模式进行压缩。
应用:gzip、PNG、DEFLATE。
9.2 有损压缩
9.2.1 率失真理论
问题:在给定的失真约束下,最小化描述长度。
率失真函数 :R(D)R(D)R(D) 是在失真不超过 DDD 时的最小速率。
9.2.2 变换编码
原理:将信号变换到另一个域(如频域),然后量化。
应用:JPEG(DCT)、MP3(MDCT)、AAC。
9.2.3 预测编码
原理:用预测模型减少冗余。
应用:语音编码(线性预测)、视频编码(运动补偿)。
9.3 Kolmogorov 复杂性
9.3.1 定义
字符串 xxx 的 Kolmogorov 复杂性 K(x)K(x)K(x) 是能输出 xxx 的最短程序的长度。
9.3.2 性质
- K(x)≤∣x∣+O(1)K(x) \leq |x| + O(1)K(x)≤∣x∣+O(1)(可以硬编码)
- 大多数字符串不可压缩:K(x)≈∣x)K(x) \approx |x)K(x)≈∣x)
- K(x)K(x)K(x) 是不可计算的
9.3.3 与熵的关系
对于随机变量的典型值,Kolmogorov 复杂性近似等于熵。
第四部分:学习理论
第十章:统计学习理论基础
10.1 学习问题的形式化
10.1.1 学习的目标
给定训练数据,找到一个假设 hhh,使得 hhh 在未见过的数据上表现良好。
10.1.2 学习的三个要素
- 假设空间 H\mathcal{H}H:候选假设的集合
- 损失函数 ℓ\ellℓ:衡量预测与真实值的差异
- 学习算法 A\mathcal{A}A:从数据中选择假设的过程
10.1.3 经验风险 vs 期望风险
经验风险(训练误差):
R^(h)=1n∑i=1nℓ(h(xi),yi)\hat{R}(h) = \frac{1}{n} \sum_{i=1}^{n} \ell(h(x_i), y_i)R^(h)=n1i=1∑nℓ(h(xi),yi)
期望风险(泛化误差):
R(h)=Eℓ(h(x),y)R(h) = \mathbb{E}\\ell(h(x), y)R(h)=Eℓ(h(x),y)
核心问题:经验风险能否代表期望风险?
10.2 一致性与收敛
10.2.1 一致学习器
学习算法是一致的,如果随着训练样本增加,经验风险收敛到期望风险的最小值。
10.2.2 大数定律
大数定律 保证:对于固定的 hhh,R^(h)→R(h)\hat{R}(h) \to R(h)R^(h)→R(h)。
问题 :学习算法会选择 hhh,而不是固定的。
10.3 过拟合
10.3.1 现象
- 训练误差很小
- 测试误差很大
10.3.2 原因
假设空间太大,包含了"记住"训练数据而非"学习"规律的假设。
10.3.3 偏差-方差权衡
期望误差=偏差2+方差+噪声\text{期望误差} = \text{偏差}^2 + \text{方差} + \text{噪声}期望误差=偏差2+方差+噪声
- 偏差:模型的假设与真实规律的差距
- 方差:模型对训练数据的敏感度
- 噪声:数据本身的随机性
第十一章:PAC 学习与 VC 维
11.1 PAC 学习框架
11.1.1 定义
PAC(Probably Approximately Correct)学习:
一个概念类 C\mathcal{C}C 是 PAC 可学习的,如果存在算法 A\mathcal{A}A,对于任意:
- ϵ>0\epsilon > 0ϵ>0(精度)
- δ>0\delta > 0δ>0(置信度)
- 分布 DDD
在 m=poly(1/ϵ,1/δ,n)m = \text{poly}(1/\epsilon, 1/\delta, n)m=poly(1/ϵ,1/δ,n) 个样本后,以概率 1−δ1-\delta1−δ 输出假设 hhh,使得:
R(h)≤minc∈CR(c)+ϵR(h) \leq \min_{c \in \mathcal{C}} R(c) + \epsilonR(h)≤c∈CminR(c)+ϵ
11.1.2 PAC 学习的意义
- 概率性:允许小的失败概率
- 近似性:允许小的误差
- 多项式时间:要求高效算法
11.2 有限假设空间
11.2.1 基本结果
定理 11.1 :如果 H\mathcal{H}H 是有限的,则对于任意 ϵ,δ>0\epsilon, \delta > 0ϵ,δ>0,当:
m≥1ϵ(ln∣H∣+ln1δ)m \geq \frac{1}{\epsilon} \left(\ln |\mathcal{H}| + \ln \frac{1}{\delta}\right)m≥ϵ1(ln∣H∣+lnδ1)
时,以概率 1−δ1-\delta1−δ,所有 h∈Hh \in \mathcal{H}h∈H 满足:
∣R(h)−R^(h)∣≤ϵ|R(h) - \hat{R}(h)| \leq \epsilon∣R(h)−R^(h)∣≤ϵ
11.2.2 样本复杂度
所需样本数与假设空间大小的对数成正比------这解释了为什么正则化有效。
11.3 VC 维
11.3.1 打散
假设空间 H\mathcal{H}H 打散 点集 SSS,如果对于 SSS 的任意子集,都存在 h∈Hh \in \mathcal{H}h∈H 能将其分开。
11.3.2 VC 维的定义
H\mathcal{H}H 的 VC 维 是 H\mathcal{H}H 能打散的最大点集的大小。
例子:
- 二维平面上的线性分类器:VC 维 = 3
- ddd 维空间中的线性分类器:VC 维 = d+1d+1d+1
11.3.3 VC 维与样本复杂度
定理 11.2 :如果 H\mathcal{H}H 的 VC 维为 ddd,则:
m=O(d+log(1/δ)ϵ2)m = O\left(\frac{d + \log(1/\delta)}{\epsilon^2}\right)m=O(ϵ2d+log(1/δ))
样本足以 PAC 学习。
11.3.4 VC 维的意义
- VC 维衡量假设空间的"复杂度"
- VC 维越大,需要越多的样本
- VC 维是与分布无关的
11.4 结构风险最小化
11.4.1 基本思想
在经验风险和模型复杂度之间权衡:
R(h)≤R^(h)+Ω(H,m)R(h) \leq \hat{R}(h) + \Omega(\mathcal{H}, m)R(h)≤R^(h)+Ω(H,m)
其中 Ω\OmegaΩ 是复杂度惩罚项。
11.4.2 常见正则化
- ℓ2\ell_2ℓ2 正则化 :Ω=λ∥w∥2\Omega = \lambda \|w\|^2Ω=λ∥w∥2
- ℓ1\ell_1ℓ1 正则化 :Ω=λ∥w∥1\Omega = \lambda \|w\|_1Ω=λ∥w∥1
- Dropout:隐式正则化
第十二章:泛化理论的现代视角
12.1 深度学习的泛化之谜
12.1.1 现象
深度网络通常:
- 参数量远大于训练样本数(过参数化)
- 训练误差可以达到零
- 测试误差却很低
12.1.2 传统理论的局限
经典 VC 维理论预测:过参数化应该导致过拟合。
但实际中,过参数化的深度网络泛化得很好。
12.2 隐式正则化
12.2.1 SGD 的隐式偏好
SGD 倾向于找到平坦的最小值------这些最小值通常泛化更好。
直觉:平坦最小值对参数扰动不敏感,因此对数据扰动也不敏感。
12.2.2 初始化的影响
初始化决定了 SGD 的"起点",影响最终找到的解。
12.2.3 网络架构的归纳偏置
网络架构本身包含归纳偏置:
- CNN 的局部性和平移等变性
- RNN 的时序性
- Transformer 的注意力机制
12.3 双下降现象
12.3.1 现象
当模型复杂度增加时,测试误差先下降、后上升、再下降。
12.3.2 解释
- 欠参数化:模型太简单,偏差大
- 临界点:模型刚好能拟合训练数据
- 过参数化:模型有"多余"的容量,可以选择更"好"的解
12.4 核方法视角
12.4.1 神经正切核(NTK)
在无限宽度极限下,深度网络的训练动力学等价于核方法。
12.4.2 核方法的泛化
核方法的泛化能力取决于核的谱性质。
第五部分:哲学与联系
第十三章:计算主义与心智哲学
13.1 计算主义
13.1.1 基本主张
计算主义:心智是一种计算过程。
13.1.2 强 AI 与弱 AI
- 强 AI:机器可以真正"思考"
- 弱 AI:机器可以模拟思考
13.1.3 中文房间论证
Searle 的中文房间思想实验:一个不懂中文的人,按照规则操作符号,可以产生正确的中文回答。这算是"理解"中文吗?
13.2 图灵测试
13.2.1 定义
如果机器在对话中能让人无法区分它是机器还是人,则通过图灵测试。
13.2.2 局限
- 行为主义:只关注外在行为,不关注内在理解
- 欺骗性:可能通过"技巧"而非"智能"通过测试
13.3 意识与计算
13.3.1 Hard Problem
意识的困难问题:为什么物理过程会产生主观体验?
13.3.2 整合信息理论
IIT:意识与系统的"整合信息"相关。
13.3.3 全局工作空间理论
GWT:意识与信息的全局广播相关。
第十四章:人工智能的理论基础
14.1 智能的定义
14.1.1 行为主义定义
智能是实现目标的能力。
14.1.2 认知主义定义
智能是处理信息的能力。
14.1.3 进化主义定义
智能是适应环境的能力。
14.2 AI 的理论框架
14.2.1 符号主义
核心思想:智能是符号操作。
代表:逻辑推理、专家系统。
局限:知识获取瓶颈、常识推理困难。
14.2.2 连接主义
核心思想:智能从简单的连接中涌现。
代表:神经网络、深度学习。
局限:可解释性差、需要大量数据。
14.2.3 行为主义
核心思想:智能是与环境的交互。
代表:强化学习、机器人学。
局限:探索-利用困境。
14.3 No Free Lunch 定理
14.3.1 内容
NFL 定理:没有任何算法在所有问题上都优于随机猜测。
14.3.2 意义
- 没有"万能"的学习算法
- 归纳偏置是必要的
- 算法选择需要考虑具体问题
第十五章:深度学习的理论挑战
15.1 表示学习
15.1.1 什么是好的表示
- 不变性:对不相关的变化不变
- 等变性:对相关的变化等变
- 解耦:不同因素独立编码
15.1.2 深度学习的优势
深度网络可以学习层次化表示:
- 底层:简单的局部特征
- 高层:复杂的全局特征
15.2 优化的理论
15.2.1 非凸优化的困难
深度学习的损失函数是高度非凸的。
15.2.2 为什么 SGD 有效
- 过参数化使得局部最小值"足够好"
- SGD 的噪声帮助逃离鞍点
- 平坦最小值与泛化相关
15.3 泛化的理论
15.3.1 传统理论的局限
VC 维理论无法解释深度学习的泛化。
15.3.2 新的理论方向
- 隐式正则化:SGD 的偏好
- 信息论方法:信息瓶颈
- 核方法视角:NTK
- 动力系统视角:训练动力学
第十六章:开放问题与未来方向
16.1 理论开放问题
16.1.1 P vs NP
这是计算机科学最重要的开放问题。
16.1.2 量子计算的优势
量子计算能解决哪些经典计算无法高效解决的问题?
16.1.3 深度学习的理论
- 为什么深度学习有效?
- 什么是最优的网络架构?
- 如何保证深度学习的可靠性?
16.2 哲学开放问题
16.2.1 机器能思考吗?
这是一个哲学问题,而非技术问题。
16.2.2 通用人工智能(AGI)
AGI 是否可能?如果可能,如何实现?
16.2.3 AI 对齐
如何确保 AI 的目标与人类一致?
16.3 跨学科联系
16.3.1 计算与物理
- 计算的物理极限
- 量子计算
- 可逆计算
16.3.2 计算与生物
- 神经计算
- 进化计算
- 分子计算
16.3.3 计算与认知
- 认知架构
- 具身认知
- 社会认知
附录
A. 核心概念速查
| 概念 | 定义 | 意义 |
|---|---|---|
| 图灵机 | 计算的数学模型 | 定义了可计算性 |
| Church-Turing 论题 | 有效可计算 = 图灵可计算 | 计算的基本假设 |
| 停机问题 | 判断程序是否终止 | 不可计算的典型例子 |
| P | 多项式时间可解 | "高效"的数学定义 |
| NP | 多项式时间可验证 | "容易验证"的数学定义 |
| NP 完全 | NP 中最难的问题 | P vs NP 的核心 |
| 熵 | 信息的度量 | 通信和压缩的基础 |
| 信道容量 | 可靠传输的最大速率 | 通信的基本极限 |
| VC 维 | 假设空间的复杂度 | 学习的样本复杂度 |
| PAC 学习 | 概率近似正确学习 | 学习理论的框架 |
B. 重要定理
| 定理 | 内容 | 意义 |
|---|---|---|
| Cook-Levin | SAT 是 NP 完全的 | NP 完全性的基础 |
| Shannon 信道编码 | 速率 < 容量时可靠通信可能 | 通信理论的基石 |
| Shannon 信源编码 | 压缩率 ≥ 熵 | 数据压缩的极限 |
| 哥德尔不完备 | 一致系统不完备 | 数学的局限性 |
| PAC 学习 | 有限假设空间可学习 | 学习理论的基础 |
C. 参考文献
-
Sipser, M. (2012). Introduction to the Theory of Computation (3rd ed.). Cengage Learning.
-
Cover, T. M., & Thomas, J. A. (2006). Elements of Information Theory (2nd ed.). Wiley.
-
Shalev-Shwartz, S., & Ben-David, S. (2014). Understanding Machine Learning: From Theory to Algorithms. Cambridge University Press.
-
Arora, S., & Barak, B. (2009). Computational Complexity: A Modern Approach. Cambridge University Press.
-
Turing, A. M. (1936). On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society.
-
Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal.
-
Valiant, L. G. (1984). A Theory of the Learnable. Communications of the ACM.
-
Vapnik, V. N. (1998). Statistical Learning Theory. Wiley.
-
Gödel, K. (1931). Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I. Monatshefte für Mathematik und Physik.
-
Cook, S. A. (1971). The Complexity of Theorem-Proving Procedures. STOC 1971.