首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >深入引擎——一句话如何变成向量?

深入引擎——一句话如何变成向量?

原创
作者头像
大自然的疯
发布2025-08-05 23:20:46
发布2025-08-05 23:20:46
3400
举报

在上一篇文章中,我们了解了 Embedding 的核心目标是“表示万物”。现在,让我们深入其内部,探寻一个句子,比如“今天天气真好”,是如何经历一场“变形记”,最终成为一个浓缩了其精华的向量的。

这个过程主要分为三步,就像一条精密的流水线:

第 1 步:分词 (Tokenization) - 拆解语言

机器无法直接理解一整个句子。第一步,模型需要将句子拆解成它能理解的基本单元,即 Token。这就像我们学习语言时先学单词和偏旁部首。

输入: "今天天气真好" Tokenization 输出: ['[CLS]', '今天', '天气', '真好', '[SEP]']

这里的 [CLS][SEP] 是特殊的标记 Token,用于告诉模型句子的开始和结束,我们稍后会再次见到 [CLS]

第 2 步:上下文编码 (Contextual Encoding) - 理解语境

如果只看单个 Token,我们可能会产生歧义(比如“苹果”可以指水果或公司)。因此,模型需要理解每个 Token 在当前句子这个特定语境 (Context) 下的真正含义。

这一步是整个流程的核心。所有 Token 的初始向量会被送入一个强大的编码器——通常是 Transformer 架构(由多层网络和多头注意力机制构成)。在这个复杂的网络中,模型会深度分析每个 Token 与句子中所有其他 Token 的关系。

经过这个过程,每个 Token 的向量都会被“升级”,从一个独立的“字典定义”变成一个富含上下文信息的“语境化表达”。

第 3 步:池化 (Pooling) - 浓缩精华

经过第二步,我们得到了多个向量(每个 Token 对应一个)。但我们通常需要一个向量来代表整句话。如何从多个详细的向量中提炼出一个总代表呢?这就是池化 (Pooling) 的任务。

可以把池化想象成“撰写会议纪要”。一场会议有许多发言(多个 Token 向量),而池化的目标就是生成一段话的摘要(单一的句向量)。

最常见的池化策略有两种:

  1. 平均池化 (Mean Pooling):最直接的方法。将所有 Token 的最终向量按维度相加后取平均。这相当于综合了所有观点,得出一个能代表整体氛围的“平均”摘要。
  2. CLS 池化 (CLS Pooling):还记得开头那个 [CLS] Token 吗?在像 BERT 这样的模型中,它被设计成一个专门的“会议纪要员”。模型在训练时被教导将整句话的综合信息都汇聚到 [CLS] Token 对应的向量上。因此,我们只需直接取出这个向量,它就是整句话的高度浓缩摘要。

至此,一句话的“变形记”宣告完成。我们得到了一个单一、固定长度、富含语义的向量,它可以被用于下游的各种 AI 任务。在下一篇中,我们将进一步解构模型的“骨架”——层、参数和维度的奥秘。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第 1 步:分词 (Tokenization) - 拆解语言
  • 第 2 步:上下文编码 (Contextual Encoding) - 理解语境
  • 第 3 步:池化 (Pooling) - 浓缩精华
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档