Embeddings 技术详解与 Word2Vec 模型训练指南
1. 引言:什么是嵌入(Embeddings)
在机器学习与自然语言处理(NLP)领域,嵌入(Embeddings) 是一种将高维、稀疏的数据转化为低维、稠密向量的核心技术。其核心目的是将离散的、高维的特征(如单词、ID、类别)映射到连续的、低维的向量空间中,以便于算法更好地处理和理解数据。
传统的文本表示方法(如 One-Hot Encoding)存在维度灾难和语义缺失的问题。例如,"猫"和"狗"在 One-Hot 向量中是正交的,无法体现它们的相似性。而 Embedding 通过分布式假设,使得语义相似的词汇在向量空间中的距离更近,从而捕捉到词汇之间的深层语义关系。
本文将以经典的嵌入模型 Word2Vec 为例,详细介绍其训练过程、Embedding 生成机制以及向量相似度计算,帮助读者理解一段文本是如何转化为 n 维向量的。
2. Word2Vec 模型概述
Word2Vec 是由 Google 团队在 2013 年提出的一种用于生成词嵌入的算法。它基于分布式假设,即假设上下文相似的单词在语义上也是相似的。Word2Vec 不依赖于复杂的神经网络结构,而是通过浅层网络高效地学习词向量。
Word2Vec 主要有两种训练模型架构:
2.1 连续词袋模型(CBOW)
原理: CBOW 通过给定一个词的上下文单词(Context Words),来预测中心词(Target Word)。
- 输入: 上下文词的词向量(通常是多个词的向量求和或平均)。
- 输出: 中心词的词向量概率分布。
- 训练目标: 最大化预测中心词的概率。
- 特点: 训练速度快,适合小数据集,对常见词表现较好。
2.2 跳字模型(Skip-gram)
原理: Skip-gram 的思想与 CBOW 相反,它通过给定一个中心词,来预测其周围的上下文词。
- 输入: 中心词的词向量。
- 输出: 周围上下文词的词向量概率分布。
- 训练目标: 最大化预测上下文词的概率。
- 特点: 能更好地捕捉罕见词的语义,通常在小数据集上表现优于 CBOW,但训练速度较慢。
3. Embedding 生成过程
训练好的 Word2Vec 模型包含一张词表(Vocabulary),其中存储了所有训练数据中单词对应的词向量。当使用 Word2Vec 将句子转化为向量时,常见的策略是将句子中所有单词的词向量进行聚合。
3.1 基本步骤
- 分词与映射: 获取每个单词的词向量,将句子中的每个单词都映射到 Word2Vec 模型中的词向量空间。
- 聚合计算: 将所有单词的词向量取平均(Mean Pooling)、加权平均或求和(Sum Pooling),得到句子的整体向量。
3.2 示例演示
假设目前有一个已经训练好的 Word2Vec 模型,模型的输入为'我喜欢苹果'。分词后的向量表如下(假设词向量维度为 3,实际应用中通常为 100~300 维):
| 单词 | 词向量 |
|---|---|
| 我 | [0.2, 0.3, 0.5] |
| 喜欢 | [0.4, 0.1, 0.8] |
| 苹果 | [0.6, 0.7, 0.9] |
接下来我们使用词向量平均的方法,将这个句子转化为向量。设我的词向量为 $\alpha_1$,喜欢的词向量为 $\alpha_2$,苹果的词向量为 $\alpha_3$。
计算公式为: $$ \text{Sentence Vector} = \frac{\alpha_1 + \alpha_2 + \alpha_3}{3} $$


