词嵌入模型

📅 2026/8/20 13:58:33
词嵌入模型
接下来讲解如何通过学习来获得词嵌入特征。词嵌入模型可以看作是最早期的“预训练“模型通过设计无需额外标注的学习任务在海量的文本数据中学习语义特征。而在得到了好的语义特征表示之后下游的各种NLP任务只需要相对少量的训练数据就可以得到理想的结果。重点介绍Word2Vec这种词嵌入技术它的优势是轻量、训练速度快在一些文本分类任务上效果也不错。1.训练任务Word2Vec的训练基于局部上下文窗口文本被滑动窗口切分为多个片段每个片段即为一个训练样本。Word2Vec有两种学习任务1.1.CBOW用左、右两边的词预测中间的词。如左图所示的特征向量被加在一起作为预测中间词w(t)的特征。设w的词向量为则CBOW的计算公式为其中V为词典。CBOW的输出层实质上是SoftMax层每个输出节点对应vocab中的一个词一共有|V|个输出节点。每个输出节点所对应的权重向量为。CBOW训练的损失函数是负对数似然函数1.2.Skip-Gram用中间的词预测左、右两边的词。如右图所示w(t)的特征向量分别用于预测。计算公式为Skip-Gram的损失函数同样是负对数似然函数2.SoftMax层的快速计算Word2Vec的计算量集中在SoftMax层。对于CBOWSoftMax层的计算复杂度为(|V|的典型大小为10万)对于Skip-GramSoftMax层的计算复杂度为。Word2Vec提出了两种方法来减小SoftMax层的计算复杂度。2.1.Hierarchical SoftMaxHierarhical SoftMax的思路是构建一个二叉树其中每个叶子节点代表vocab中的一个词条也就是SoftMax层的输出节点。从根节点到w的路径可以由一个二进制串来表示在每个非叶子节点如果路径接下来要经过它的左子节点则在二进制串的末尾添加1否则添加0。例如在下图的示例中What : 111 Im : 110 Horse : 101 Why : 100 Huh : 011 No : 010 Yes : 110 Sup : 000我们用L(w)表示w的路径长度n(w,j)表示路径上的第j个节点。显然每个非叶子节点n都对应一个逻辑回归模型用于预测ch(n(w,j))表示样本接下来将会选择的路径 (左子节点还是右子节点)。那么由预测的概率为这样SoftMax计算的复杂度由减小为。具体某个样本的计算量大小取决于L(w)。二叉树可以采用霍夫曼树的构建方式高频词的路径短低频词的路径长因而在训练时总的计算量最小。2.2.Negative Sampling另一种降低SoftMax层计算复杂度的方法是将SoftMax转化为多个Sigmoid的计算。首先介绍NCE (Noise Contrastive Estimation) 损失函数其中是噪音采样的概率分布可以基于词频的3/4词幂来近似即负样本的采样数一般为正样本数的5~20倍。总结起来Negative Sampling的做法是将多分类问题转化为多个二类分类问题 词表包含多少词就有多少个二类分类模型每个样本提供了其中一个二分类模型的正样本以及其他所有二类分类问题的负样本。对于每个训练样本不计算它所有模型的输出只计算部分模型该样本作为正样本的二类分类模型。对于所有作为负样本的二类分类模型随机采样k个进行计算。训练loss里只包含2中计算过的模型loss。Negative Sampling只能节约训练过程中的计算量。3.Word2Vec词嵌入的性质Word2Vec学习出来的词嵌入向量能够反映出词之间的语义关系。如下图所示国家 - 首都 在特征空间的相对位置关系是类似的可以推导出这样的关系RussiaChina-BeijingMoscow