乐于分享
好东西不私藏

理解 word2vec

理解 word2vec

Word2Vec 中的词对概率分布(Conditional Probability Distribution):

:在已知“中心词”是  的情况下,预测其周围“外部词”恰好是  的概率。

 (Outside Vector):这是单词  作为外部词时的向量表达 。它存储在矩阵  的对应列中 。

 (Center Vector):这是单词  作为中心词时的向量表达 。它存储在矩阵  的对应列中 。

:点积越大,代表这两个词在语义空间中越接近。

:通过除以这个总和,确保所有单词的预测概率加起来严格等于 

Naive Softmax 损失函数(Loss for a single pair of words):

:在机器学习中, 是我们要通过优化算法(如梯度下降)来“最小化”的损失函数。

  •  是这个损失函数的特定名称,指它使用了最原始、未经优化的 Softmax 方式(相对于后来为了加速而发明的负采样 Negative Sampling)。

:这是  所依赖的三个输入变量,改动其中任何一个,损失值都会变:

  • :当前的中心词向量。
  • :真实观察到的背景词索引(即正确答案)。
  • :包含所有单词作为背景词时的向量矩阵。

如果预测很准 接近 1Loss接近 0

如果预测很差 接近 0 会变成一个巨大的正数  Loss非常大


Q1. 证明 Naive-softmax 损失(公式 2)与  和  之间的交叉熵损失(cross-entropy loss)是相同的。

(请注意  是真实分布, 是预测分布,它们都是向量;而  是一个标量)

也就是证明:

第一步到第二步:利用了真实标签  是 One-hot 向量的特性。因为只有 ,其余 ,所以求和号中除了  的那一项,全部消失了。

第二步到第三步:根据预测分布  的定义,其第  个元素  正好等于 。带入负对数后,结果完全等同于公式 (2) 定义的 Naive-Softmax 损失。


Q2.(1) 计算  对  (中心词) 的偏导数。

1. 定义与损失函数化简损失函数  定义为:

设 ,代入上式并利用对数性质展开:

2. 第一层:对中间变量  求导根据链式法则,我们需要先求 。分两种情况讨论:

  • 情况 a:当  时(对正确词得分求导)

  • 情况 b:当  时(对错误词得分求导)

  • 统一结论:利用 One-hot 向量 (仅在  时为 1),上述结果可统一写为:

3. 第二层:应用链式法则求 

由于 ,则 。代入得:

4. 向量化最终形式 (Vectorized Form)将求和形式转换为矩阵与向量相乘:


Q3. (1) 写出  对  的偏导数。

(2) 计算  对每一个“背景”词向量  的偏导数。这里需要分为两种情况讨论:当 (即真实的背景词向量)时,以及当 (即所有其他词的向量)时。

与Q2的推导类似

1. 定义与损失函数化简损失函数  定义为:

设 ,代入上式并利用对数性质展开:

2. 第一层:对中间变量  求导根据链式法则,我们需要先求 。分两种情况讨论:

  • 情况 a:当  时(对正确词得分求导)

  • 情况 b:当  时(对错误词得分求导)

  • 统一结论:利用 One-hot 向量 (仅在  时为 1),上述结果可统一写为:

3. 第二层:应用链式法则求 

由于 ,则 。代入得:

4. 分情况讨论

情况 1:当  时(真实的背景词向量)

此时 。代入通项公式:

  • 物理意义:因为  是个负数,在梯度下降更新(减去梯度)时,实际上是在  上加上  的分量。这会把正确词向量拉向中心词。

情况 2:当  时(所有其他背景词向量)

此时 。代入通项公式:

  • 物理意义:这是一个正向梯度。在更新(减去梯度)时,会从  中减去  的分量。这会把错误词向量推离中心词。