计算机数学入门 · 从一个坑,走到整门学科
这一组讲的不是"数学课",是计算机建立在什么数学之上。
写给已经会写点代码、但一听"数学"就心里没底的人。
先说清楚它跟别的东西有什么不同
- 跟 /cs/ 那一组的区别:
/cs/回答"我在计算机学科的哪一格"(地图);这里回答"这一步凭什么说它是对的"(尺子)。 - 跟数学系的数学的区别:
| 数学系的数学 | 计算机数学 | |
|---|---|---|
| 关心什么 | 对象本身的性质 | 在有限资源下能不能算、算得对不对、算得多快 |
| 对"无穷"的态度 | 核心研究对象 | 必须消灭的东西 |
| 对"误差"的态度 | 追求精确 | 量化它、控制它、容忍它 |
数学是连续的、无限的、精确的;计算机是离散的、有限的、近似的。 这两者之间的翻译工作,就是计算机数学。
八层目录
| 层 | 解决什么问题 | 对应课程 | 状态 |
|---|---|---|---|
| 一 · 数怎么装进机器 | 有限表示、误差、溢出 | 数值分析 | (一) |
| 二 · 离散结构 | 采样、量化、集合、关系、图、计数 | 离散数学 | (二) |
| 三 · 怎么保证对 | 命题、量词、证明、循环不变量 | 数理逻辑 | (三) |
| 四 · 什么能算 | 自动机、可计算性、停机问题 | 计算理论 | (四) |
| 五 · 算得多快 | 渐近代价、复杂度、P vs NP | 算法分析 | (五) |
| 六 · 不确定的世界 | 概率、贝叶斯、随机化 | 概率论与统计 | (六) |
| 七 · 连续的近似 | 导数、梯度、优化 | 微积分 | (七) |
| 八 · 高维的表示 | 向量、矩阵、特征值、SVD | 线性代数 | (八) |
先读这篇
(总纲)计算机数学入门 · 总纲:八层为什么是这个顺序 — 25 分钟
一个“一万笔账”的普通记账任务,八层数学全用上了。
为什么是这八层、为什么顺序不能乱、你是哪种人该走哪条路线、怎么才知道自己学会了。
只看一篇的话,看这篇。
八篇正文
(一)计算机里的数,不是数学里的数 — 1.15 万字
0.1 + 0.2 为什么不等于 0.3。六个坑一路推到格点模型、模运算、2038 问题,最后推出整套八层体系。
一个数怎么被压进机器。
(二)世界是连续的,机器是离散的 — 1.3 万字
一个 15 kHz 的声音,用 8000 Hz 采样,听起来是 1 kHz——而且听不出错了。
从采样定理、量化噪声(6.02n+1.76)、鸽巢原理,讲到集合、关系、图、计数。最后是生日悖论:32 位空间 43 亿,七万条就有一半概率撞。
一堆东西怎么被压进机器。
(三)怎么证明它是对的 — 1.4 万字
一个活了 9 年的二分查找 bug——逻辑看起来完美、测试全都过了、线上从来没出问题,因为它只在数组超过 10 亿个元素时才触发。
穷举 53,158 个用例测 6 个二分变体:两个全过、三个崩(其中一个是 78.2% 的输入死循环,但从不给错答案)。
从归纳法、循环不变量、德摩根律讲到空数组上
all()为什么返回 True。怎么确认它还是对的。
(四)机器算不出来的东西 — 1 万字
写一个判断“另一个程序会不会停”的程序——然后证明这件事做不到。
从康托尔对角线(实数不可数)到图灵停机问题(自指 + 反着做),最后是 Rice 定理:“这个程序有没有 bug”不可判定。
能算的函数在数学上存在的函数里,占比是 0。“无所不能的 AI”在数学上不存在。
有些事,机器根本做不了。
(五)验证很快,找到很难 — 9000 字
验证一个答案只要 3 纳秒,找出答案要试 320 亿次。
P vs NP:为什么“验证一个解”和“找到一个解”是天壤之别;为什么 SAT、数独、背包是同一个问题;为什么你的密码押在 P≠NP 上。
能算、算得动、算不动——复杂度是三层,不是两层。
(六)不确定的世界 — 1 万字
一个“准确率 99%”的检测,测出阳性,你有病的概率其实不到 10%。
贝叶斯定理、三门问题、生日悖论、赌徒谬误——全部实测。最后讲反直觉的随机化算法:用随机,反而更快更准(Miller-Rabin 半毫秒判素数)。
世界是不确定的,概率是唯一能驾驭它的数学。
(七)用直线去逼近曲线 — 1.1 万字
求导数时,h 越小越准吗?错。 实测误差是 U 形:h=1e-8 最准(误差 3e-9),h=1e-16 时导数算出来直接是 0。
两个误差在打架:截断误差随 h 涨,舍入误差随 h 落——第一篇文章的“格点”在这里直接变成“算得越精细反而越错”。
然后是泰勒展开(计算机里的 sin 怎么算)、梯度下降(AI 学习的全部机制)。学习率临界值 lr<0.1 可以算出来,不是调参玄学。
AI 不是“理解”,是“下降”。
(八)怎么让机器觉得两句话很像 — 1.2 万字
机器不懂“意思”,但它能把意思变成向量——然后“意思相近”就变成了“夹角小”。
king − man + woman ≈ queen(实测余弦 0.9535)。SVD 图像压缩、维度诅咒(5000 维时随机两点变异系数 0.01),最后是注意力机制 = 三次矩阵乘法(Q·Kᵀ → softmax → W·V)。
八层走完,最后有一张表:一个 GPT,八层全用上了。
读法
每篇都是长文,都要动手。 不跑一遍,你只是又"知道"了一件事——这正是很多人"学了很多、还是没底"的原因。
每篇末尾都有"本篇所有数字的来源",所有实测数字都是本机跑出来的,不是引用的。你自己跑出来的会差最后几位,但结论是结构性的。