一、 Embedding类与word2vec模型的区别
在自然语言处理里,使用 Embedding 和 Word2Vec 模型来获取词向量,二者存在多方面差异,以下从概念、训练方式、上下文感知能力、数据依赖和泛化性、应用场景几个维度为你详细介绍:
概念层面
- Embedding:是一种广义的概念,指的是把离散对象(像单词、物品、类别等)映射到连续向量空间的技术统称。它可以借助多种方法来实现,既可以是在特定任务中从零开始训练,也能使用预训练好的向量。在深度学习模型中,Embedding 通常表现为一个嵌入层,它会把输入的离散索引转换为对应的向量表示。
- Word2Vec:是一种专门用于生成词向量的具体模型。它基于神经网络架构,通过学习文本里单词的上下文信息,将单词表示成向量形式,让语义相近的单词在向量空间中的距离较近。
训练方式
- Embedding:训练方式灵活多样。它既可以在特定任务的模型训练过程中进行端到端的学习,也就是和模型的其他部分一起训练,让嵌入向量能够适配具体任务。例如在文本分类任务中,嵌入层的参数会和分类层的参数一同更新。此外,也可以使用预训练的嵌入向量,再根据具体任务进行微调。
- Word2Vec:主要有连续词袋模型(CBOW)和跳字模型(Skip - gram)这两种训练模式。CBOW 依据上下文单词来预测中心单词;Skip - gram 则通过中心单词来预测上下文单词。训练时通常使用大规模的无监督文本数据,并且会运用负采样或层次 Softmax 等优化技巧来提高训练效率。
上下文感知能力
- Embedding:在不同的实现方式下,上下文感知能力有所不同。静态的 Embedding(如预训练的 GloVe)和 Word2Vec 类似,每个单词只有一个固定的向量表示,不考虑上下文。而动态的 Embedding(如 BERT 中的词嵌入)能够根据单词所处的上下文生成不同的向量表示,从而更好地捕捉语义信息。
- Word2Vec:学习到的是单词的静态向量表示,不考虑单词在不同上下文中的语义变化。例如,“苹果” 这个词在 “苹果手机” 和 “苹果公司” 中的语义不同,但 Word2Vec 会为其生成相同的向量表示。
数据依赖和泛化性
- Embedding:如果是在特定任务上进行训练,可能会更依赖于该任务的数据,在该任务上的表现可能更好,但泛化性可能较差。而使用预训练的 Embedding,由于其在大规模数据上进行了训练,通常具有较好的泛化性,但可能需要针对具体任务进行微调。
- Word2Vec:依赖于大规模的无监督文本数据进行训练,能够学习到单词的通用语义信息,具有较好的泛化性。但对于低频单词,可能无法学习到有效的向量表示,因为这些单词在训练数据中出现的次数较少。
应用场景
- Embedding:应用范围广泛,不仅可用于自然语言处理,还能用于计算机视觉、推荐系统等领域。在自然语言处理中,Embedding 可用于文本分类、情感分析、机器翻译等任务;在推荐系统中,可用于用户和物品的表示,实现个性化推荐;在计算机视觉中,可将图像特征嵌入到向量空间,用于图像检索和分类。
- Word2Vec:主要应用于自然语言处理中的各类任务,如词语相似度计算、文本聚类、信息检索等。例如,在词语相似度计算中,可通过计算两个词向量之间的余弦相似度来判断它们的语义相似程度;在文本聚类中,可将文档中的单词表示为向量,再通过向量的相似度对文档进行聚类。
二、CBOW模型和Skip-gram模型
CBOW(Continuous Bag-of-Words)模型和 Skip - gram 模型是 Word2Vec 算法中用于学习词向量的两种核心架构,下面将从原理、结构、优缺点和适用场景等方面对它们进行详细介绍。
原理
- CBOW 模型:基于上下文预测中心词。其核心思想是认为一个词的含义可以由其周围的上下文词来推断。例如,在句子 “The quick brown fox jumps over the lazy dog” 中,如果我们把 “fox” 作为中心词,其上下文词可以是 “The”、“quick”、“brown”、“jumps”、“over” ,CBOW 模型就是要根据这些上下文词来预测中心词 “fox”。
- Skip - gram 模型:基于中心词预测上下文词。它假设一个词能够很好地代表其周围的上下文信息。还是以上述句子为例,Skip - gram 模型会根据中心词 “fox” 来预测其上下文词 “The”、“quick”、“brown”、“jumps”、“over”。
结构
- CBOW 模型:包含输入层、隐藏层和输出层。
- 输入层:接收上下文单词的 one - hot 编码表示。假设词汇表大小为 V,每个上下文词的 one - hot 向量就是一个长度为 V 的向量,其中只有对应单词的位置为 1,其余位置为 0。
- 隐藏层:对输入层的上下文词向量进行线性变换。通常是将所有上下文词向量求和并取平均,然后通过一个权重矩阵
(N 是词向量的维度)映射到隐藏层,得到一个长度为 N 的向量。
- 输出层:使用 softmax 函数计算每个单词作为中心单词的概率。通过另一个权重矩阵
将隐藏层向量映射到输出层,输出层的每个位置对应词汇表中的一个单词,其值表示该单词作为中心词的概率。
- Skip - gram 模型:同样由输入层、隐藏层和输出层构成。
- 输入层:接收中心单词的 one - hot 编码表示。
- 隐藏层:通过权重矩阵
将输入的中心词 one - hot 向量映射到隐藏层,得到一个长度为 N 的向量。
- 输出层:使用 softmax 函数计算每个单词作为上下文单词的概率。通过权重矩阵
将隐藏层向量映射到输出层,输出层每个位置对应词汇表中的一个单词,其值表示该单词作为上下文词的概率。
优缺点
- CBOW 模型
- 优点:
- 训练速度快。由于是基于多个上下文词来预测一个中心词,数据的利用效率较高,训练时的计算量相对较小。
- 对于高频词有较好的表现。在处理高频词时,能够更准确地学习到其向量表示。
- 缺点:
- 对上下文信息的利用不够充分。在将上下文词向量求和取平均的过程中,会丢失一些上下文词的顺序和位置信息。
- 对于低频词的学习效果相对较差。因为低频词在训练数据中出现的次数较少,模型难以从有限的样本中学习到其准确的语义信息。
- 优点:
- Skip - gram 模型
- 优点:
- 能够更好地捕捉单词的上下文信息。由于是基于中心词预测多个上下文词,模型可以学习到更丰富的上下文信息,对于语义的理解更加准确。
- 对低频词的学习效果较好。因为它会对每个中心词和其上下文词的组合进行训练,低频词也有更多的机会参与训练。
- 缺点:
- 训练速度慢。由于需要预测多个上下文词,训练时的计算量较大,尤其是在词汇表较大的情况下,训练时间会显著增加。
- 数据利用率相对较低。相比于 CBOW 模型,Skip - gram 模型需要更多的训练数据才能达到较好的效果。
- 优点:
适用场景
- CBOW 模型:适用于对训练速度要求较高,且文本中高频词较多的场景,例如大规模文本的快速处理、对实时性要求较高的任务等。
- Skip - gram 模型:适用于需要更精确地捕捉单词语义信息,尤其是低频词较多的场景,例如专业领域的文本处理、知识图谱的构建等。