Word2Vec:序列建模的理论基础 ============================ Word2Vec :cite:`mikolov2013distributed` 的成功建立在一个简单而深刻的假设之上:在相似语境中出现的词语往往具有相似的含义。通过分析海量文本中词语的共现模式,我们可以为每个词学习一个稠密的向量表示,使得语义相近的词在向量空间中距离更近。 Word2Vec主要包含两种模型架构:\ **Skip-Gram**\ 和\ **CBOW**\ (Continuous Bag of Words)。Skip-Gram模型通过给定的中心词来预测其周围的上下文词,而CBOW模型则相反,通过上下文词来预测中心词。在推荐系统中,Skip-Gram模型由于其更好的性能表现而被更广泛地采用。 Skip-Gram模型详解 ----------------- .. _w2v_skip_gram: .. figure:: ../../img/w2v_skip_gram.svg :width: 300px Word2Vec Skip-Gram模型示意图 在Skip-Gram模型中,给定文本序列中位置\ :math:`t`\ 的中心词\ :math:`w_t`\ ,模型的目标是最大化其上下文窗口内所有词语的出现概率。具体而言,对于窗口大小为\ :math:`m`\ 的情况,模型要预测\ :math:`w_{t-m}, w_{t-m+1}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+m}`\ 这些上下文词的概率。 中心词\ :math:`w_t`\ 预测上下文词\ :math:`w_{t+j}`\ 的条件概率定义为: .. math:: P(w_{t+j} | w_t) = \frac{e^{v_{w_{t+j}}^T v_{w_t}}}{\sum_{k=1}^{|V|} e^{v_{w_k}^T v_{w_t}}} 其中\ :math:`v_{w_i}`\ 表示词\ :math:`w_i`\ 的向量表示,\ :math:`V`\ 是词汇表。这个softmax公式确保了所有词的概率之和为1,而分子中的内积\ :math:`v_{w_{t+j}}^T v_{w_t}`\ 衡量了中心词与上下文词的相似度。 负采样优化 ---------- 直接计算上述softmax的分母需要遍历整个词汇表,在实际应用中计算代价过高。为了解决这个问题,Word2Vec采用了负采样(Negative Sampling)技术。这种方法将原本的多分类问题转化为多个二分类问题: .. math:: \log \sigma(v_{w_{t+j}}^T v_{w_t}) + \sum_{i=1}^{k} \mathbb{E}_{w_i \sim P_n(w)} \log \sigma(-v_{w_i}^T v_{w_t}) 其中\ :math:`\sigma(x) = \frac{1}{1 + e^{-x}}`\ 是sigmoid函数,\ :math:`k`\ 是负样本数量,\ :math:`P_n(w)`\ 是负采样分布。负采样的直观解释是:对于真实的词对,我们希望增加它们的相似度;对于随机采样的负样本词对,我们希望降低它们的相似度。 这种优化策略不仅大幅提升了训练效率,还为后续推荐系统中的模型训练提供了重要的技术范式。当我们将这一思想迁移到推荐领域时,“词语”变成了“物品”,“句子”变成了“用户行为序列”,但核心的序列建模思想保持不变。