Week1-Word2Vec基础知识
参考
- https://www.bilibili.com/video/BV1yq421w7M6?spm_id_from=333.788.player.switch&vd_source=a7cf44ac2fdb9993ed1896efa6c82bb5&p=5
- https://mengbaoliang.cn/archives/81497/
- https://chatgpt.com/share/682b439a-da3c-800f-b7ca-51a55de01ed5
一、Word2Vec 算法背景与目标
在自然语言处理(NLP)中,传统的 “词袋模型”(Bag of Words)将文本看作无序的词汇集合,虽然简单易用,但无法捕捉词与词之间的语义关系,也无法处理词汇的上下文信息。Word2Vec 算法应运而生,它旨在将词语映射为低维、稠密的向量,使得语义相近的词在向量空间中距离较近,从而有效解决上述问题。Word2Vec 包含 CBOW(Continuous Bag of Words,连续词袋模型)和 Skip - gram 两种模型,下面我们来详细了解它们。
二、CBOW 模型
(一)出发点
CBOW 模型基于 “上下文预测当前词” 的思路。它认为一个词的含义可以通过其上下文的词语来推测。例如,在句子 “我喜欢阅读 [书籍]” 中,根据 “我”“喜欢”“阅读” 这些上下文词汇,能够预测出空缺处的词大概率是 “书籍”“文章” 等相关词汇。
(二)算法内容
- 输入层:将上下文词语的 One - Hot 向量作为输入。One - Hot 向量是一种将词语编码为向量的方式,只有对应词语的位置为 1,其余位置为 0。假设词汇表大小为
,那么每个词语的 One - Hot 向量长度就是
。
- 隐藏层:对输入的上下文词语向量进行求和平均操作(或其他聚合方式),得到一个固定维度的隐藏层向量。这一步相当于将多个上下文词语的信息融合到一个向量中。
- 输出层:输出层是一个 Softmax 层,其神经元个数与词汇表大小
相同。隐藏层向量与输出层神经元之间通过权重矩阵
连接,经过 Softmax 函数计算,得到词汇表中每个词作为当前词的概率。目标是最大化预测出真实当前词的概率。
三、Skip - gram 模型
(一)出发点
Skip - gram 模型与 CBOW 模型相反,它是基于 “当前词预测上下文” 的思路。即已知一个词,去预测它周围可能出现的词。例如,已知 “书籍”,Skip - gram 模型会尝试预测出 “阅读”“购买”“收藏” 等可能出现在其上下文的词汇。
(二)算法内容
- 输入层:将当前词的 One - Hot 向量作为输入。
- 隐藏层:输入的 One - Hot 向量与隐藏层和输入层之间的权重矩阵
相乘,得到隐藏层向量。
- 输出层:同样是 Softmax 层,隐藏层向量与输出层神经元之间通过权重矩阵
连接,经过 Softmax 函数计算,得到词汇表中每个词作为上下文词的概率。模型训练的目标是最大化预测出真实上下文词的概率。
四、Word2Vec 的加速技巧
(一)Hierarchical Softmax
- 出发点:在 CBOW 和 Skip - gram 模型中,输出层使用 Softmax 函数计算所有词的概率,计算量与词汇表大小
成正比,当
很大时,计算效率很低。Hierarchical Softmax 通过构建二叉树结构来降低计算复杂度。
- 算法内容:将词汇表中的词组织成一棵二叉树,树的叶子节点是词汇表中的词,非叶子节点是一个二分类器。从根节点到叶子节点的路径对应着对某个词的预测过程,每次在非叶子节点进行二分类决策,向左或向右走。这样,预测一个词的概率只需要进行
次计算,大大减少了计算量。
(二)Negative Sampling
- 出发点:和 Hierarchical Softmax 类似,也是为了减少 Softmax 计算量。Negative Sampling 不构建二叉树,而是通过随机采样一些负样本(非真实上下文词)来简化计算。
- 算法内容:在训练过程中,对于每个正样本(真实上下文词),根据一定的采样策略随机选取若干个负样本。模型的目标变为最大化正样本的概率,同时最小化负样本的概率。通过这种方式,将原本对所有词的 Softmax 计算转化为对少量样本的计算,提高了训练效率。
(三)Sub - sampling 高频词
- 出发点:在语料库中,一些高频词(如 “的”“了”“是” 等)出现频率过高,它们对模型学习语义信息的帮助较小,反而可能影响模型对其他重要词汇的学习,并且增加训练时间。Sub - sampling 高频词技术用于降低高频词的出现频率。
- 算法内容:对于每个词
,根据其出现频率
,按照一定的公式计算保留该词的概率
,公式通常为
(其中
是一个预设的阈值,通常为
左右)。然后根据这个概率对每个词进行随机丢弃,从而减少高频词在训练数据中的出现次数,提高模型训练效率和效果。

浙公网安备 33010602011771号