学习目标
这一篇只补够后面使用的数学。读完后,你应该能看懂一个简单预测公式,分清数据和参数,并知道向量、矩阵、概率和梯度分别负责什么。
1. 样本、特征与标签
假设有三套房:
| 房屋 | 面积(平方米) | 房龄(年) | 成交价(万元) |
|---|---|---|---|
| A | 60 | 10 | 180 |
| B | 80 | 5 | 260 |
| C | 100 | 2 | 350 |
样本是一次观察,这里一套房是一条样本。特征是预测时可用的输入信息,这里选择面积和房龄。标签是希望模型学会预测的目标,这里是成交价。
通常用 表示所有输入,用 表示目标:
有 3 行、2 列,记作 shape 。第一维是样本数,第二维是每条样本的特征数。形状告诉我们“多少个、每个多少维”,不告诉我们数值的意义。
同一列应保持同一单位。如果一条面积用平方米,另一条用平方英尺,却不转换,模型面对的就不是同一个特征。
2. 模型、参数和超参数
一个极简房价模型可以写成:
- :面积;:房龄。这些来自当前房屋。
- :权重,控制输入影响多大。
- :偏置,用于整体平移预测。
- :预测值;上面的“小帽子”表示这是估计,不是真实标签。
假设 ,面积 80、房龄 5 的预测是 万元。
参数是训练中被更新的数,例如权重。超参数是训练流程的设置,例如学习率、树的最大深度。它们也可以被搜索,但通常不通过同一次反向传播直接学习。
“模型学会了”在这里很具体:一组数经过调整后,能在新样本上给出有用预测。不能仅凭这个说模型像人一样理解房屋。
3. 标量、向量、矩阵和张量
标量是一个数,例如面积 80。向量是一串有顺序的数,例如一套房的 。矩阵是二维数表,例如三套房的 。
张量可以先理解为多维数组。图像常用 :
- :batch size,一次处理几张图;
- :通道数,例如 RGB 为 3;
- :图像高与宽。
如果 shape 为 ,就是 8 张 RGB 图,每张 224×224。不要把通道维和宽度维的位置想当然;不同库可能采用不同排列。
向量也不是“几何箭头”才算向量。模型中的 768 维表示仍然是一串数,只是无法直接画在二维纸上。
4. 点积与矩阵乘法在算什么
两个同长度向量的点积,就是对应位置相乘再相加:
这正是前面“面积贡献加房龄贡献”的计算。加上偏置 20,得到 250。
矩阵乘法把很多次点积集中计算:
是样本数, 是输入特征数, 是输出特征数。中间两个 必须一致。 的输入乘 的权重,得到 ,即三套房的三个预测。
初学时每见一个矩阵公式,都先在旁边写 shape。若形状不能对齐,先查数据和公式,不要靠试着转置让程序勉强运行。
5. 概率、条件概率与分布
概率描述在给定条件下对结果的不确定性,用 0 到 1 之间的数表示。二分类模型给“垃圾邮件”0.8,并不保证这封一定是垃圾邮件。
概率分布是所有候选结果的概率安排。若只存在“垃圾、正常”两类,两者概率相加为 1。
这里 读作“在 B 已发生的条件下,A 的概率”,要求 。
例如 100 封邮件里,20 封含“中奖”,其中 15 封是垃圾邮件。那么在这组样本中,“含中奖的邮件是垃圾”的比例为 。分母只看含“中奖”的邮件,不是全部 100 封。
概率校准问的是:系统长期给出 0.8 的那些预测,实际是否约有 80% 成立?能把正确答案排前面,与概率数值可信,是两回事。
6. 为什么要用 Softmax
语言模型往往先输出一组任意实数,叫 logits,它们还不是概率。例如三个候选的分数是 。
Softmax 把它们转换为概率:
是第 个分数; 即 ,结果为正;分母是所有候选的正数之和,因此概率加起来为 1。
对 ,结果约为 。分数最大的候选概率最高,但另外两个仍可能被采样到。
实践中先减去最大分数,结果不变,却能避免指数过大:
import math
scores = [2.0, 1.0, 0.0]
largest = max(scores)
weights = [math.exp(s - largest) for s in scores]
total = sum(weights)
probs = [w / total for w in weights]
print([round(p, 3) for p in probs])
# [0.665, 0.245, 0.09]
这里的列表推导式可以读成“对列表里的每一个数,做同一种计算”。除 math 外不需要安装额外包。
7. 损失、导数与梯度
损失函数把预测错误变成一个数。假设真实房价 260、预测 250,平方误差为 。平方避免正负误差互相抵消,也会更重地惩罚大误差。
导数描述某个数微小变化时,另一个数大约怎样变化。设:
在 时,导数为 。负号告诉我们:向增大 的方向走一点,损失会下降。
梯度下降的更新是:
是学习率。取 ,得到 。损失从 4 降到 。
有很多参数时,每个参数都有“对它单独变化的敏感程度”,这些偏导数组成梯度。反向传播负责高效求梯度,优化器根据梯度更新参数。二者不是同一件事。
8. 对数、平均值与复杂度
对数可以先理解为“反过来问指数”:。交叉熵里常见 ;正确答案概率接近 1 时惩罚小,接近 0 时惩罚大。
平均值是总量除以个数。平均延迟低,并不代表每个请求都快;少量特别慢的请求要看分位数。
与 描述输入变大时工作量的增长趋势。 翻倍时,线性项约翻倍,平方项约四倍;这不是精确秒数,也不自动包含硬件和其他操作的代价。
复习卡片
- 数据:样本、特征、标签。
- 可学习的数:参数;训练设置:超参数。
- shape:数组各个维度的大小。
- 损失:错多少;梯度:往哪改;优化器:怎样改。
- 概率:对候选结果的不确定性描述,不是正确保证。
自测与参考答案
1. 100 条样本,每条 4 个特征,输入 shape 是什么?
参考答案
按样本在前的约定是 [100,4]。若输出 3 个分数,权重可以是 [4,3],结果为 [100,3]。2. 导数为负,为什么减去梯度反而让参数变大?
参考答案
减去一个负数相当于加上正数。这正沿着局部让损失变小的方向移动,但学习率过大仍可能跨过低点。3. Softmax 的 0.9 能直接当成“事实正确率 90%”吗?