动手学深度学习 - 自然语言处理 - 15.1. 词嵌入 (word2vec)

 


 

🌌 新所得库 - 深度学习中的词嵌入:word2vec 理论与实战全解析

15.1. 词嵌入(word2vec)

自然语言是人类交流中最复杂的系统之一,而词语则是表达意义的最基本单位。将每个词转化为向量,使其能被神经网络等模型处理,是自然语言处理的关键任务之一。

**词嵌入(word embedding)**的目标是:将词语映射为稠密的、可学习的实数向量,捕捉它们之间的语义相似性。


理论理解:

词嵌入是将离散的词语映射为连续的实数向量的技术,是深度学习中对语言建模的基础操作。相比 One-Hot,词嵌入能表达语义信息。

实战理解:

  • Google:在 Google Translate 中,词嵌入用于建构词级语义空间,使翻译模型能够理解不同语言词汇的内在关联。

  • 字节跳动:在推荐系统(如抖音短视频推荐)中将用户行为序列中的“点击词”与内容关键词嵌入统一语义空间,用于语义召回。

  • OpenAI:GPT 采用 embedding + positional encoding 作为输入的第一层,词嵌入质量直接决定语义理解上限。


15.1.1. 独热向量是一个糟糕的选择

在早期(如 9.5 节),我们使用 One-Hot 向量表示词语:每个词用一个长度为词典大小的向量表示,其中仅一个维度为 1,其余为 0。这种方式虽然简单,但存在重大缺陷:

  • 所有词之间的余弦相似度均为 0;

  • 无法度量语义相似性;

  • 稀疏高维,计算成本高。

这意味着 One-Hot 编码不能反映“king” 和 “queen” 或 “apple” 和 “banana” 之间的关联。

💡 在实际工程中(如字节推荐系统),这会造成模型对“相关词”理解能力薄弱,影响召回质量。

理论理解:

One-Hot 向量不具备词与词之间的语义关系。它导致的一个重要缺陷是:所有词之间的余弦相似度恒为 0,无法建模词义接近性。

实战理解:

  • 百度:在搜索排序系统中,一旦关键词相似性无法捕捉,会导致召回系统精度骤降。百度搜索很早就使用了基于词嵌入的向量检索。

  • Amazon/AWS:基于词向量的搜索系统允许模糊匹配(如“cheap phone” 召回 “budget smartphone”),提升转化率。


15.1.2. 自监督 word2vec

为了解决上述问题,Google 提出了 word2vec 工具,它通过无监督方式训练词向量,使得语义相近的词在向量空间中彼此靠近。

word2vec 提供两种模型:

  • Skip-Gram:用中心词预测上下文词;

  • CBOW(Continuous Bag of Words):用上下文词预测中心词。

其核心思想是:上下文共现关系中蕴含语义关联。例如,“the man loves his son” 中,“loves” 与 “his” 更可能出现在一起,而非“banana”。

🏭 字节/阿里在构建语义推荐系统时,也使用 word2vec 训练上亿规模语料中的关键词表示,以实现推荐内容理解。

理论理解:

Word2Vec 是一种自监督学习方法,通过预测上下文词(或中心词)来学习词表示。训练数据来自于大规模语料的自然共现关系,不依赖人工标签。

实战理解:

  • 字节跳动:训练超大规模语料的词嵌入模型(例如百万视频标题),用于语义聚类和热词发现。

  • Google:其词向量模型是 Google News 上训练的,影响了整个 NLP 社区十年。

  • NVIDIA:在构建文本图谱、对话系统等任务中,将 Word2Vec 与实体链接共同使用,构建结构化语义图谱。


15.1.3. Skip-Gram 模型

Skip-Gram 假设中心词可以生成上下文。例如:

输入句子:“the man loves his son”,中心词设为“loves”,窗口大小为 2,预测上下文为:“the”、“man”、“his”、“son”。

模型目标是最大化给定中心词生成上下文词的概率:

每个词在词表中拥有两个向量表示:一个作为中心词(输入向量),一个作为上下文词(输出向量)。条件概率通过 softmax 计算:

 

理论理解:

Skip-Gram 的目标是“中心词 ➡️ 上下文词”。核心思想是,语义接近的词将具有相似的上下文,因此训练模型预测上下文能内化这种语义信息。

其损失函数形式是所有上下文词条件概率的负对数求和,常用 softmax 或 negative sampling 优化。

实战理解:

  • 腾讯 QQ 浏览器推荐系统:使用 Skip-Gram 对新闻词语建模,构建词向量热力图,用于实时推荐。

  • Facebook AI Research(FAIR):将 Skip-Gram 用于用户行为路径建模,构建“兴趣向量”,用于广告推荐。

  • 百度百科:用于术语之间的关系分析,训练“词向量地图”,发现实体之间的近似概念。


15.1.3.1. 训练

模型训练的目标是最大化似然函数,对应损失函数为负对数似然:

由于 softmax 的分母计算开销极大(词表往往上百万),采用以下优化:

  • 负采样(Negative Sampling):每次仅计算少量负样本的点积;

  • 层次 Softmax:用二叉树代替词表遍历。

更新时,计算该损失对中心词向量 vcv_c 和上下文词向量 uou_o 的梯度:

⚙️ 工程实践(如 NVIDIA NeMo)中,用 C++ 实现梯度累积和优化,加速千万级语料训练。

理论理解:

使用最大似然估计来训练模型,即最大化上下文词的出现概率。为了加速 softmax 计算,引入负采样方法降低计算复杂度。

实战理解:

  • Google:使用 hierarchical softmax 在大词表上训练,替代全词表计算。

  • 字节跳动:采用异步多机分布式训练策略,将大规模语料切片并行训练,显著提升收敛速度。

  • NVIDIA NeMo:在 NLP 框架中提供了高度优化的 Word2Vec GPU 训练模块,支持万亿词级别建模。


15.1.4. 连续词袋模型(CBOW)

CBOW 与 Skip-Gram 相反:它假设中心词是由上下文词生成的。

仍以上文为例,用“the”、“man”、“his”、“son” 预测中心词 “loves”,其条件概率形式为:

其中 vˉ\bar{v} 为上下文词向量的平均。

理论理解:

CBOW 与 Skip-Gram 相反,“上下文词 ➡️ 中心词”。将多个上下文词的向量平均作为输入,用来预测中心词。

虽然损失一点精度,但训练更快,特别适合大规模语料。

实战理解:

  • 美团:用于商品查询推荐系统,CBOW 对商品词训练嵌入,提升搜索语义召回能力。

  • Google BERT Pretraining:BERT 的 Masked Language Model 本质上是改良版的 CBOW,预测被掩码的词。

  • OpenAI:训练 GPT 初期也曾评估过 CBOW 作为初始化嵌入方式,但由于上下文建模能力弱,最终放弃。


15.1.4.1. 训练

与 Skip-Gram 类似,CBOW 训练目标为最大化中心词的条件概率,对应损失函数为:

梯度更新时的偏导数如下:

🧠 实战中,CBOW 常用于大规模语料(如阿里商品标题建模),因其训练速度更快、收敛更稳。

理论理解:

同样使用最大似然训练,但 CBOW 的输入是多个上下文词向量的平均,输出是一个中心词。优化方式基本一致,也支持负采样。

实战理解:

  • 京东:商品描述标签训练 CBOW 向量,用于类目归一化和推荐系统冷启动。

  • 微软必应搜索:用 CBOW 模型构建 query vector,用于向量召回候选集合,优化语义检索体验。


15.1.5. 小结

  • 词嵌入是自然语言处理的关键技术;

  • Word2Vec 提供 Skip-Gram 和 CBOW 两种建模方式;

  • Skip-Gram 适合小数据+精度需求高场景;

  • CBOW 更适合大语料+训练效率要求场景;

  • 两者均为无监督建模,捕捉上下文语义关系。

理论理解:

  • Word2Vec 是词向量学习的基础方法;

  • Skip-Gram 保留语义更好,适合精度需求高场景;

  • CBOW 训练更快,适合大规模工程应用;

  • 都属于自监督范式,无需人工标注。

实战理解:

  • BAT & Google:都将词嵌入作为推荐系统、语义理解、搜索召回的基础模块;

  • OpenAI:BERT、GPT 等模型的输入层本质是“嵌入层”,它继承了 Word2Vec 的思想但做了更深建模;

  • 阿里巴巴:大规模商品图谱构建中,用词向量构建商品关联网络。


15.1.6. 练习与思考

  1. Softmax 的时间复杂度是多少?为什么负采样能加速?

  2. “New York” 如何训练成整体向量?是否可以将短语作为 Token 预处理?

  3. Skip-Gram 中的点积和余弦相似度之间的关系是什么?为什么语义相似的词点积更高?


是否继续撰写下一节:15.2 GloVe 全局词向量模型解析?还是你想结合当前 word2vec 写一篇企业级工程实战经验(比如推荐系统中的嵌入工程实践)?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值