第一幕,我们学会了描述静止的世界:数、零、x、坐标、方程。
但真实的世界不是静止的。温度在变,速度在变,你的心跳在变,股价在变。
第二幕的主题是:变化。
而要描述变化,我们首先需要一个新工具——函数。
系列导航
第一幕 · 数的觉醒(5 篇)→ 查看全部▸ 第六篇(本文):函数——万能的输入-输出机器 【第二幕开篇】▹ 第七篇:指数爆炸——人脑理解不了的增长▹ 第八篇:圆与波——三角函数的真面目▹ 第九篇:微积分(上)——追问"此刻"▹ 第十篇:微积分(下)——加起来的艺术
第一章:一台自动售货机
想象一台自动售货机。
你投进去 3 块钱,它吐出来一瓶矿泉水。 你投进去 5 块钱,它吐出来一瓶可乐。 你投进去 8 块钱,它吐出来一杯咖啡。
┌─────────────────┐
│ │
输入 │ 自动售货机 │ 输出
──────→│ (一台机器) │──────→
3 元 │ │ 矿泉水
5 元 │ │ 可乐
8 元 │ │ 咖啡
│ │
└─────────────────┘
规则明确:每个输入对应一个确定的输出
你不会投 3 块钱进去,有时出矿泉水有时出咖啡
这就是函数的本质:
给一个输入,得一个确定的输出。
数学家把这件事写成一行符号:
f(x) = y
f = 这台"机器"(函数)
x = 你投进去的东西(输入)
y = 机器吐出来的东西(输出)
就是这么简单。函数 = 一台有明确规则的机器。你给它一个东西,它按规则返回一个结果。
一句话记住: 函数不是一个高深的数学概念。函数就是一台"输入→输出"的机器。你每天都在和函数打交道——只是没人告诉你它叫函数。
第二章:你身边全是函数
一旦你理解了"输入→输出",你会发现——函数无处不在。
| 机器(函数) | 输入 (x) | 输出 f(x) | 数学写法 |
|---|---|---|---|
| 体温计 | 你的体温 | 一个数字 | f(身体) = 36.5°C |
| 导航软件 | 起点 + 终点 | 一条路线 | f(A, B) = 最短路 |
| 菜谱 | 食材 | 一道菜 | f(鸡蛋, 番茄) = 番茄炒蛋 |
| 计算器 | 一道算式 | 一个结果 | f(3+5) = 8 |
| 翻译软件 | 中文句子 | 英文句子 | f(“你好”) = “Hello” |
| 搜索引擎 | 关键词 | 一页结果 | f(“天气”) = 天气页面 |
看到了吗?每一个有明确规则的"输入→输出"过程,都是函数。
但这里有一个关键:输入一样,输出必须一样。
你在同一台计算器上按 3 + 5,不可能有时候出 8,有时候出 9。这就是函数的铁律——同样的输入,永远得到同样的输出。
古人也懂这个道理。《荀子》说:"规矩诚设矣,则不可欺以方圆。"——规矩(规则/函数)一旦定下来,结果就是确定的。
第三章:函数的数学面孔
把函数从日常生活搬到数学里,最常见的形式是:输入一个数,输出一个数。
f(x) = 2x + 1
投入 x = 0 → 吐出 2×0+1 = 1
投入 x = 1 → 吐出 2×1+1 = 3
投入 x = 2 → 吐出 2×2+1 = 5
投入 x = 10 → 吐出 2×10+1 = 21
规则很简单:乘以 2,再加 1
上一篇我们学了坐标系。现在我们知道——每个函数都可以画成一幅图。
把所有的 (x, f(x)) 画在坐标系上:
f(x) = 2x + 1
y
7 ─┤ ★
│ ╱
5 ─┤ ★
│ ╱
3 ─┤ ★
│ ╱
1 ─★
│
────┼────┼────┼────→ x
0 1 2 3
一条直线!
不同的函数,画出来就是不同的"脸"。 这就是函数的"相貌":
直线 f(x) = 2x + 1 抛物线 f(x) = x²
╱ ╱╲
╱ ╱ ╲
╱ ╱ ╲
╱ ╱ ╲
"匀速变化" "先慢后快"或"先快后慢"
波浪 f(x) = sin(x) S 形 f(x) = sigmoid(x)
∿∿∿ ╱───
∿ ∿ ╱
∿ ∿ ╱
"周期循环" "从 0 渐变到 1"
阶梯 f(x) = 取整 ReLU f(x) = max(0,x)
┌──┐ ╱
──┘ └──┐ ╱
└──┐ ──╱
"整数跳变" "负数归零"(第二篇学过!)
看到函数的"脸",你就能直觉地理解它的"性格":
- 直线 = 稳定、匀速、可预测
- 抛物线 = 先慢后快(或先快后慢),有一个顶点
- 波浪 = 周而复始、循环往复(心跳、四季、潮汐)
- S 形 = 从"几乎没有"平滑过渡到"几乎全部"(概率、信心)
- ReLU = 负数全关,正数全放(神经网络的开关——第二篇讲过)
一句话记住: 函数的图像就是它的"性格写照"。看一眼图形,你就知道这个函数在描述什么样的变化。
第四章:线性 vs 非线性——世界的真相
在所有函数中,有一条最重要的分界线:线性和非线性。
线性:直线的世界
线性函数:f(x) = kx + b
- 画出来是直线
- 变化是均匀的:x 每增加 1,y 就增加 k
- 可预测:知道了 k 和 b,一切尽在掌握
线性关系很好理解:时薪 50 元,工作 8 小时挣 400 元。工作 16 小时挣 800 元。简单、直接、等比例。
但问题是——现实世界几乎没有东西是线性的。
非线性:弯曲的真相
| 你以为是直线的 | 其实是弯的 |
|---|---|
| “学 10 小时提 10 分” | 刚开始提分快,后来越来越慢(边际递减) |
| “多吃一碗一样饱” | 第一碗雪中送炭,第五碗痛苦万分 |
| “人口每年增长 1%” | 60 年后人口翻 1.8 倍(复利/指数) |
| “跑步速度匀加速” | 越快空气阻力越大,加速越难 |
| “投入越多产出越多” | 到了一个点后,投入更多反而产出下降 |
人类的直觉是线性的——我们天生觉得"多一倍投入就多一倍产出"。但自然界几乎所有规律都是非线性的。
这就是为什么:
- 你觉得"每天学一小时,100 天就能精通"——但实际上学习曲线是弯的
- 你觉得"存钱翻倍需要双倍时间"——但复利让翻倍越来越快
- 你觉得"病毒传播是线性的"——但指数增长让你措手不及
非线性是世界的真相。而数学的威力,就在于它能精确描述这些弯曲。
中国古人的直觉: 《道德经》说"反者道之动"——事物发展到极端就会反转。这其实就是在说非线性:不是一直往上走的,到了一个点就会弯回来。老子在两千五百年前就感受到了非线性,只是他用的是哲学语言,数学家用的是方程。
一句话记住: 人类的直觉是线性的(一条直线),但世界的真相是非线性的(各种弯曲)。数学帮你看见弯曲——这就是它的价值。
第五章:函数的"组装"——从简单到复杂
一个函数很简单。但函数最强大的特性是——它们可以组装。
函数套函数
f(x) = 2x (乘以 2)
g(x) = x + 1 (加 1)
g(f(x)) = ?
先把 x 投入 f → 得到 2x
再把 2x 投入 g → 得到 2x + 1
g(f(3)) = g(6) = 7
这就像工厂的流水线:
原料 x
│
▼
┌──────┐ ┌──────┐ ┌──────┐
│ 第一道│ │ 第二道│ │ 第三道│
│ 工序 │───→│ 工序 │───→│ 工序 │───→ 成品 y
│ f₁(x) │ │ f₂ │ │ f₃ │
└──────┘ └──────┘ └──────┘
每道工序是一个函数
整条流水线也是一个函数(一个大函数 = 三个小函数套在一起)
这正是神经网络的工作方式。每一"层"就是一个函数,整个网络就是几十个函数套在一起的流水线。
| 工厂流水线 | 神经网络 | |
|---|---|---|
| 每道工序 | 切割、打磨、上色 | 矩阵乘法 + 激活函数 |
| 工序数量 | 几道到几十道 | 几十层到上百层 |
| 原料 | 铁矿石、布料 | 文字、图片 |
| 成品 | 汽车、衣服 | 下一个词、一张图 |
| 调整方式 | 工程师调机器 | 梯度下降调参数 |
中国的"流水线"智慧
说到流水线,中国古代也有类似的思想。
《考工记》(约公元前 5 世纪)是中国最早的手工业技术文献。书中记载了制造一辆车需要的多道工序——每道工序的"输入"是上一道的"输出"。这不就是函数的组合吗?
更精确的例子是算筹——中国古代的计算工具。用算筹做乘法时,每一步的结果是下一步的输入。一步一步,最终得到答案。算筹运算的每一步,就是一次函数调用。
第六章:连接 AI——GPT 是一个函数
现在,让我们做一个大胆但准确的声明:
┌─────────────────────────┐
│ │
输入 │ GPT │ 输出
──────→│ (一个超大型函数) │──────→
"今天 │ │ "真好"
天气" │ 几十亿个参数 │
│ 几十层流水线 │
│ │
└─────────────────────────┘
f("今天天气") = "真好"
f("1+1等于") = "2"
f("写一首关于春天的诗") = "春风又绿江南岸..."
认真的。把所有复杂性剥掉,GPT 做的事情就是:
接收一段文字(输入),输出下一个最可能的词(输出)。
它是一个函数。一个非常非常大的函数。
| 自动售货机 | GPT | |
|---|---|---|
| 输入 | 3 块钱 | “今天天气” |
| 输出 | 矿泉水 | “真好” |
| 规则 | 硬编码(人写的价格表) | 学来的(从万亿个词中训练) |
| 旋钮 | 几个(价格、库存) | 1750 亿个(参数) |
| 能调吗 | 换价格表 | 训练(梯度下降) |
区别在哪?
- 规模:自动售货机有几个按钮,GPT 有 1750 亿个"旋钮"(参数)
- 规则来源:售货机的规则是人写的,GPT 的规则是从数据中学来的
- 非线性:GPT 是一个极其复杂的非线性函数——几十层嵌套,每层都有非线性激活
但框架完全一样:输入 → 处理 → 输出。
亲眼看一看
让我们用实验室里的迷你模型 microgpt 来验证"AI 是函数":
azureuser@ai-lab:~$ cd ~/microgpt && python3 -c "
# microgpt 训练后的模型,就是一个函数
# 输入:前几个字母 输出:下一个字母
# 模拟:函数的输入输出
inputs_outputs = [
('Ma', 'r'), # 输入 Ma → 输出 r(Mary)
('Jo', 'h'), # 输入 Jo → 输出 h(John)
('Tr', 'e'), # 输入 Tr → 输出 e(Trey)
]
print('microgpt 就是一个函数:')
print('─' * 35)
for inp, out in inputs_outputs:
print(f' f(\"{inp}\") = \"{out}\"')
print()
print('输入前两个字母,输出最可能的下一个字母')
print('和自动售货机是同一回事——只是规则是学来的')
"
microgpt 就是一个函数:
───────────────────────────────────
f("Ma") = "r"
f("Jo") = "h"
f("Tr") = "e"
输入前两个字母,输出最可能的下一个字母
和自动售货机是同一回事——只是规则是学来的
一句话记住: 不管 AI 看起来多么智能、多么神秘,剥开所有外衣,它就是一个函数——一个有几十亿个旋钮、经过海量数据调校的、巨大的"输入→输出"机器。理解了函数,你就理解了 AI 的骨架。
第七章:为什么函数是第二幕的起点?
函数之所以是第二幕的起点,是因为它引入了数学中最重要的概念之一:
变化。
在第一幕里,方程描述的是固定的关系——x + y = 35 永远成立,不随时间改变。
但函数天然地描述了变化——当 x 变化时,f(x) 跟着变化。
有了函数,新的问题涌出来了:
❶ 变化有多快?
→ 导数(微积分的第一个主角)
❷ 变化会爆炸吗?
→ 指数函数(下一篇)
❸ 变化会循环吗?
→ 三角函数(第八篇)
❹ 变化的总量是多少?
→ 积分(微积分的第二个主角)
这些都是第二幕要回答的问题。
而函数,是它们共同的起点。
《道德经》说: “道生一,一生二,二生三,三生万物。”
在数学的世界里,函数就是那个"一"。从函数出发,长出了微积分、概率论、信号处理、控制理论……长出了整个现代数学和现代科技。
动手实验
实验一:建一台你自己的"函数机器"
# 你来定义函数的规则!
def my_machine(x):
"""你的函数:输入一个数,输出一个数"""
return 3 * x - 2
# 测试你的机器
print("我的函数机器:f(x) = 3x - 2")
print("─" * 30)
for x in range(-3, 6):
y = my_machine(x)
bar = "█" * max(0, y + 12) # 简易图表
print(f" f({x:>2}) = {y:>3} {bar}")
# 输出:
# 我的函数机器:f(x) = 3x - 2
# ──────────────────────────────
# f(-3) = -11 █
# f(-2) = -8 ████
# f(-1) = -5 ███████
# f( 0) = -2 ██████████
# f( 1) = 1 █████████████
# f( 2) = 4 ████████████████
# f( 3) = 7 ███████████████████
# f( 4) = 10 ██████████████████████
# f( 5) = 13 █████████████████████████
实验二:函数的组合——流水线
# 三个简单函数组成一条流水线
def f1(x):
"""第一道工序:乘以 2"""
return x * 2
def f2(x):
"""第二道工序:加 10"""
return x + 10
def f3(x):
"""第三道工序:如果负数就归零(ReLU!)"""
return max(0, x)
# 流水线:f3(f2(f1(x)))
print("三步流水线:乘2 → 加10 → ReLU")
print("─" * 45)
for x in [-8, -5, -3, 0, 2, 5, 10]:
step1 = f1(x)
step2 = f2(step1)
step3 = f3(step2)
print(f" x={x:>3} → ×2={step1:>3} → +10={step2:>3} → ReLU={step3:>3}")
# 输出:
# x= -8 → ×2=-16 → +10= -6 → ReLU= 0
# x= -5 → ×2=-10 → +10= 0 → ReLU= 0
# x= -3 → ×2= -6 → +10= 4 → ReLU= 4
# x= 0 → ×2= 0 → +10= 10 → ReLU= 10
# x= 2 → ×2= 4 → +10= 14 → ReLU= 14
# 这就是一个最简单的"神经网络"!
# 线性变换(×2) + 偏置(+10) + 激活函数(ReLU)
本篇小结
一、函数 = 输入→输出的机器
- 自动售货机、体温计、导航软件——全是函数
- 同样的输入,永远得到同样的输出
二、函数有"脸"
- 直线、抛物线、波浪、S 形、ReLU——不同的函数不同的"性格"
- 看一眼图形就知道它在描述什么变化
三、线性 vs 非线性
- 人类直觉是线性的,但世界是弯的
- 数学帮你看见弯曲
四、函数可以组装
- 函数套函数 = 流水线
- 神经网络 = 几十层函数的流水线
五、GPT 是一个函数
- 输入文字,输出下一个词
- 和自动售货机同一个框架,只是有 1750 亿个旋钮
六、函数引出"变化"
- 当 x 变化时,f(x) 跟着变化
- 变化多快?→ 导数。变化爆炸?→ 指数。变化循环?→ 三角
下一篇预告
函数描述了"输入→输出"的关系。有些函数温和——线性,直线,可预测。
但有一种变化,温和到你注意不到它,然后突然炸开。
把一张纸对折 42 次,厚度能从地球到月球。信吗?
一粒米放在棋盘第一格,每格翻倍,64 格之后有多少米?
答案是:全世界的粮食都不够填。
这就是指数增长——人类大脑天生的盲区。理解它,就理解了为什么 AI 的进步让所有人"措手不及"。
《看见数学》系列 — 从结绳记事到 AI,看见数学之美。
本文首发于「AI 学习笔记」博客:https://Jason-Azure.github.io/ai-blog/
微信公众号:AI-lab学习笔记
系列文章完整列表见 标签:看见数学
