词元嵌入(高中生版)
#2025/12/28 #ai
如何把“文字”变成计算机能算得懂的“超级数字档案”。
我们可以分三步来理解:
目录
第一步:给单词建立“人物属性面板” (静态嵌入)
- 每个词(Token)都有了一个身份证号(ID,比如
101代表The)。 - 但光有 ID 是不够的。这就好比在玩 RPG 游戏,如果只知道角色的名字叫“
亚瑟”,你是不知道他强不强的。
你需要一张“属性面板”,上面写着:力量 90,智力 50,敏捷 70……
“词元嵌入”(Embedding)就是给每个词建立这样一张由一堆数字组成的“属性面板”。
- 怎么做? 模型里存了一张巨大的表(就像字典),每个词对应一行数字(比如
[0.1, -0.5, 0.8...])。 - 有什么用? 这些数字代表了词的含义。
- 比如,“猫”和“狗”的属性面板上的数字会很像(都是宠物),
- 但“猫”和“汽车”的数字差别就会很大。
- 模型一开始是
随机填这些数字的- 通过“读”海量的书,它会慢慢调整这些数字,让它们能准确描述这个词的意思
第二步:让单词学会“看眼色” (上下文相关嵌入)
这是现代大模型(如 ChatGPT)和老一代技术最大的区别。
问题来了: 字典里的词是死的,但句子里的意思是活的。 比如单词 “Apple”:
- 在
句子 A里:“我爱吃 Apple。”(它是水果) - 在
句子 B里:“Apple 发布了新手机。”(它是科技公司)
如果只用死板的“属性面板”,模型就会搞混。
解决方案:
- 模型会让单词“看眼色”(关注上下文)。
- 当模型读到句子 A 时,它看到周围有“吃”,就会把“
Apple”的属性面板临时修改一下,加强“食物”的属性; - 当读到句子 B 时,看到周围有“
手机”,就会加强它“科技”的属性。
这就是书中说的“与上下文相关的嵌入”(Contextualized Embeddings)。在这个阶段,单词不再是一个固定的死数字,而是根据语境动态变化的“变色龙”。
第三步:数据的“身材” (维度)
书中提到了一行代码输出 torch.Size(),这其实是在描述数据在电脑内存里长什么样。作为高中生,你可以把它想象成一个乐高积木块:
1(批次):- 就像你现在只拿了 1 本书来读(一次处理一个句子)。
4(序列长度):- 这句话里有 4 个词(比如 “Hello world” 被拆解加上开头结尾标记变成了 4 个词元)。
384(隐藏层大小):- 这就是我们刚才说的“属性面板”的长度。每一个词,电脑都用 384 个数字来描述它的特征。
所以,这行代码的意思是:电脑现在手里拿着 1 句话,这句话有 4 个词,每个词都用 384 个数字来详细描述它的含义。
总结一下
- 静态嵌入:
- 就像给每个单词发了一张初始属性卡(查表)。
- 动态嵌入:
- 单词进入句子后,根据周围的词(上下文),实时修改自己的属性卡,变得更准确。
- 最终目的:
- 把人类的语言(文字),变成了计算机能进行加减乘除运算的数学向量。