← 返回笔记列表
AI 技术与原理 第 2 / 28 篇

AI 原理学习笔记(二):读懂 AI 所需的最小数学与术语

查看“AI 技术与原理”专题目录(2/28)
本文目录 12 个小节

返回系列导读

学习目标

这一篇只补够后面使用的数学。读完后,你应该能看懂一个简单预测公式,分清数据和参数,并知道向量、矩阵、概率和梯度分别负责什么。

1. 样本、特征与标签

假设有三套房:

房屋面积(平方米)房龄(年)成交价(万元)
A6010180
B805260
C1002350

样本是一次观察,这里一套房是一条样本。特征是预测时可用的输入信息,这里选择面积和房龄。标签是希望模型学会预测的目标,这里是成交价。

通常用 XX 表示所有输入,用 yy 表示目标:

X=[60108051002],y=[180260350]X=\begin{bmatrix}60&10\\80&5\\100&2\end{bmatrix}, \qquad y=\begin{bmatrix}180\\260\\350\end{bmatrix}

XX 有 3 行、2 列,记作 shape [3,2][3,2]。第一维是样本数,第二维是每条样本的特征数。形状告诉我们“多少个、每个多少维”,不告诉我们数值的意义。

同一列应保持同一单位。如果一条面积用平方米,另一条用平方英尺,却不转换,模型面对的就不是同一个特征。

2. 模型、参数和超参数

一个极简房价模型可以写成:

y^=w1x1+w2x2+b\hat y=w_1x_1+w_2x_2+b
  • x1x_1:面积;x2x_2:房龄。这些来自当前房屋。
  • w1,w2w_1,w_2:权重,控制输入影响多大。
  • bb:偏置,用于整体平移预测。
  • y^\hat y:预测值;上面的“小帽子”表示这是估计,不是真实标签。

假设 w1=3,w2=−2,b=20w_1=3,w_2=-2,b=20,面积 80、房龄 5 的预测是 3×80−2×5+20=2503\times80-2\times5+20=250 万元。

参数是训练中被更新的数,例如权重。超参数是训练流程的设置,例如学习率、树的最大深度。它们也可以被搜索,但通常不通过同一次反向传播直接学习。

“模型学会了”在这里很具体:一组数经过调整后,能在新样本上给出有用预测。不能仅凭这个说模型像人一样理解房屋。

3. 标量、向量、矩阵和张量

标量是一个数,例如面积 80。向量是一串有顺序的数,例如一套房的 [80,5][80,5]。矩阵是二维数表,例如三套房的 XX。

张量可以先理解为多维数组。图像常用 [B,C,H,W][B,C,H,W]:

  • BB:batch size,一次处理几张图;
  • CC:通道数,例如 RGB 为 3;
  • H,WH,W:图像高与宽。

如果 shape 为 [8,3,224,224][8,3,224,224],就是 8 张 RGB 图,每张 224×224。不要把通道维和宽度维的位置想当然;不同库可能采用不同排列。

向量也不是“几何箭头”才算向量。模型中的 768 维表示仍然是一串数,只是无法直接画在二维纸上。

4. 点积与矩阵乘法在算什么

两个同长度向量的点积,就是对应位置相乘再相加:

[80,5]⋅[3,−2]=80×3+5×(−2)=230[80,5]\cdot[3,-2]=80\times3+5\times(-2)=230

这正是前面“面积贡献加房龄贡献”的计算。加上偏置 20,得到 250。

矩阵乘法把很多次点积集中计算:

[N,D]×[D,K]⟶[N,K][N,D]\times[D,K]\longrightarrow[N,K]

NN 是样本数,DD 是输入特征数,KK 是输出特征数。中间两个 DD 必须一致。[3,2][3,2] 的输入乘 [2,1][2,1] 的权重,得到 [3,1][3,1],即三套房的三个预测。

初学时每见一个矩阵公式,都先在旁边写 shape。若形状不能对齐,先查数据和公式,不要靠试着转置让程序勉强运行。

5. 概率、条件概率与分布

概率描述在给定条件下对结果的不确定性,用 0 到 1 之间的数表示。二分类模型给“垃圾邮件”0.8,并不保证这封一定是垃圾邮件。

概率分布是所有候选结果的概率安排。若只存在“垃圾、正常”两类,两者概率相加为 1。

P(A∣B)=P(A∩B)P(B)P(A\mid B)=\frac{P(A\cap B)}{P(B)}

这里 P(A∣B)P(A\mid B) 读作“在 B 已发生的条件下,A 的概率”,要求 P(B)>0P(B)>0。

例如 100 封邮件里,20 封含“中奖”,其中 15 封是垃圾邮件。那么在这组样本中,“含中奖的邮件是垃圾”的比例为 15/20=0.7515/20=0.75。分母只看含“中奖”的邮件,不是全部 100 封。

概率校准问的是:系统长期给出 0.8 的那些预测,实际是否约有 80% 成立?能把正确答案排前面,与概率数值可信,是两回事。

6. 为什么要用 Softmax

语言模型往往先输出一组任意实数,叫 logits,它们还不是概率。例如三个候选的分数是 [2,1,0][2,1,0]。

Softmax 把它们转换为概率:

pi=exp⁡(zi)∑jexp⁡(zj)p_i=\frac{\exp(z_i)}{\sum_j\exp(z_j)}

ziz_i 是第 ii 个分数;exp⁡(zi)\exp(z_i) 即 ezie^{z_i},结果为正;分母是所有候选的正数之和,因此概率加起来为 1。

对 [2,1,0][2,1,0],结果约为 [0.665,0.245,0.090][0.665,0.245,0.090]。分数最大的候选概率最高,但另外两个仍可能被采样到。

实践中先减去最大分数,结果不变,却能避免指数过大:

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,平方误差为 (250−260)2=100(250-260)^2=100。平方避免正负误差互相抵消,也会更重地惩罚大误差。

导数描述某个数微小变化时,另一个数大约怎样变化。设:

L(w)=(w−3)2,dLdw=2(w−3)L(w)=(w-3)^2,\qquad \frac{dL}{dw}=2(w-3)

在 w=1w=1 时,导数为 −4-4。负号告诉我们:向增大 ww 的方向走一点,损失会下降。

梯度下降的更新是:

wnew=wold−ηdLdww_{\text{new}}=w_{\text{old}}-\eta \frac{dL}{dw}

η\eta 是学习率。取 η=0.1\eta=0.1,得到 1−0.1×(−4)=1.41-0.1\times(-4)=1.4。损失从 4 降到 (1.4−3)2=2.56(1.4-3)^2=2.56。

有很多参数时,每个参数都有“对它单独变化的敏感程度”,这些偏导数组成梯度。反向传播负责高效求梯度,优化器根据梯度更新参数。二者不是同一件事。

8. 对数、平均值与复杂度

对数可以先理解为“反过来问指数”:log⁡e(e2)=2\log_e(e^2)=2。交叉熵里常见 −log⁡p-\log p;正确答案概率接近 1 时惩罚小,接近 0 时惩罚大。

平均值是总量除以个数。平均延迟低,并不代表每个请求都快;少量特别慢的请求要看分位数。

O(n)O(n) 与 O(n2)O(n^2) 描述输入变大时工作量的增长趋势。nn 翻倍时,线性项约翻倍,平方项约四倍;这不是精确秒数,也不自动包含硬件和其他操作的代价。

复习卡片

  • 数据:样本、特征、标签。
  • 可学习的数:参数;训练设置:超参数。
  • shape:数组各个维度的大小。
  • 损失:错多少;梯度:往哪改;优化器:怎样改。
  • 概率:对候选结果的不确定性描述,不是正确保证。

自测与参考答案

1. 100 条样本,每条 4 个特征,输入 shape 是什么?

参考答案按样本在前的约定是 [100,4]。若输出 3 个分数,权重可以是 [4,3],结果为 [100,3]。

2. 导数为负,为什么减去梯度反而让参数变大?

参考答案减去一个负数相当于加上正数。这正沿着局部让损失变小的方向移动,但学习率过大仍可能跨过低点。

3. Softmax 的 0.9 能直接当成“事实正确率 90%”吗?

参考答案不能。它首先是模型在当前候选集合上的分布;要把分数当作实际正确概率,需要针对具体任务检查校准。

原文定位与继续阅读

依据:原资料 2.2—2.3、3.3—3.5、4.2—4.3。进一步阅读:神经网络的矩阵计算与自动求导。

继续学习本专题