1.向量——一切都变成数字列表
AI把文字、照片、喜好都转换成数字列表来处理,这种数字列表叫作向量。如果用(动作、爱情、喜剧)三类电影的喜爱程度来表示观影喜好,小李可以写成 [5, 1, 3],小王是 [4, 2, 3],小张是 [1, 5, 2]。语言模型会把一个词或词的片段(词元)转换成由几百到几千个数字组成的向量,原理和这个只有三个数字的例子一样。
有了两个向量,就能计算“有多相似”。第6讲中两点之间的距离是一种方法,而AI中更常用的方法是内积和余弦相似度。
2.内积与余弦相似度
内积是把两个向量相同位置上的数相乘,再全部相加得到的值。两个人越是一起喜欢同样的项目,大数和大数相乘,内积就越大。不过,数字整体偏大的向量,内积必然也大,所以要除以向量的大小(长度,即模长),只比较方向,这就是余弦相似度。
余弦相似度的取值在 −1 到 1 之间。接近 1 表示方向相同(喜好相似),0 表示方向互不相关(垂直),−1 表示方向正好相反。搜索和推荐中的“找出意思相近的文档”,大多就是计算这个值,再按从大到小挑选。
- 第1步:内积:小李·小王 = 5×4 + 1×2 + 3×3 = 20 + 2 + 9 = 31。小李·小张 = 5×1 + 1×5 + 3×2 = 5 + 5 + 6 = 16。
- 第2步:模长:|小李| = √(25 + 1 + 9) = √35 ≈ 5.92,|小王| = √(16 + 4 + 9) = √29 ≈ 5.39,|小张| = √(1 + 25 + 4) = √30 ≈ 5.48。
- 第3步:小李与小王的相似度 = 31 ÷ √(35 × 29) = 31 ÷ √1015 ≈ 31 ÷ 31.86 ≈ 0.97。
- 第4步:小李与小张的相似度 = 16 ÷ √(35 × 30) = 16 ÷ √1050 ≈ 16 ÷ 32.40 ≈ 0.49。
- 验算:两个相似度都在 −1 和 1 之间。小李和小王都最喜欢动作片,而小张最喜欢爱情片,所以结果也符合直觉。
3.矩阵乘法——一次完成多个加权求和
神经网络中一个神经元做的事情很简单:把每个输入乘以权重后相加(加权求和),加上偏置,再按规定的规则把结果变换一次。最常见的规则之一是:负数变成 0,正数保持不变。如果输入是 [2, 3],权重是 [0.5, −1],偏置是 1,那么 0.5×2 + (−1)×3 + 1 = −1,是负数,所以输出 0。
神经元有多个时,就要做多次加权求和。把它们一次写出来的方法就是矩阵。矩阵的每一行是一个神经元的权重,矩阵与向量相乘就是“每一行分别与输入向量做内积”。巨大AI模型的计算大部分都是这种矩阵乘法,所以能快速做矩阵乘法的专用芯片变得十分重要。
- 第1步:第一个神经元 = 第一行与输入的内积:1×4 + 2×1 = 4 + 2 = 6。
- 第2步:第二个神经元 = 第二行与输入的内积:3×4 + (−1)×1 = 12 − 1 = 11。
- 第3步:结果向量是 [6, 11]。
- 验算:按矩阵的列重新算一遍。输入 4 × 第一列 [1, 3] = [4, 12],输入 1 × 第二列 [2, −1] = [2, −1],相加得 [6, 11],结果相同。
4.损失函数——用数字表示错了多少
模型要学习,首先得用一个数字衡量“错了多少”。给出这个数字的函数叫作损失函数。预测数值的模型常用均方误差(MSE)。它是把预测值与正确答案之差(误差)平方后取平均得到的值,形式和第8讲的方差几乎一样。
平方的原因有两个:一是不论误差是正是负,都算作“错”;二是让错得多的受到更重的惩罚。误差为 2 时是 4,误差为 4 时就是 16。
- 第1步:误差:3 − 2 = 1,5 − 5 = 0,8 − 10 = −2。
- 第2步:平方:1, 0, 4。和为 5。
- 第3步:平均:5 ÷ 3 ≈ 1.67。
- 验算:误差最大的第三个值(−2)在总和 5 中占了 4。这与“错得多的值主导损失”这一平方的性质相符。
5.斜率与梯度下降
要减小损失,权重该往哪个方向修改?想象一个人在大雾笼罩的山上往山谷走。远处看不见,但能感觉到脚下的坡度。朝下坡方向迈一步,再感受坡度,再迈一步。第4讲中“某一点处的斜率”就是这脚下的坡度,这样一步步往下走的方法就是梯度下降。
看一个最简单的例子:损失为 L(w) = (w − 3)²。w = 3 时损失为 0,最小。这个函数的斜率是 2(w − 3)。w 小于 3 时斜率为负,应该把 w 调大;大于 3 时斜率为正,应该调小。所以按“新 w = w − 学习率 × 斜率”来修正。学习率就是一步的大小。
真实的模型可能有几十亿个权重,但做的事情是一样的:对每个权重计算“把它稍微改一点,损失会变化多少”(斜率,也叫梯度),然后朝着损失减小的方向一点点修正,无数次地重复。
- 第1步:w = 0:斜率 2(0 − 3) = −6,新 w = 0 − 0.25 × (−6) = 1.5。损失 9 → (1.5 − 3)² = 2.25。
- 第2步:w = 1.5:斜率 2(1.5 − 3) = −3,新 w = 1.5 − 0.25 × (−3) = 2.25。损失 (2.25 − 3)² = 0.5625。
- 第3步:w = 2.25:斜率 2(2.25 − 3) = −1.5,新 w = 2.25 − 0.25 × (−1.5) = 2.625。损失 (2.625 − 3)² = 0.140625。
- 验算:离目标 3 的剩余距离依次为 3 → 1.5 → 0.75 → 0.375,每次减半。损失每次变为 1/4,按 9 → 2.25 → 0.5625 → 0.140625 减小。
- 第1步:斜率 −6,新 w = 0 − 1.1 × (−6) = 6.6。
- 第2步:与目标 3 的距离:从最初的 3 变成 |6.6 − 3| = 3.6,反而更远了。损失也从 9 增大到 12.96。
- 第3步:下一步:斜率 2(6.6 − 3) = 7.2,新 w = 6.6 − 7.92 = −1.32,距离 4.32。来回越过山谷,离得越来越远。
- 验算:3.6² = 12.96,距离每次变为 1.2 倍(3 → 3.6 → 4.32),所以会发散。
📌 要点总结
- AI把词语、照片、喜好转换成数字列表(向量)来处理
- 内积是对应位置相乘再相加的值,余弦相似度是除以模长后方向上的相似程度
- 矩阵 × 向量 = 每一行做内积 = 一次算出多个神经元的加权和
- 损失函数用一个数字衡量错误程度——均方误差是误差²的平均数
- 梯度下降:新权重 = 权重 − 学习率 × 斜率,朝损失减小的方向反复修正
- 学习率太大会发散,太小会很慢
🤖 可以这样问 AI
复制后把 [ ] 部分换成你的情况。不要直接相信回答,请与正文对照核实。
想用小数字亲自验证AI概念时
请用三个各含 3 个数字的向量给我讲解余弦相似度。分步计算内积、模长和相似度,但在给出最终答案之前,先只给我看中间结果,让我自己算一算。
想亲手跟着算一遍梯度下降时
我想用损失函数 L(w) = (w − 3)² 练习梯度下降。请改变初始值和学习率,分别用表格展示三种情况(顺利收敛、太慢、发散)各走五步的过程。每张表包含 w、斜率、新 w、损失这几列,前两行我会自己算来核对。
核实AI给出的数学解释时
请给刚才解释中用到的每个公式都代入一个很小的数字例子,亲手算给我看。如果解释和计算结果有不一致的地方,请标出来。
- 高中数学教材的一般内容(向量、矩阵、导数基础)
- 高中“人工智能数学”类课程的一般内容
达成全部学习目标后,请点击完成。
此浏览器无法保存记录,仅在当前页面显示。