词元嵌入(高中生版)

#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 个数字来详细描述它的含义。

总结一下

  1. 静态嵌入:
    • 就像给每个单词发了一张初始属性卡(查表)。
  2. 动态嵌入:
    • 单词进入句子后,根据周围的词(上下文),实时修改自己的属性卡,变得更准确。
  3. 最终目的:
    • 把人类的语言(文字),变成了计算机能进行加减乘除运算的数学向量。