第 2 章 人工智能数学基础
这一章要回答的是:一个人工智能问题,怎么被写成数学题。

知道更多本章分五节
先把现实问题翻译成数学语言,再看回归和分类这两类最基本的题目怎么建模,然后学怎么把参数解出来,最后处理一个绕不开的矛盾:模型在做过的题上很准,换一批题却不准。
知道更多会用到什么
只用到高等数学、线性代数和概率统计里最基本的部分。凡是出现公式的地方,旁边都会用大白话再说一遍它在算什么。
想一想
你上过的数学课里,哪一门当时最不知道能用来干什么?
这一章要回答的是:一个人工智能问题,怎么被写成数学题。

先把现实问题翻译成数学语言,再看回归和分类这两类最基本的题目怎么建模,然后学怎么把参数解出来,最后处理一个绕不开的矛盾:模型在做过的题上很准,换一批题却不准。
只用到高等数学、线性代数和概率统计里最基本的部分。凡是出现公式的地方,旁边都会用大白话再说一遍它在算什么。
你上过的数学课里,哪一门当时最不知道能用来干什么?
从数学的角度看,人工智能就做三件事:描述问题、构建目标、求解参数。

你觉得让机器学会一件事,和让一个人学会一件事,最大的不同在哪?
形式化描述、建模与损失函数、参数求解、泛化与正则化。

先用统一的数学语言把问题写下来,再把要优化的东西写成一个可计算的函数,接着用算法把参数算出来,最后处理拟合能力与泛化能力之间的平衡。前一步做不好,后一步就无从下手。
这四步和解应用题一样。先读题、把已知和未知写成符号,再列出方程,然后解方程,最后检查这个答案换个条件还成不成立。人工智能的区别只在于方程里的未知数有几百万个,而且没法手算。
解一道应用题,你觉得最难的是列方程还是解方程?
计算机从"照着规则做"变成"从数据里学",这是范式的改变。

你用过的软件里,哪些是按固定规则运行的,哪些像是自己学出来的?
规则由谁来写,这是两种范式最根本的分界。

看知识来源这一行:传统范式的知识是人预先编码进去的,现代范式的知识是从数据里自动发现的。再看系统能力这一行:传统范式的能力固定不变,现代范式可以通过训练不断调整。其他几行都是这两条的推论。
传统范式像一本菜谱,写得再细,遇到菜谱上没有的食材就抓瞎。现代范式像一个吃过上万道菜的厨师,说不清具体规则,但换一样食材他也能做出个大概。
菜谱的好处是每一步都能追问为什么,厨师的好处是能应付没见过的情况。这个取舍第 1 章讲符号主义与连接主义时已经出现过一次。
看表里适用场景那一行。问题边界清晰、规则明确、环境可控,用传统范式更省事也更可靠。输入复杂多样、规则难以穷举、环境存在不确定性,才轮到现代范式上场。
红绿灯的控制系统,你觉得该用哪一种?
先定统一的语言,再定三个要素,最后把它们串成一个闭环。

如果要把一张照片交给计算机处理,你觉得它在计算机里应该长什么样?
不管是文字、图片还是声音,进了计算机都变成同一种东西:张量。

页面上那行 t = φ(o) 读作:任意一个现实对象 o,都存在一种映射 φ,把它变成一个张量 t。右边那串上标 n₁×n₂×⋯×nk 表示这个张量有 k 个轴,每个轴上有多少个数。
关键只有一句:把现实对象变成可以计算的数字盒子。
一个数是零阶,比如今天的气温。一排数是一阶,比如一周七天的气温。一张表是二阶,比如一个班每人每科的成绩。一摞表是三阶,比如一张彩色照片,高乘宽乘红绿蓝三个通道。
图上三个例子正好对应:左边结构化样本是二阶,中间图像是三阶,右边序列是一阶。
统一之后,处理文字和处理图片可以用同一套加减乘除。不必为每种数据各写一套方法,这是整个领域能做大的前提。
一段三分钟的录音,你觉得应该表示成几阶张量?
数据提供基础,模型承担学习,目标指引优化。

数据描述了对象服从的分布特性,也就是这类东西通常长什么样。模型规定了从数据中提取规律并形成预测的方式。目标为模型性能的评估与参数优化提供了明确的数学准则。
相当于备考。数据是你做过的题,模型是你脑子里的解题套路,目标是分数这个衡量标准。题目太少或太偏,套路学不出来。套路太简单,题目变一变就不会。没有分数这个标准,你根本不知道该往哪个方向改进。
第 1 章说的算法、算力、数据,讲的是一个领域能不能发展起来的外部条件。这里说的数据、模型、目标,讲的是一次具体的学习过程由哪几部分构成。层次不同,不要混。
三者里少了哪一个,学习过程最先卡住?
手上的这批样本,是对真实世界的一次有限的抽样。

好的数据集要满足两条:样本容量充分,样本分布全面均衡。反过来,样本量少或者样本类别分布不均,学出来的东西就不可靠。右边两张散点图画的正是这两种情况的差别。
要摸清一个学校学生的身高分布,随便量二十个人不够,这是样本量少。只量篮球队的人也不行,这是分布不均。两种情况下你都会得出错误的结论,而且自己还察觉不到。
真实分布是全世界所有猫、鹿、狗长什么样,这个东西谁也拿不到。数据集只是从中抽出来的有限一批,模型是在这批样本上学的。数据集偏了,模型就跟着偏。
用你们班的身高去估计全校的平均身高,会偏高还是偏低?
模型是一个可学习的映射,把输入变成输出。

页面上的 ŷ = f(x; θ) 读作:把输入 x 送进函数 f,得到预测 ŷ。分号后面的 θ 是参数,它不是输入,而是模型内部那一堆需要被学出来的数字。
训练就是在调 θ,使用时 θ 固定不动,只换 x。
把 f 想成一台带旋钮的机器。x 是投进去的原料,ŷ 是出来的产品,θ 是机器上那几千万个旋钮。训练就是反复投料、看产品、拧旋钮。用的时候旋钮锁死,只管投料。
页面上说经验以参数的形式固化在模型 f 中。也就是说,模型见过的所有数据,最后都变成了那堆参数的具体数值。这就是第 1 章讲的分布式表示。
图上左边输入是一张狗的照片,右边预测是“狗”。你觉得机器是记住了这张照片,还是记住了别的什么?
真正想优化的那个东西算不出来,只能用手上的数据去近似它。

上面那行 R(θ) 前面是 E,表示对真实分布求期望。页面上用红字标着未知、不可计算,因为真实分布拿不到。
下面那行 R̂(θ) 前面是 (1/N)Σ,表示把手上 N 个样本的损失加起来除以 N。页面上标着可计算。最后一行说,样本量足够大时两者近似相等。
你想知道自己的真实水平,也就是“考遍天下所有题目的平均分”。这个分数不存在,因为题目出不完。能算的只有“这次月考的分数”。做的题越多、越有代表性,月考分数就越接近真实水平。
整个训练过程,其实是在用月考成绩去逼近一个永远看不到的真实水平。
一次月考考砸了,能说明真实水平差吗?
一个数据驱动的闭环:造数据、反复训练、拿去预测。

左边数据构建与划分,把数据源切成训练集和测试集。中间循环训练,模型构建、目标定义、优化求解三步反复迭代。右边推理测试,用训练好的模型去预测没见过的数据。
注意训练集和测试集是分开的,这是整个框架里最容易被忽略也最要紧的一条。
训练集是练习册,测试集是月考卷。练习册的答案你可以随便看,月考卷不行。如果把月考题混进练习册,考出来的分数就没有任何意义了。
图中间那个圈会转很多次。每转一圈,参数就往更好的方向挪一点。不是一次算出答案,而是一步一步逼近。第三节讲的梯度下降,就是这个圈里“优化求解”那一格的具体做法。
如果把测试集也拿去训练,模型的测试分数会变高还是变低?
统一语言、三个要素、一个闭环。

张量是统一语言,任意模态的对象都能表示成同一套形式。数据、模型、目标是三个核心要素。整个学习过程是一个数据驱动的闭环,从数据构建与划分到循环训练再到推理测试。
用张量表示一段文字,和用张量表示一张图片,最大的差别在哪?