在常见的自然语言处理系统中,单词的编码往往是任意的,这意味着系统无法获取符号间存在的潜在关联信息,同时也会导致数据稀疏的问题。为了克服这些问题,我们可以使用向量来表示词语。本文将通过推理、实例和数学公式来介绍如何通过 Word2Vec 模型从原始文本中学习词嵌入。
引言
Word2Vec 模型是一种学习词嵌入表示的方法,通常应用于预处理阶段。通过这种方式学习到的词嵌入可以被进一步用于判别模型(如循环神经网络)中,以生成预测或解决其他有趣的问题。
为何要学习词嵌入
在图像和音频处理系统中,数据通常被编码为原始像素强度或声音信号,因此所有信息都集中在数据中,便于系统识别不同实体之间的关系(如猫和狗)。然而,在传统自然语言处理系统中,单词被视为独立的符号,缺乏内在联系。例如,“猫”可能被编码为 Id537,而“狗”则被编码为 Id143。这种编码方式是任意的,无法传达单词间的关联信息,也容易导致数据稀疏问题。
词嵌入
为了克服这些问题,我们可以采用词嵌入的方法,将每个单词表示为一个向量。假设我们有一个句子,可以为每个单词构建一个向量表示。为了填充这些向量值,我们可以使用共现矩阵,该矩阵记录了每个单词在另一个单词出现时的统计信息。例如,通过共现矩阵可以发现“love”和“like”两个词与名词“NLP”和“dogs”的共现次数均为1,这表明这些词可能是动词。对于更大的数据集,这种相似性将更为明显,因为同义词会逐渐形成相似的向量表示。
Word2Vec 模型
Word2Vec 是一种高效的词嵌入学习方法。它有两种实现方式:连续词袋模型(CBOW)和 Skip-Gram 模型。CBOW 模型通过上下文预测目标词,而 Skip-Gram 模型则相反,它根据目标词预测上下文。本文主要介绍 Skip-Gram 模型。
数学原理
Skip-Gram 模型使用最大似然估计来训练模型,目标是最大化给定上下文时目标词的条件概率。通过最大化对数似然函数,我们可以训练模型以获得最佳参数。具体而言,我们希望找到一组参数,使得在整个语料库中,目标词在一定窗口范围内出现的概率最大化。
基本参数化:Softmax 模型
Skip-Gram 模型的基本形式是通过 Softmax 函数计算概率。如果词汇表中有 N 个词,而我们希望学习的嵌入向量维度为 k,则可以定义 wi 为 N 维的 one-hot 向量,θ 为一个 N×K 的嵌入矩阵。在训练完成后,θ 可以被视为嵌入查找矩阵。
提高计算效率
对于 Word2Vec 中的特征学习,我们不需要完整的概率模型。CBOW 和 Skip-Gram 模型通常使用二元分类目标(逻辑回归)来训练,目标是在相同的上下文中区分真实目标词和 k 个伪噪声词。通过这种方法,我们可以在保证训练效果的同时提高计算效率。
Skip-Gram 模型示例
以以下句子为例:“the quick brown fox jumped over the lazy dog”。我们首先构建一个包含所有单词及其上下文的数据集。假设窗口大小为1,我们可以得到如下数据集: ([the, brown], quick), ([quick, fox], brown), ([brown, jumped], fox), ...
Skip-Gram 模型会颠倒上下文和目标,试图根据目标词预测每个上下文词。例如,从“quick”预测“the”和“brown”,从“brown”预测“quick”和“fox”。
在训练过程中,我们通过随机梯度下降(SGD)方法逐步优化模型参数。通过这种方式,模型可以逐渐学会区分真实词和噪声词,最终得到有效的词嵌入向量。
总结
通过 Word2Vec 模型,我们可以有效地学习词嵌入表示,从而更好地捕捉单词之间的语义信息和关系。这种方法不仅提高了计算效率,还能在多种自然语言处理任务中发挥重要作用。
原文链接:https://towardsdatascience.com/word2vec-a-baby-step-in-deep-learning-but-a-giant-leap-towards-natural-language-processing-40fe4e8602ba