上一篇 《结绳记事》 里,我们说数学的起点是抽象——用一个符号代表一个事物。
但那时候,人类只能描述"有"的东西:一只羊、三块石头、十根手指。
那么——“没有”,怎么表示?
系列导航
▸ 第二篇(本文):零的发明——最伟大的"无"
第一章:一个"缺席"的符号
公元 628 年,印度数学家婆罗摩笈多(Brahmagupta)在他的著作《婆罗摩修正体系》中,第一次把零当作一个真正的数字来对待。
他写下了一系列关于零的规则:
任何数加零,等于它自己 a + 0 = a
任何数减去它自己,等于零 a - a = 0
任何数乘以零,等于零 a × 0 = 0
今天看来这些很"显然"。但在一千四百年前,这是一个惊天动地的想法。
因为在此之前,人类所有的数都用来回答一个问题:“有多少?”
一只羊、两块石头、三个人——数字总是在描述存在的东西。
而零说的是:“什么都没有。”
但"什么都没有"也是一个量。它也值得一个符号。
你可能觉得这很自然。但大多数古代文明都没有走出这一步。
第二章:没有零的世界
让我们看看,没有零的世界是什么样的。
罗马帝国的噩梦
罗马人有一套非常精致的数字系统——I, V, X, L, C, D, M。他们用这套系统管理了一个横跨三大洲的帝国。
但他们没有零。
这意味着什么?
问题一:"十"怎么写?
有零的世界: 10 (一个"1"在十位,一个"0"表示个位没有)
罗马世界: X (一个专门的符号)
问题二:"一百"怎么写?
有零的世界: 100 ("1"在百位,后面两个"0")
罗马世界: C (又一个专门的符号)
问题三:"一千零八"怎么写?
有零的世界: 1008 ("0"帮你占住了百位和十位)
罗马世界: MVIII (完全不同的组合逻辑)
发现了吗?
零的本质角色之一:占位符。
在 1008 里,零不是说"这里什么都没有就跳过吧"。零是说:“百位和十位我替你守着,虽然这里是空的,但位置不能乱。”
没有零,你就需要为每一个量级发明一个新符号(X, C, M……)。有了零,你只需要 0-9 这十个符号 + 位置,就能表达无限大的数。
一句话记住: 零是数字世界的"占位符"——它让位置(十位、百位、千位……)有了意义。这就是位值制的灵魂。
第三章:零的"性格"
零不只是占位符。当它作为一个数参与运算时,它展现出独一无二的性格。
| 运算 | 结果 | 零的性格 |
|---|---|---|
| 5 + 0 = 5 | 加零不变 | 透明人——加了等于没加 |
| 5 - 0 = 5 | 减零不变 | 同上,安安静静 |
| 5 × 0 = 0 | 乘零归零 | 黑洞——任何东西碰到它都消失 |
| 5 ÷ 0 = ? | 无法计算 | 禁区——数学在这里画了一条红线 |
前两条很温和:零是个"透明人",加上去或减掉,什么都不变。
第三条就霸道了:任何数乘以零,都变成零。 一百万乘以零?零。一万亿乘以零?还是零。零就像数学世界的黑洞——什么碰到它都被吞噬。
第四条更有意思:不能除以零。 这不是人为规定的"考试规则"。你想想看——
10 ÷ 2 = 5,意思是"把 10 平均分成 2 份,每份 5"
10 ÷ 0 = ?,意思是"把 10 平均分成 0 份"
分成零份?这在逻辑上就是不可能的。
除以零不是"难算",是没有意义。这是数学告诉你的:不是每个问题都有答案。 有些问题本身就是荒谬的。
想一想: 零是唯一一个既不是正数也不是负数的数。它是分界线,是原点,是"无"。但这个"无",比任何"有"都重要——因为没有它,整个数字系统就会崩塌。
第四章:数轴的诞生——零打开的门
有了零,一件更惊人的事情成为可能:负数。
想象一个温度计:
零度
↓
-30 -20 -10 0 10 20 30 (°C)
◄──┼────┼────┼────┼────┼────┼────┼──►
寒冷 ↑ 温暖
分界线
零把世界分成了两半:正和负,多和少,有和欠。
在零出现之前,数只能往一个方向走——1, 2, 3, 4, 5……越来越多。数轴是一条射线,从某个起点出发,只能往右。
有了零,数轴变成了一条直线——从负无穷到正无穷,零是中间的原点。
没有零的世界:
→ 1, 2, 3, 4, 5, ......
只能描述"有多少"
有了零:
......, -3, -2, -1, 0, 1, 2, 3, ......
可以描述"有多少"和"欠多少"
可以描述"升温"和"降温"
可以描述"盈利"和"亏损"
可以描述"前进"和"后退"
负数在今天看来再自然不过了:
- 银行账户:余额 -200 元(欠了 200)
- 温度:-15°C(零下 15 度)
- 海拔:死海 -430 米(低于海平面 430 米)
- 时间线:公元前 500 年 = -500 年
但在历史上,负数被人类抵触了上千年。
负数:人类为什么不愿接受它?
古希腊人拒绝负数——“比没有还少的东西怎么可能存在?”
直到 16-17 世纪的欧洲,很多数学家还在叫负数"荒谬的数"(numeri absurdi)。笛卡尔——就是发明坐标系的那位天才——也管方程的负数解叫"虚假的根"(false roots)。
为什么这么难接受?
因为人类的直觉是建立在实物上的。你能拿起 3 个苹果,但你怎么拿起 “-3 个苹果”?
数学不只是"数现实中有的东西"。
数学可以描述"不存在的东西"——这正是它的威力。
你不能拿起 -3 个苹果。但你可以欠别人 3 个苹果。“欠"这个概念,完美地对应了 -3。
数学家做的事情是:扩大规则的适用范围。 即使你摸不到、看不见,只要逻辑自洽,它就是"存在"的。
一句话记住: 负数不是"虚假"的。它只是描述了一种新的关系——“反方向”。温度可以低于零,海拔可以低于海平面,账户可以低于零余额。敢于接受"看不见的东西也可以存在”,这就是数学思维。
第五章:零和负数——数的全景
让我们把数的故事到目前为止做一个全景梳理。人类的数,是一步一步"扩张"出来的:
第一步:自然数(结绳记事)
1, 2, 3, 4, 5, ......
能描述:"我有几只羊"
↓ 加入零
第二步:全体自然数
0, 1, 2, 3, 4, 5, ......
能描述:"我有几只羊"+"一只都没有"
↓ 加入负数
第三步:整数
......, -3, -2, -1, 0, 1, 2, 3, ......
能描述:"有多少"+"欠多少"
↓ 加入分数/小数
第四步:有理数
......, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, ......
能描述:"半个苹果"、"三分之二"
↓ 加入 √2、π 等
第五步:实数
数轴上的每一个点
能描述一切可以测量的量
↓ 加入 √(-1) ?
第六步:复数(这个以后再聊)
能描述......连方向和旋转都行
每一次扩张,都是因为人类遇到了老数字系统无法回答的问题:
- “一只都没有”→ 需要零
- “温度低于零”→ 需要负数
- “把蛋糕分三份”→ 需要分数
- “正方形对角线多长”→ 需要无理数(√2)
数学不是一次性发明的。它是被一个又一个"回答不了的问题"逼着长大的。
一句话记住: 每一种新数的发明,都是因为旧的数不够用了。数学的进步,就是不断扩大"什么算数"的边界。
第六章:连接 AI——零是神经网络的"开关"
故事讲到这里,我们来看看零在 AI 世界里扮演什么角色。
答案是:零是神经网络最重要的"开关"。
ReLU:最简单也最重要的函数
神经网络里有一个用得最多的函数,叫 ReLU(Rectified Linear Unit)。它的规则简单到不能再简单:
规则:
如果输入 ≥ 0 → 原样输出
如果输入 < 0 → 输出 0
用一行代码写:
ReLU(x) = max(0, x)
举例:
ReLU(5) = 5 ✓ 正数,通过
ReLU(0.3) = 0.3 ✓ 正数,通过
ReLU(-2) = 0 ✗ 负数,归零!
ReLU(-100)= 0 ✗ 负数,归零!
输出
↑
│ ╱
│ ╱
│ ╱
│ ╱
│ ╱
───┼────╱──────→ 输入
│ 0
│
( 负数区域全部变为 0 )
ReLU 的本质就是一个门卫:
- 正数?放行。
- 负数?归零。不许通过。
就这么简单的一个操作,为什么如此重要?
零作为"沉默"
在神经网络里,每个神经元计算出一个数值。这个数值可正可负:
- 正数 = 这个神经元"被激活了"——它有话要说
- 零(被 ReLU 置零) = 这个神经元"沉默了"——它选择不参与
想象一个简单的图像识别网络:
输入:一张猫的照片
神经元 A(检测竖线): 0.8 → 有竖线,激活!
神经元 B(检测横线): 0.2 → 有点横线,微弱激活
神经元 C(检测蓝色): -0.5 → 没有蓝色 → ReLU → 0(沉默)
神经元 D(检测毛发纹理): 0.9 → 有毛发,强烈激活!
神经元 E(检测车轮): -1.2 → 没有车轮 → ReLU → 0(沉默)
零不是"什么都没探测到"
零是"我看过了,这个特征确实不在"
零不是虚无。零是一个明确的信号:“没有。”
就像一个侦探调查五条线索,排除了其中两条。被排除的线索不是"无用功"——知道什么不是答案,和知道什么是答案一样重要。
这正好呼应了我们前面讲的:零不是"没有"。零是一种存在——它表达的是"此处为空"这个信息。
稀疏性:大部分参数都是零
还有一个有趣的事实:训练好的神经网络里,大量的参数值是零或接近零。
这叫稀疏性(sparsity)。
为什么?因为不是每个连接都重要。网络在训练过程中"学会了"哪些连接是有用的、哪些是多余的。多余的连接,权重被调到零——关掉了。
一个训练好的小模型的参数分布:
▓▓▓▓
▓▓▓▓▓▓
▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
░░░░▓▓▓▓▓▓▓▓▓▓▓▓░░░░
░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░
─────────────────┼─────────────────
0
大量参数集中在 0 附近
网络自动"关掉"了不需要的连接
记得上一篇的核心概念"压缩"吗?零就是压缩的工具。 把不重要的信号归零,就是在做信息压缩——保留关键,丢弃噪声。
一句话记住: 在 AI 的世界里,零 = 沉默 = 选择性忽略 = 压缩。ReLU 函数用一行代码
max(0, x)决定了哪些信号该通过、哪些该被"关掉"。零不是空白,零是决策。
第七章:零的哲学——“无"的力量
走到这里,让我们把视角拉高一点。
零的故事告诉我们一个深刻的道理:数学的进步,往往来自于敢想"不存在"的东西。
| 概念 | “不存在"在哪里? | 打开了什么门? |
|---|---|---|
| 零 | 没有任何东西 | 位值制、负数、整个数轴 |
| 负数 | 比没有还少 | 温度、债务、方向 |
| 无理数 (√2) | 不能写成分数 | 精确的几何测量 |
| 虚数 (√-1) | 没有哪个实数的平方是负数 | 电路分析、量子力学 |
| 无穷 (∞) | 数不到头 | 微积分、极限理论 |
看到了吗?数学史上最重要的突破,几乎都来自于人类接受了某种"不存在"的东西。
这需要勇气。
古希腊人因为发现 √2 不能写成分数而恐慌——据说发现者被扔进了大海。笛卡尔嘲笑负数是"虚假”。整个欧洲数学界花了几百年才接受"虚数”。
但最终,每一次"接受不可能",都让数学变得更强大、更完整。
不要问"这个东西存在吗",而要问"如果它存在,会怎样"。
如果零存在——我们得到了位值制。
如果负数存在——我们得到了完整的数轴。
如果 √-1 存在——我们得到了描述波和旋转的工具。
每一次"假设它存在",都打开了一个新世界。
这也是 AI 的思维方式。神经网络不会问"这个词的含义是什么?"——它假设每个词可以用一组数字描述,然后去训练这组数字,直到它能产生有用的预测。
假设先行,验证随后。 这是数学的方法,也是科学的方法,也是 AI 的方法。
动手实验
实验一:感受 ReLU
# 纯 Python,不需要任何库
def relu(x):
"""ReLU:神经网络最常用的激活函数"""
return max(0, x)
# 试试看
inputs = [3, 1, -2, 0.5, -7, 0, -0.1, 4.2]
print("输入 → ReLU 输出")
print("─" * 25)
for x in inputs:
result = relu(x)
status = "✓ 通过" if result > 0 else "✗ 归零"
print(f" {x:>5} → {result:>5} {status}")
# 输出:
# 输入 → ReLU 输出
# ─────────────────────────
# 3 → 3 ✓ 通过
# 1 → 1 ✓ 通过
# -2 → 0 ✗ 归零
# 0.5 → 0.5 ✓ 通过
# -7 → 0 ✗ 归零
# 0 → 0 ✗ 归零
# -0.1 → 0 ✗ 归零
# 4.2 → 4.2 ✓ 通过
实验二:数的扩张
# 体验"数的扩张史"
# 第一步:自然数——只能描述"有多少"
natural = [1, 2, 3, 4, 5]
print(f"自然数: {natural}")
print(f" 能回答: 我有{natural[2]}只羊")
# 第二步:加入零
with_zero = [0, 1, 2, 3, 4, 5]
print(f"\n加入零: {with_zero}")
print(f" 能回答: 我有{with_zero[0]}只羊(一只都没有)")
# 第三步:加入负数——整数
integers = [-3, -2, -1, 0, 1, 2, 3]
print(f"\n整数: {integers}")
print(f" 能回答: 我欠别人{abs(integers[0])}只羊")
# 第四步:加入小数——有理数
rationals = [-1.5, -1, -0.5, 0, 0.5, 1, 1.5]
print(f"\n有理数: {rationals}")
print(f" 能回答: 我有半({rationals[4]})只蛋糕")
# 第五步:无理数——实数
import math
print(f"\n实数: π = {math.pi:.10f}...")
print(f" √2 = {math.sqrt(2):.10f}...")
print(f" 小数永远写不完,但它们确实'存在'于数轴上")
本篇小结
一、零是占位符
- 没有零,就没有位值制。1, 10, 100 无法区分
- 零"守住位置",让 10 个符号能表达无限大的数
二、零有独特的"性格"
- 加减时"透明",乘法时"黑洞",除法时"禁区"
- 零不是"没有性格",它的性格非常鲜明
三、零打开了负数的大门
- 有了零作为原点,数轴从射线变成了直线
- 负数描述"反方向":欠债、降温、海平面以下
四、数的扩张从未停止
- 自然数 → 整数 → 有理数 → 实数 → 复数
- 每次扩张都是因为旧的数不够回答新问题
五、零是 AI 的"开关"
- ReLU 函数:正数通过,负数归零
- 零 = 沉默 = 选择性忽略 = 压缩
- 神经网络通过归零来"关掉"不重要的连接
六、数学的勇气:接受"不存在"
- 零、负数、无理数、虚数——都是人类接受"不存在"之后的产物
- 不问"它存在吗",而问"如果它存在,会怎样"
下一篇预告
我们现在有了数(从负无穷到正无穷的完整数轴),有了符号系统(阿拉伯数字 + 位值制),有了零。
下一个大问题是:
如果有一个数,我不知道它是多少,但我知道它满足某个条件——我能找到它吗?
比如:一个数乘以自己等于 9,这个数是几?
答案是 3。但更重要的是——我们可以写成 x² = 9。
x——这个字母——是人类给"未知"取的名字。从此,数学不再只是"算已知的数",而是"推理未知的数"。
《看见数学》系列 — 从结绳记事到 AI,看见数学之美。
本文首发于「AI 学习笔记」博客:https://Jason-Azure.github.io/ai-blog/
微信公众号:AI-lab学习笔记
系列文章完整列表见 标签:看见数学
