- Objective:
- Breadcrumb:
- # 概念阐释
- 嵌入Embedding,是由[[浮点数]]的向量(列表)组成。两个向量之间的距离在一个高维的[[语义空间]]中衡量它们的**相关性**。小距离表示高相关性,大距离表示低相关性。
- GPT-3:12288 个维度,12288个浮点数组成的数组
- GPT-4:3072 个维度,3072 个浮点数组成的数组
- Embedding 由 3 个部分组成,将离散的、整数序列[[tokenization|token ID]]转换成连续的、浮点向量:
- **token embedding matrix**
- **其他名称**:token embed, token embedding
- **Embedding Dimension**:模型设计时决定的 **[[超参数]]** ,例如 GPT-3 是12288 维。
- **vocabulary size**:token embedding matrix(token嵌入矩阵)的**列**,由**词汇表**决定,例如 gpt-3 的词汇表是 50257,那么矩阵为50257 列。
- **随机权重**:每个token ID都有一组多维度的,初始无意义的==随机权重==。GPT-2、GPT-3 等Transformer-based模型在实际工程实现中,一般都使用较小范围的正态分布或均匀分布随机初始化。例如 token ID = 1,那么就提取「列 2」的权重。
- 组成一个二维矩阵,权重的总数量为:
- $(Vocabulary size * Embedding dimension)$
- **position embedding matrix**
- 其他名称:position embed, position embedding
- Transformer模型没有像RNN那样的内在序列位置的概念,因此需要加入额外的位置嵌入来表示Token在序列中的顺序信息。
- **Embedding Dimension**:模型设计时决定的 **[[超参数]]** ,例如 GPT-3 是12288 维。
- **context length**:position embedding matrix(位置嵌入矩阵)的**列**,由 **[[context length 上下文长度]]** 决定,例如 gpt-3的上下文窗口是 2048。
- 随机权重:每个位置都有一组多维度的,初始为无意义的==随机权重==。例如位置是 4/2048,那么提取「列 4」的权重。
- 组成一个二维矩阵,权重的总数量为:
- $(context length * Embedding dimension)$
- **input embed**
- Token嵌入与位置嵌入相加,==构成最终输入到Transformer模型的输入嵌入向量==。置于为什么相加,并没有什么依据,知识在经验上似乎行得通。
- 设计的巧妙之处
- 保持了Token信息:通过token嵌入捕获==语义信息==。
- 引入了位置上下文:通过位置嵌入向量捕获位置信息,弥补了Transformer不具备循环结构的特点。
- # 实例
- [[OpenAI Embedding]]
- [[LLM Visualization nano-gpt]]
- [[LLM 预训练前的准备]]
- # 相关内容
- **训练阶段embedding**
- 数据 → Token ID → 直接索引Embedding权重(token embedding+position embedding → 得到Input Embedding
- 然后经过 Transformer 模型计算输出。 最后与真实标签对比,计算误差[[Loss function 损失函数]]。
- 模型利用[[Backpropagation 反向传播算法]],根据误差不断地==更新Embedding权重==,使其逐渐具备语义含义。
- 训练阶段Embedding权重是==不断更新==的,目的是学习到词汇间的语义关系与位置关系,比如相似词的Embedding会越来越接近。
- **数据**
- 数据并不存储在大模型中,而是通过tokenID索引的方式,来查找这些Embedding矩阵的对应位置(token ID 的位置与上下文长度的位置),从而得到具体的向量。
- 简单来说,==数据只是一个索引(Index,token ID 的位置与上下文长度的位置),作用是去Embedding矩阵中**提取**对应的向量(随机权重),而不是数据本身成为嵌入矩阵中的值。==
- **推理阶段的 embedding**
- 推理阶段(Inference)也会进行同样的Embedding步骤。 区别是:Embedding矩阵的权重已经固定,不再更新,而是直接使用训练好后的Embedding矩阵将 Token ID 转换为语义明确的向量,供模型进行推理。
- **输入的 prompt**
- 自然语言指令转换为 tokenID,ID作为索引用于查找Embedding,但此时Embedding矩阵已经被训练好了,不会再被更新。根据学到的语义进行理解。
- ## embedding阶段的权重数量计算
- | GPT-3 为例 | | |
| ----------------------- | --------------------------------------------------------------- | ------------------------------------- |
| 权重数量:token embedding | V=50257,D=12288,$W_E = D*V ≈ 6.17$ 亿权重 | |
| 权重数量:position embedding | C=2048,D=12288,$W_E = C*V ≈ 2520$ 万个权重 | |
| imput embedding | $617,000,000+25,200,000≈642,200,000$ 6.42 亿个参数(1750 亿参数的 0.37%) | |
| 最终参数parameter | 1750 亿 | 预训练完成后获得的一份固定参数文件,不再更新,然后部署到服务器中供人使用。 |

- ## 常见的 Embeddings 方法
- ### 2.1 词向量(Word Embeddings)
用于表示单词的向量,可以捕捉语义关系,主要方法包括:
- **Word2Vec**(Google, 2013)
通过 Skip-gram 或 CBOW 训练,使得语义相似的单词在向量空间中更接近。
- **GloVe**(Stanford, 2014)
结合全局词频信息构建词向量,更适合大规模语料。
- **FastText**(Facebook, 2016)
通过子词(subword)建模,能更好处理未见词(OOV)。
- **BERT Embeddings**(Google, 2018)
预训练 Transformer 模型后,使用上下文信息生成更强大的动态词向量。
- ### 2.2 句子和文档向量(Sentence & Document Embeddings)
- **Doc2Vec**:用于整个文档的嵌入,类似 Word2Vec,但加入了段落 ID。
- **SBERT(Sentence-BERT)**:基于 BERT 训练的句子级别嵌入,适用于相似度计算。
- ### 2.3 其他领域的嵌入
- **图嵌入(Graph Embeddings)**:如 DeepWalk、Node2Vec,把社交网络、知识图谱等图数据映射到低维空间。
- **推荐系统 Embeddings**:使用用户行为数据(如点击、购买历史)学习用户和物品的嵌入,提高推荐精度。
- **视觉嵌入(Vision Embeddings)**:如 ResNet、CLIP,把图像映射到向量空间,用于图像检索、分类等任务。
- # 参考资料
- [嵌入网络表示数据 - GPT](https://chat.openai.com/share/3c8b1fe8-3731-4db4-ad1f-53d71ccafb83)
- 《这就是ChatGPT》p56-63
- [3.2 什么是编码](https://readwise.io/reader/shared/01jaq21a3wbbg3smgp72eykj77)
- [Visualizing the embeddings in 2D](https://github.com/openai/openai-cookbook/blob/main/examples/Visualizing_embeddings_in_2D.ipynb)
- [词嵌入代码](https://colab.research.google.com/drive/1CNgraVfJP8G4bdknu5D-63IvSRoueoyu#scrollTo=Q8G9ZMZE079i)
- [3B1B-Chapter 5, Deep Learning - How large language models work, a visual intro to transformers](obsidian://open?vault=Harry%E7%9A%84%E6%91%98%E5%BD%95%E7%B4%A0%E6%9D%90%E5%BA%93&file=%E7%9F%A5%E8%AF%86%E8%A7%86%E9%A2%91%2F3B1B-Chapter%205%2C%20Deep%20Learning%20-%20How%20large%20language%20models%20work%2C%20a%20visual%20intro%20to%20transformers)
- [youtube-ChatGPT Projects:RAG 和embedding 的底层原理|07/12 days of openai](https://readwise.io/reader/shared/01jjqsrp0vy0xbdw3q4zarnsd6)
- [OpenAI-embeddings](https://platform.openai.com/docs/api-reference/embeddings)
- [chat w gpt](https://readwise.io/reader/shared/01jp015632s3c9y4sa7kdrbjqp)