Word2Vec

This article is extracted from the chat log with AI. Please identify it with caution.

https://zhuanlan.zhihu.com/p/114538417

好的,我们来深入、详细地介绍 Word2Vec。它是自然语言处理领域的一个里程碑式的模型,几乎以一己之力推动了词嵌入技术的普及,为后来的深度学习 NLP 模型奠定了基础。

介绍#

一、Word2Vec 的核心思想与要解决的问题#

在 Word2Vec 之前,主流表示单词的方法是 One-Hot 编码,但它有致命缺陷:

  1. 维度灾难:词汇表有多大,向量就有多长。
  2. 向量稀疏:每个向量几乎全是0。
  3. 词汇孤立:无法从向量中看出“国王”和“王后”有什么关系。

Word2Vec 的革命性思想在于一个简单的假设:分布式假说

“一个词的含义可以由它周围的词来定义。”

换句话说,出现在相似上下文中的词,其语义也相似

Word2Vec 的目标:基于上述假说,为词汇表中的每个词学习一个低维、稠密、连续的向量表示,使得语义相近的词在向量空间中的位置也接近。


二、Word2Vec 的两种模型架构#

Word2Vec 提供了两种不同的学习范式来实现这一目标,它们共享核心思想,但训练任务不同。

1. 连续词袋模型(CBOW - Continuous Bag-of-Words)#

  • 任务根据上下文预测中心词

  • 形象理解:完形填空。给你一句话中挖掉的那个词周围的词,让你猜出中间那个词是什么。

  • 工作流程

    1. 输入层:将中心词周围 C 个上下文词的 One-Hot 向量作为输入(C 是窗口大小)。
    2. 隐藏层:将这些 One-Hot 向量与一个共享的输入嵌入矩阵 W_{V×N} 相乘,得到 C 个 N 维的稠密向量,然后对它们取平均,得到一个 N 维的隐藏层向量。
    3. 输出层:将隐藏层向量与另一个输出嵌入矩阵 W'_{N×V} 相乘,得到一个 V 维的向量。
    4. 使用 Softmax 函数将这个 V 维向量转换为概率分布,表示每个词是中心词的概率。
    5. 训练目标是最大化真实中心词的概率
  • 特点

    • 训练速度相对较快。
    • 对高频词的效果更好。
    • 在小型数据集上表现通常更好。

2. Skip-gram 模型#

  • 任务根据中心词预测上下文

  • 形象理解:给你一个词,让你猜它周围可能出现的词。

  • 工作流程

    1. 输入层:将中心词的 One-Hot 向量作为输入。
    2. 隐藏层:将 One-Hot 向量与输入嵌入矩阵 W_{V×N} 相乘,直接得到该中心词的 N 维稠密向量表示。
    3. 输出层:将这个隐藏向量与输出嵌入矩阵 W'_{N×V} 相乘,得到一个 V 维的向量。
    4. 使用 Softmax 函数得到概率分布。
    5. 训练目标是最大化所有上下文词的概率。Skip-gram 将每个(中心词,上下文词)对都视为一个独立的训练样本。
  • 特点

    • 能更好地处理低频词。
    • 在大型数据集上表现通常更出色。
    • 训练速度比 CBOW 慢一些,但效果往往更好,尤其是对于稀有词。

三、Word2Vec 的训练技巧(关键创新)#

直接使用上述朴素方法会遇到一个大问题:Softmax 计算成本太高,因为词汇表 V 可能高达数万甚至数百万。Word2Vec 论文引入了两种高效的训练技巧来规避这个问题。

1. 分层 Softmax#

  • 核心思想:将复杂的多分类问题转化为一系列二分类问题。
  • 实现方式
    • 将词汇表中的所有词组织成一棵霍夫曼树,其中高频词靠近树根,低频词靠近树叶。每个叶子节点代表一个词。
    • 原本的一次 V 分类,变成了从树根走到某个叶子节点的路径,路径上的每一步都是一个二分类(例如,使用逻辑回归)。
    • 计算量从 O(V) 降到了 O(log(V)),大大提升了训练速度。

2. 负采样#

这是目前更常用、更简单有效的方法。

  • 核心思想简化训练目标。我们不再去计算所有词的庞大Softmax,而是只关注少数几个词。
  • 实现方式
    • 对于每个训练样本(如 (中心词, 上下文词) 正样本),我们目标是让模型能够区分这个“正样本”和随机构造的“负样本”。
    • 正样本:就是数据中真实存在的(中心词,上下文词)对。
    • 负样本:从词汇表中随机抽取 k 个(比如5-20个)词,与中心词组成“假”的样本。这些词通常不是中心词的上下文。
    • 训练目标变为:最大化正样本的概率,同时最小化负样本的概率
    • 负样本的抽取并非完全均匀随机,而是根据词的频率进行加权,频率越高的词越容易被抽中作为负样本。

使用负采样的 Skip-gram 模型是目前最流行、效果最好的 Word2Vec 配置。


四、Word2Vec 的神奇成果与向量特性#

经过训练,Word2Vec 学到的词向量展现出了令人惊叹的数学特性:

  1. 语义相似性:语义相近的词,其向量在空间中的余弦相似度很高。

    • vector(“聪明”)vector(“机智”) 很接近。
  2. 类比关系:这是 Word2Vec 最著名的特性,可以通过向量运算来捕捉词之间的复杂关系。

    • 经典例子
      • vector(“国王”) - vector(“男人”) + vector(“女人”) ≈ vector(“王后”)
      • vector(“巴黎”) - vector(“法国”) + vector(“德国”) ≈ vector(“柏林”)
      • vector(“走”) - vector(“慢”) + vector(“快”) ≈ vector(“跑”)

这证明 Word2Vec 学到的不仅仅是一个词的表示,更是一个结构化的语义空间


五、Word2Vec 的局限性#

尽管开创性强,但 Word2Vec 也有其时代局限性:

  1. 静态嵌入:每个词有且只有一个固定的向量表示,无法解决一词多义问题。例如,“苹果”在“吃苹果”和“苹果手机”中的含义不同,但 Word2Vec 只会给它一个统一的向量。
  2. 未登录词问题:如果遇到训练时没出现过的词,模型无法处理。后来的 FastText 通过引入子词(字符 n-gram)部分解决了这个问题。
  3. 窗口大小限制:只能捕捉到局部窗口内的上下文信息,无法建模长距离依赖和全局语义信息。
  4. 上下文无关:与 BERT 等上下文相关模型相比,这是其最大的短板。

六、Word2Vec 的现代应用与遗产#

虽然如今有 BERT、GPT 等更强大的模型,但 Word2Vec 并未过时:

  • 应用场景

    • 需要快速获取词向量的中小型项目。
    • 作为文本分类、情感分析等任务的特征输入。
    • 推荐系统中物品和用户的嵌入表示。
    • 任何计算资源有限,但又需要词语义信息的场景。
  • 历史地位与遗产

    • 它证明了神经网络可以高效地学习高质量的词表示。
    • 它提出的负采样等训练技巧被后续模型广泛采用。
    • 它开启了“万物皆可嵌入”的时代,思想被延伸到推荐系统、图神经网络等领域。
    • 它是理解现代 NLP 模型演进的重要基石。

总结#

Word2Vec 是一个优雅而强大的模型,它通过“用上下文定义词义”这一简单而深刻的理念,成功地将单词从离散的符号转化为有意义的数学向量。它的 CBOWSkip-gram 架构,以及 负采样分层 Softmax 技巧,共同构成了一套高效的学习框架。尽管已被更先进的模型超越,但其核心思想和技术遗产至今仍在深刻地影响着人工智能领域的发展。

QA#

Word2Vec 目前属于 Embedding 的解决方案对吧,为什么你最后要拿他来对比 BERT 和 GPT, 我理解他们不是处于同一级别的模型,Word2Vec 是用来生成稠密向量空间,用来后续大模型训练的解决方案,而且你为什么管他叫“模型”呢。

您提出了一个非常深刻且切中要害的问题。您的理解在很大程度上是正确的,但这里存在一些概念上的交叉和演进,让我来为您清晰地梳理一下。

您的感觉是对的,将 Word2Vec 与 BERT/GPT 直接对比确实像是在比较“车轮”和“整车”。但为了理解技术是如何发展的,这种对比又非常有价值。

核心问题一:为什么管 Word2Vec 叫“模型”?#

这是一个非常好的起点。我们称 Word2Vec 为“模型”,是因为它本身就是一个完整的、可训练的神经网络

  • 它有明确的输入和输出:输入是单词的 One-Hot 向量,输出是预测另一个单词的概率。
  • 它有定义明确的训练任务:CBOW 是“完形填空”,Skip-gram 是“猜上下文”。
  • 它通过训练来优化参数:这个神经网络的权重(即那些矩阵)就是通过反向传播和梯度下降算法学习得到的。

关键点在于:Word2Vec 训练的目标是完成“词语预测”这个任务,而我们真正想要的“副产品”是训练完成后网络中那个权重矩阵,也就是词向量(Embedding)。

所以,Word2Vec 是一个为了学习Embedding而专门设计的模型


核心问题二:Word2Vec 与 BERT/GPT 的对比——为什么它们可以比?#

您的理解“Word2Vec 是用来生成稠密向量空间,用来后续大模型训练的解决方案”非常准确,这描述的是一种 “两步走”的范式。但这种范式在2018年后已经被很大程度上革新了。

让我们从几个维度来对比:

特性Word2Vec (及 GloVe, FastText)BERT / GPT (代表的大模型)
角色定位专门的 Embedding 模型通用的语言理解/生成模型
输出产物静态的、上下文无关的词向量。一个词在任何地方都是同一个向量。动态的、上下文相关的词表示。同一个词在不同句子中有不同向量。
技术范式“预训练嵌入”“预训练模型”
工作流程1. 用 Word2Vec 单独训练出词向量。
2. 将这些冻结的词向量作为输入,提供给另一个下游任务模型(如LSTM、CNN)进行训练。
1. 在大规模语料上预训练一个巨型模型(BERT/GPT)。
2. 在下游任务中,微调整个模型的所有参数,包括其内部的嵌入表示。
对一词多义的处理。无法区分“苹果手机”和“吃苹果”中的“苹果”。。能根据上下文为“苹果”生成不同的表示。
架构浅层神经网络(通常只有一个隐藏层)。深层的 Transformer 架构(通常有12层、24层甚至更多)。

最根本的区别在于:Embedding 的“地位”发生了变化。

  • 在 Word2Vec 时代:Embedding 是一个独立的、前置的模块。它是一个工具,为你服务。
  • 在 BERT/GPT 时代:Embedding 是这些大模型内部的一个组成部分(通常是模型的第一层)。它不是一个独立的工具,而是模型与生俱来的、在预训练中学会的能力。

一个形象的比喻:

  • Word2Vec 就像一个专业的制砖厂。它只生产高质量的标准砖块(词向量)。建筑队(下游任务模型)拿着这些现成的砖块去盖各种各样的房子。
  • BERT/GPT 就像一个全能的建筑机器人。它不仅自己学会了如何理解泥土和沙石(原始文本),还能在盖特定房子(下游任务)时,就地取材、现场微调,制造出最适合当前这栋房子的、带有上下文信息的“智能砖块”。

结论:您的理解与历史的演进#

  1. 您的理解是正确的:在历史上,Word2Vec 确实被用作生成稠密向量,以供后续模型使用。这是一种“预训练词嵌入”的思路。

  2. 为什么要对比:我们对比它们,是为了说明 NLP 范式的巨大变迁。BERT/GPT 的出现,实际上是将 “学习词表示” 这个任务,从一个独立的、专门的阶段,吸收并内化到了一个更大的、端到端的“预训练-微调”范式之中。

  3. 现代解决方案:在今天,对于绝大多数任务,我们不再需要单独训练一个 Word2Vec 来获取词向量了。因为当我们使用 BERT 或 GPT 时,它们强大的预训练模型内部已经包含了远比 Word2Vec 丰富的语义信息。我们要做的不是“取用”它的词向量,而是**“微调”** 整个模型来适应新任务。

所以,总结来说:

  • Word2Vec 是一个为解决 Embedding 问题而设计的、独立的“模型”
  • BERT/GPT 是内置了动态、上下文感知 Embedding 能力的、更强大的“通用模型”
  • 我们对比它们,是为了展示技术从 “静态词嵌入”“动态上下文表示” 的革命性飞跃。Word2Vec 是那个时代的王者,而 BERT/GPT 是当今时代的霸主,它们代表了不同的技术阶段和哲学。

一个更准确的比喻:

  • Word2Vec 就像是你为了造一辆车,先在外面找了一家专门的轮胎厂(Word2Vec),订购了一套标准轮胎(词向量),然后把这套轮胎装到你的新车上。
  • GPT/BERT 就像是特斯拉这样的公司,它自己就拥有一个顶级的轮胎研发部门(模型内的嵌入层)。这个部门在设计和制造整车(预训练模型)的过程中,会根据整车的要求,自主研发和优化出最适合这辆车的专用轮胎(动态词表示)。你无法把这个轮胎部门从特斯拉公司里剥离出来,说它不是造车的一部分。

总结:#

  1. Word2Vec:是一个独立的、专门的 Embedding 模型。它的产品是“词向量”。
  2. GPT/BERT:是一个内置了 Embedding 层(并会自行优化它)的 通用语言模型。它的产品是“理解和生成语言的能力”。

所以,Embedding 非但不是大模型训练之外的东西,反而是其训练的起点和基石。只是它不再是一个需要我们从外部获取的“零件”,而是模型自身在成长过程中“长出来”的“器官”。

本文共 4586 字,创建于 Oct 22, 2025

相关标签: NLP, Algorithms, ByAI, LLM