第 25 章练习与答案

🌈 关于《AI 零基础 36 讲》课后训练
📚 与正式讲解配套学习
本篇是《AI 零基础 36 讲》的配套课后训练,与对应章节的正式讲解一起使用。整个系列面向初学者,从日常 AI
使用逐步进入编程、模型训练和大模型应用开发。
✍️ 先独立作答,再核对答案
训练围绕本章知识安排概念判断、结果分析或动手任务,并提供参考答案与解释。建议先读完对应的正式文章,再独立作答;遇到困难时回看相关例子,最后核对答案。
💻 代码题请亲手运行
观察程序输出,确认自己能解释结果、发现错误并完成修复。做完一道题,也要弄清答案为什么成立。
题目
- "我用电脑学习Python"按字符和本章词表各有几个 Token,能否用这个数估计任意模型的 Token 数。
- BPE 首轮
l与o为什么共出现 8 次,lower和lowest最终怎样切分。 - "电脑"和"计算机"编号不同,为什么仍可有相同向量。编号相差 1 是否代表语义接近。
- 五个 Token 中三个向量为
[1,0,0,0],另两个为零,平均后是什么。改成十倍长的同方向向量会怎样影响余弦。 - 计算
[1,0]和[1,2]的余弦。为什么第二组购物句约为这个值。 - "猫在桌上"与"猫不在桌上"主题余弦为 1,是否说明事实一致。至少指出本章人工表的两个局限。
参考答案
1. 切分规则
字符为 12 个,本章词表为 5 个。规则和词表不同,Token 数也不同。应使用目标模型配套分词器核对。
2. 加权频次
三个词 low、lower、lowest 含相邻 l 和 o,频次和为 5+2+1。六轮合并后,lower 为 low/er,lowest 为 low/es/t。本章并列规则固定为字典序,其他并列处理可能产生不同合并顺序。
3. 查表
编号是表的行号,行中数值可以相同。编号自身没有连续语义距离。若重新编号同时重排表,表示可以保持不变。
4. 均值和方向
平均后为 [0.6,0,0,0]。整体乘以正数仅改变长度,余弦方向不变。
python
import numpy as np
from examples.text_core import cosine
value = np.array([.6, 0, 0, 0])
print(cosine(value, value * 10))
结果为 1.0。
5. 点积与长度
点积为 1,长度分别为 1 和根号 5,因此余弦为 1/sqrt(5),约 0.447214。购物句含一个电脑方向和两个购物方向,均值的方向相当于 [1,2],与只含电脑方向的句子比较得到这个值。
python
from examples.text_core import cosine
print(f"{cosine([1, 0], [1, 2]):.6f}")
6. 分数边界
不说明事实一致。
"不"被设为零,取平均又丢掉词序。猫和桌子也被设成相同方向,主题表示很粗。全部向量为人工指定,不能把近义句高分当成模型学习能力。实际语义模型同样需要结合任务评估,不能只用相似度证明真假。