自然语言处理核心:词嵌入(Word Embedding)详解
引言
在自然语言处理(NLP)任务中,计算机无法直接理解人类语言。因此,需要将文本转化为数值形式以便模型处理。传统的独热编码存在严重缺陷,词嵌入技术应运而生,成为现代 NLP 的基础组件。
一、独热编码(One-Hot Encoding)的局限
1. 基本原理
独热编码的基本思想是为词汇表中的每个词汇分配一个唯一的向量。这个向量的长度等于词汇表的大小,向量中的每个元素都是 0,除了代表该词汇的那个位置是 1。 例如,假设词汇表为 {"Biscoe", "Dream", "Torgensen"},那么 "Biscoe" 表示为 [1, 0, 0],"Dream" 表示为 [0, 1, 0],"Torgensen" 表示为 [0, 0, 1]。
2. 维度灾难
随着词汇表的增大,向量的维度也会增大。如果词汇表有 10 万个词,每个词就是一个 10 万维的稀疏向量。这导致计算和存储的复杂度急剧增加,难以扩展到大规模数据集。
3. 语义缺失
独热编码无法表达词汇之间的语义关系。因为任何两个不同词汇的向量之间的点积都是 0,它们在向量空间中是正交的。这意味着从数学角度看,"猫"和"狗"的关系与"猫"和"汽车"的关系完全相同,无法捕捉近义词或类比关系。
二、词嵌入(Word Embedding)概念
词嵌入是一种将词汇从离散的符号表示转换为连续的稠密向量表示的技术。这些向量通常位于低维空间(如 50 到 300 维),能够捕捉词汇的语义和语法信息。在向量空间中,语义相似的词距离更近。例如,"国王" - "男人" + "女人" 的结果向量最接近 "女王"。
三、Word2Vec 模型详解
Word2Vec 是由 Google 于 2013 年提出的一种词嵌入技术,它利用浅层神经网络将词汇映射到低维向量空间中。它包含两种主要的模型结构:CBOW 和 Skip-Gram。
1. CBOW 模型(连续词袋模型)
CBOW 模型根据上下文(context)预测当前词(target word)。可以将其视为一个高级的完型填空游戏,其中上下文中的词汇被用来预测缺失的中心词。
- 输入层:将上下文词汇的 one-hot 编码作为输入。
- 投影层:通过权重矩阵 W,将输入层的 one-hot 编码转换为连续的向量表示(即嵌入向量)。
- 隐藏层:对投影层的向量进行平均或求和操作,得到一个上下文向量。
- 输出层:通过另一个权重矩阵 W' 和 softmax 函数,计算当前词的概率分布。
- 目标:最小化预测当前词的概率分布的负对数似然损失。
2. Skip-Gram 模型(跳字模型)
Skip-Gram 模型则根据当前词预测上下文。可以将其视为一个词汇侦探,通过当前词线索去追踪并预测其周围的上下文词汇。
- 输入层:将当前词的 one-hot 编码作为输入。
- 投影层:通过权重矩阵 W,将输入层的 one-hot 编码转换为连续的向量表示。
- 隐藏层:此层实际上与投影层共用相同的嵌入向量。
- 输出层:对于每个上下文词汇,通过权重矩阵 W' 和 softmax 函数,计算其概率分布。
- 目标:最小化预测上下文词汇的概率分布的负对数似然损失。
3. CBOW 与 Skip-Gram 对比
- CBOW:训练速度较快,适合小数据集,能更好地处理常见词。
- Skip-Gram:训练速度较慢,但能更好地捕捉罕见词的语义,适合大数据集。
四、训练优化技术
1. 负采样(Negative Sampling)
传统 Softmax 需要更新所有词汇的输出权重,计算量巨大。负采样只更新部分负样本的权重,大幅加速训练过程,同时保持较好的效果。


