Word2Vec 是一种非常重要的自然语言处理技术,它通过神经网络模型将词语转换为向量(通常称为“词向量”)。这些词向量能够捕捉到词语之间的语义关系,例如同义词、反义词或其他语义相似性。Word2Vec 是由 Tomas Mikolov 和他的团队在 Google 提出的,并且成为了 NLP 领域的基础技术之一。
这个blog写的更具体,复习用: 如何通俗理解Word2Vec。
Word2Vec 的基本概念
Word2Vec 的目标是通过一个词语的上下文来学习该词的向量表示。它的核心思想是,如果两个词出现在相似的上下文中,它们的向量也应该相似。通过这种方式,模型学习到的词向量能够反映出词语间的语义关系。
Word2Vec 的模型架构
Word2Vec 有两种常见的训练模型:
-
连续词袋模型(CBOW, Continuous Bag of Words)
在这个模型中,给定一个上下文词汇(上下文窗口中的词),模型的任务是预测该上下文中间的目标词(即当前词)。例如,给定一个句子:“The cat sits on the mat”,在窗口大小为 2 的情况下,模型会利用 “The”, “cat”, “on”, “the”, “mat” 来预测中间的目标词 “sits”。具体来说,CBOW 模型通过上下文词的平均值来预测目标词的向量。它会尝试最小化预测误差,使得给定的上下文词能有效地推测出中心词。
-
跳字模型(Skip-gram)
这是 Word2Vec 的另一种模型,它的任务是给定一个词,预测它周围的上下文词。也就是说,给定中心词(比如 “sits”),模型会预测上下文中的词(例如 “The”, “cat”, “on”, “the”, “mat”)。跳字模型的特点是通过一个词来预测多个上下文词,而不是相反。这使得跳字模型在处理稀有词或较小语料库时,表现得更好。
Word2Vec 的工作原理
Word2Vec 的训练过程基于神经网络,通常是一个浅层的前馈神经网络,具有一个输入层、一个隐藏层和一个输出层。训练目标是通过调整神经网络的权重,使得词向量能够准确地表示词与词之间的语义关系。
-
输入层:每个词语都通过词典映射为一个独热向量(one-hot vector)。在 CBOW 模型中,输入层接受多个上下文词的独热向量;在跳字模型中,输入层只接受一个中心词的独热向量。
-
隐藏层:输入的独热向量会被送入一个隐藏层。在这个隐藏层中,神经网络学习到每个词的向量表示(即词向量),这些向量会作为模型的输出。值得注意的是,隐藏层只是一个简单的线性变换。
-
输出层:输出层会预测目标词(CBOW 模型)或者上下文词(跳字模型)。输出层会计算一个 softmax 函数的概率分布,用于生成每个词在给定上下文中的概率。
-
优化目标:Word2Vec 的目标是最小化预测误差,通常使用 负采样(Negative Sampling) 或 层次 softmax 来提高训练效率,尤其是在词汇表非常大的情况下。
Word2Vec 的优点
- 高效性:Word2Vec 能够在大量文本数据上进行训练,生成高质量的词向量。尽管词汇表庞大,但模型的训练速度较快。
- 捕捉语义关系:Word2Vec 能够捕捉到词汇之间的语义关系。比如,“king” 和 “queen” 在语义上是相似的,并且通过向量操作(例如
king - man + woman = queen
)能够获得语义上合理的推理结果。 - 语境敏感:与传统的基于词典的词嵌入方法(如 TF-IDF)不同,Word2Vec 能够基于语境来学习词的向量表示。不同上下文中的同一个词会有不同的表示。
Word2Vec 的缺点
- 无法处理多义词:Word2Vec 生成的词向量对词语的多义性处理不足。例如,“bank” 既可以指银行,又可以指河岸,但 Word2Vec 只会为它提供一个固定的词向量,无法区分这些不同的含义。
- 固定词向量:Word2Vec 生成的词向量是静态的,也就是说,每个词在所有上下文中都有同样的表示,这在处理一些复杂的语义关系时可能会有局限性。对于多义词、同义词等,词向量可能不能完全捕捉其多样性。
小结
Word2Vec 是一种通过神经网络学习词语向量的技术,具有高效的训练过程和强大的语义表达能力。尽管它有一些局限性(如无法处理多义词),但它在许多 NLP 任务中仍然是一项基础技术。随着技术的发展,越来越多的模型(如 GloVe、BERT 等)在此基础上进行了改进,进一步提高了语言模型的效果。