
在上一篇文章中,我们了解了 Embedding 的核心目标是“表示万物”。现在,让我们深入其内部,探寻一个句子,比如“今天天气真好”,是如何经历一场“变形记”,最终成为一个浓缩了其精华的向量的。
这个过程主要分为三步,就像一条精密的流水线:
机器无法直接理解一整个句子。第一步,模型需要将句子拆解成它能理解的基本单元,即 Token。这就像我们学习语言时先学单词和偏旁部首。
输入: "今天天气真好" Tokenization 输出:
['[CLS]', '今天', '天气', '真好', '[SEP]']
这里的 [CLS] 和 [SEP] 是特殊的标记 Token,用于告诉模型句子的开始和结束,我们稍后会再次见到 [CLS]。
如果只看单个 Token,我们可能会产生歧义(比如“苹果”可以指水果或公司)。因此,模型需要理解每个 Token 在当前句子这个特定语境 (Context) 下的真正含义。
这一步是整个流程的核心。所有 Token 的初始向量会被送入一个强大的编码器——通常是 Transformer 架构(由多层网络和多头注意力机制构成)。在这个复杂的网络中,模型会深度分析每个 Token 与句子中所有其他 Token 的关系。
经过这个过程,每个 Token 的向量都会被“升级”,从一个独立的“字典定义”变成一个富含上下文信息的“语境化表达”。
经过第二步,我们得到了多个向量(每个 Token 对应一个)。但我们通常需要一个向量来代表整句话。如何从多个详细的向量中提炼出一个总代表呢?这就是池化 (Pooling) 的任务。
可以把池化想象成“撰写会议纪要”。一场会议有许多发言(多个 Token 向量),而池化的目标就是生成一段话的摘要(单一的句向量)。
最常见的池化策略有两种:
[CLS] Token 吗?在像 BERT 这样的模型中,它被设计成一个专门的“会议纪要员”。模型在训练时被教导将整句话的综合信息都汇聚到 [CLS] Token 对应的向量上。因此,我们只需直接取出这个向量,它就是整句话的高度浓缩摘要。至此,一句话的“变形记”宣告完成。我们得到了一个单一、固定长度、富含语义的向量,它可以被用于下游的各种 AI 任务。在下一篇中,我们将进一步解构模型的“骨架”——层、参数和维度的奥秘。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。