深入解析 Transformers 框架(五):嵌入(Embedding)机制和 Word2Vec 词嵌入模型实战

微信公众号:老牛同学

公众号标题:深入解析 Transformers 框架(五):嵌入(Embedding)机制和 Word2Vec 词嵌入模型实战

公众号链接:https://mp.weixin.qq.com/s/qL9vpmNIM1eO9_lQq7QwlA

通过前面几篇关于 Transformers 框架的技术文章,我们探讨了大模型的配置、分词器和 BPE(Byte-Pair Encoding)分词算法。这些技术帮助我们将一段文本序列处理成一个 Token(词元)列表,并为每个 Token 分配一个唯一的 Token ID。然而,这仅仅是大模型输入层工作的第一步。接下来,我们将深入探讨嵌入(Embedding),这是将离散的符号映射到连续向量空间的关键步骤,尤其是词嵌入(Token Embeddings),它是整个流程中最基础也是最关键的环节。

1. 嵌入:从离散符号到连续向量

在人工智能领域,特别是在自然语言处理(NLP)和深度学习中,“嵌入”(Embedding)是一个至关重要的概念。它指的是将离散的符号(如单词、字符或句子)映射到连续向量空间的过程。这些向量通常被称为“嵌入向量”,使得计算机能够更有效地理解和处理人类语言。

嵌入的核心概念包括:

  • 高维向量表示:每个符号(例如单词)被表示为一个固定维度的实数向量。这个向量的空间通常具有较高的维度(如 100, 10000 甚至更高),以便能够充分表达复杂的语义信息。

  • 语义相似性:在嵌入空间中,语义上相似的词汇往往具有接近的向量表示。例如,“猫”和“狗”的嵌入向量可能会非常接近,因为它们都是宠物动物;而“苹果”作为一个水果,其嵌入向量会与上述两者有一定距离。

  • 上下文依赖:现代嵌入模型,不仅仅考虑单个词的静态意义,还会根据词语出现的具体上下文来动态调整其嵌入向量。这意味着同一个词在不同的句子中可能会有不同的表示,从而更好地捕捉其多义性和使用场景。例如,在“这个苹果很甜。”和“我使用的是苹果手机。”这两个句子中,“苹果”的含义并不相同。

嵌入层(Embedding Layer)是神经网络模型中的一种特殊层,它的作用就是实现嵌入(Embedding)。嵌入层的输入是 Token ID,输出则是对应的嵌入向量。在大语言模型中,嵌入层本质上是一个嵌入矩阵,矩阵的行代表词表中的 Token ID,矩阵的列则代表嵌入向量的维度。当给定一个 Token 时,嵌入层会根据 Token ID,直接从嵌入矩阵中取出相应的嵌入向量。

2. Transformers 框架中的嵌入机制

为了更好地理解嵌入机制,我们以Qwen2.5-1.5B大模型为例,看看它是如何实现嵌入的。

首先,我们根据大模型config.json配置文件中的hidden_sizevocab_size配置项,可以看出嵌入的维度是1536维,词表大小是151936个:

{
   
    /**...其他省略...*/
    "hidden_size": 1536,
    "vocab_size": 151936
}

这意味着,Qwen2.5-1.5B的嵌入层形状是(151936, 1536),即嵌入矩阵有 151936 行,1536 列。我们可以通过以下代码来验证这一点:

import os
from transformers import AutoTokenizer, AutoModel

# 本地模型目录
model_dir = os.path.join('D:', os.path.sep, 'ModelSpace', 'Qwen2.5', 'Qwen2.5-1.5B-Instruct')

# 初始化分词器和模型
tokenizer = AutoTokenizer.from_pretrained(
    model_dir,
    local_files_only
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值