理解 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:当 时(所有其他背景词向量)
此时 。代入通项公式:
-
物理意义:这是一个正向梯度。在更新(减去梯度)时,会从 中减去 的分量。这会把错误词向量推离中心词。
夜雨聆风