基础连载 01 / 约 35 分钟
把这句话变成向量
“北京是中国的……”怎样变成数字?
未开始这和大模型有什么关系?
本节直接接着导览中的“北京是中国的……”。点选同一句话里的片段,用编号在向量表中找到对应的一行,再亲手改变它,观察后续计算。大模型的文本输入也要经历编号与向量表示这一步。
这个实验能解释到哪里:教学分词、编号、二维向量和权重是人为设定的,便于逐项手算;它们不是真实大模型内部值。两个维度不预先代表“城市”“国家”等含义。
动手时带着这个问题:点“北京”看到 [2,1],点“中国”看到 [4,2]。再改一个数,看看向量表和乘加结果怎样一起变化。
还没建立全貌?先看一次回答的完整过程 ↗本期学习约定 · 内容更新 2026-09-21
学完这一期,你应该能做到
- 区分文字片段、查表编号与向量
- 沿同一句话完成查表与矩阵乘加,说明计算结果尚不是生成的词
先备好:读过“先看懂大模型”导览;本节网页实验无需 Python 基础
LAB / VECTORS先接一句话,再看模型从哪里开始
试一试先选一个你认为自然的续写;接着每一步只观察一件事。
先从你已经会的事情开始
这句话,你会接哪个词?
北京是中国的____
点一个选项,看看这和大模型有什么关系。
你可以凭知识续写。语言模型则要先把输入变成数字,经过训练好的网络计算,再选出接着输出的文字。这一节先看清“文字变成数字”的入口。
这是两个候选词的阅读练习;反馈由课程预设,不是模型现场回答。
先把文字交给计算程序
“北京”进去了,什么被送去计算?
模型内部要做大量乘法和加法。它先把文字拆成片段,再为每个片段取出一排数字。点下面的词,观察亮起的那一行。
编号只负责找到一行,就像书的页码。真正送去计算的是这一行里的数字。这一排数字有个名字:向量。
| 片段 | 编号 | 第一个数 | 第二个数 |
|---|---|---|---|
| 北京 | 0 | 2 | 1 |
| 是 | 1 | 0 | 1 |
| 中国 | 2 | 4 | 2 |
| 的 | 3 | 1 | 0 |
选中“北京” → 编号 0 → 取第 0 行 → [2, 1]。
为什么不直接拿编号算?编号的大小只是排列顺序;向量里的数可以在训练中调整,让后面的网络更容易完成预测。
这些数从哪来?2 是“北京”的什么意思?
本页的 [2, 1] 是为了方便观察而编的,没有“2 代表城市”这样的含义。真实模型里的这些数通常先被初始化,再随训练调整。一个概念也不必只对应某一个数。
这里按“北京 / 是 / 中国 / 的”拆分,只是教学示意;真实分词方式和向量长度由模型决定。
把入口放回整条流程里
拿到数字,为什么还不能直接说“首都”?
- 输入北京 / 是 / 中国 / 的
我们想让模型接着写。
- 你刚动手做的每个片段 → 一排数字
查表只是把输入准备好。
- 后续网络计算把已有文字联系起来
结合位置和上下文,经过多层计算,再给候选片段打分。
- 输出按生成规则选下一片段
例如续写“首都”,再继续生成。本图是流程说明,没有运行这些后续步骤。
“北京”单独出现,和“北京是中国的……”提供的信息不同。后续网络要处理这些联系。训练会调整数字表示和网络里的参数,让预测更符合训练目标;随手编一组数,不会自动获得这种能力。
进一步拆开计算:这些数字怎样被变换?(选做)
接下来只放大网络里的一种基础操作:按一组权重,把原来的数字组合成新的数字。拖动输入,看看输出怎么变。这里用的是人为设定的数,还没有训练,也不包含上下文计算。
为什么还要算第二行?[1, −1] 从哪来?
因为这个实验想得到两个输出数,所以需要两条计算规则。上面算完只得到第一个数;第二条规则负责算出第二个数。把输入记作 [a, b],初始设定下,两条规则分别是:
- 第 1 行 [3, 5]:算 3 × a + 5 × b,得到新向量的第 1 维。
- 第 2 行 [1, −1]:算 1 × a − 1 × b,也就是 a − b,得到新向量的第 2 维。
两条规则都读取原来的 [a, b]。例如初始的“北京”是 [2, 1]:第一条算出 11,第二条算出 1。第二条并不拿刚算出的 11 接着算。你修改输入后,两条规则的结果都会重新计算。
当前两行权重各产生一个数,合起来是新向量:[11, 1]。
[1, −1] 是本课为了方便看清运算而选的数,没有必须用它的规定。“固定”只表示这个实验暂时不提供第二行的调节按钮;真实大模型中,可训练线性层的这些权重通常会在训练时一起调整。
专业一点说:每一行权重计算一个输出维度,所有行一起组成矩阵变换。输出几维由模型结构决定,不一定与输入维度相同。这里演示的只是大模型里的一种基础运算,还没有训练、Attention,也没有预测“首都”。
同一个原理 · 两种讲法
先理解,再往深处走。
先明确模型要做什么
给它“北京是中国的……”,我们希望它接着写。常见生成式语言模型会根据已有文字预测下一个片段,并不断重复。不是先找一个代表“首都”的神奇数字。
文字为什么要变成数字
网络里的运算需要数字输入。分词器先给片段编号,编号用于查表;表里的一排数字才交给网络计算。这一排数字叫向量。你点选不同片段时,亮起的行就是取出的输入。
数字凭什么有用
本页的数是人为设定的,只用于看清流程。真实模型的数字表示和网络参数通常在训练中不断调整,逐渐帮助模型完成预测。单个数并没有我们事先指定的“地理含义”。
从输入走到答案,还差什么
查到“北京”的向量,还要结合位置和“是中国的”等上下文,经过多层网络计算,最后给候选片段打分并选择输出。因此,一次点积的结果只是中间值,不能直接读成“首都”。
继续同一句话,而不是换例子
教学分词为 [北京, 是, 中国, 的],编号 [0,1,2,3]。编号只是向量表的行索引;数值大小不表示词义相近程度。真实分词方式随模型而异,这里并未运行真实分词器。
从编号查到向量
教学表 E=[[2,1],[0,1],[4,2],[1,0]],四个片段对应四行,每行两个数,形状为 (4,2)。点选北京取出 [2,1],点选中国取出 [4,2]。若只取北京、是、中国三行,子矩阵形状是 (3,2)。
让向量进入一次计算
取北京的列向量 x=[2,1]ᵀ,与 W=[[3,5],[1,−1]] 相乘。第 1 行点积为 11,第 2 行点积为 1,得到 z=[11,1]ᵀ。W 的列数必须与输入维数一致;少一个权重时不能把剩余项静默忽略。
回到大模型的完整流程
此处展示 Embedding 查表与线性变换。真实 Transformer 后续还包括位置处理、上下文计算、非线性变换等。这个二维结果没有被映射到词表,也不是概率;不能把数字 11 解读成首都。
为什么还要算第二行?
第一次接触时,可以只做查表,不必急着算矩阵。展开选做运算后,再看这个问题:我们故意把 W 设计成两行,所以想得到两个输出数。每一行是一套不同的配方,都需要读取同一个完整输入。第二行 [1, −1] 表示“第一个输入乘 1,再减去第二个输入”。
对北京的 [2, 1],第一行得到 2×3 + 1×5 = 11,第二行得到 2×1 − 1×1 = 1,所以输出是 [11, 1]。这行权重是教学选择,不是模型必须采用的规律;真实网络中的权重通常由训练调整。本实验把第二行固定,是为了让你一次只观察少量变化。
在线实验的数学设定
教学词表依次为 [北京, 是, 中国, 的],ID 为 [0,1,2,3],Embedding 表 E=[[2,1],[0,1],[4,2],[1,0]],形状为 (4,2)。对 ID i 查表得到列向量 x=E[i]ᵀ。示例权重矩阵 W=[[3,5],[1,−1]],计算 z=Wx;北京的输出是 [11,1],中国的输出是 [22,2]。界面可修改选中行 E[i] 的两个元素及 W 第一行;第二行固定。编号与数字均为教学设定,不是模型提取结果。这里不执行上下文融合、Attention、训练或输出解码。
IDs: (4,) → E[IDs]: (4, 2)
x = E[0]ᵀ = [2, 1]ᵀ
W = [[3, 5], [1, −1]] → z = Wx = [11, 1]ᵀ
容易混淆的地方
Token 编号是地址;向量是查到的数据;变换结果是中间表示。三者不能混用。第 1 维、第 2 维也不天然对应人能命名的语义。
Python / 只用标准库 / 无需 GPU
在自己的电脑上复现
运行 vectors:按北京、是、中国、的顺序,得到 [[11,1],[5,−1],[22,2],[3,1]]。把北京的向量第 1 维从 2 改为 3,输出应变成 [14,2];其余三个片段的输出保持不变。解释为何 14 仍不是一个词。
下载实验代码 ↓保存为 ai_lab.py,在 Python 3.10 或以上运行。本单元使用人造数据,不调用外部服务。本节 Python 与网页使用同一句话、同一向量表和权重,可逐项核对。
python ai_lab.py --lesson vectors程序包含结果断言;如果不满足预期会报错。第 7 节会在运行目录生成 report.json。运行后,回到笔记写下你的观察与改动。
继续读原始资料
本站提供原创导读;以下链接前往资料原站。仅本成人学习栏目提供这些精选来源。
Python 官方教程 · 数据结构 ↗中文 · 先读列表与列表推导式核对日期 2026-09-21NumPy · 数组基础 ↗英文 · 阅读 shape、axis 与数组运算核对日期 2026-09-21本期过关任务 / 动手与解释
做出来,再用自己的话讲一遍
- 不看提示,找到“中国”的向量,并说明编号和向量的区别。
- 把“北京”的第一个数从 2 改为 3,说明输出为何改变;再用重置恢复。
- 用自己的话说清:查到向量后,还需要哪些步骤才能生成“首都”?
在下方笔记记录“我改了什么、结果是什么、为什么”。保存笔记、自己确认做过实验和通过知识小测是不同记录;本页不会自动认定你已独立掌握。
写下我的实验观察 ↓只对你可见
我的学习记录
登录后可保存笔记、打卡和学习进度。
删除本节的私密记录
删除本节进度、笔记、关联与打卡;其他课程和原作品保留。
验证方式 / 本节三题知识检验 v1
合上导读,检验一下
全部答对后记录“通过验证”。这表示通过本节知识小测,不等同于独立完成代码、人工评阅或能力认证。
下一期,我们接着问
输入已经变成数字,哪些可调整的数决定它接下来怎样变化?下一期从两个参数 w、b 开始。