14.2.2 层序softmax

在层序softmax中,不是只有叶子节点才代表一个词元吗?那么为什么计算条件概率的时候要去看非叶子节点?非叶子节点代表什么?为什么非叶子节点有词向量?对此,deepseek的解释如下
在层序Softmax(Hierarchical Softmax)中,非叶子节点虽然不直接代表词元,但它们通过构建二叉树的路径结构来间接影响词元的概率计算。以下是逐步解释:


1. 层序Softmax的基本结构

  • 二叉树构建:词表中的每个词元(叶子节点)被组织成一棵二叉树(通常为哈夫曼树,按词频构建)。
  • 节点角色
    • 叶子节点:每个叶子节点唯一对应一个词元。
    • 非叶子节点:作为路径中的决策点,每个非叶子节点存储一个向量,用于计算路径选择的概率。

2. 非叶子节点的作用

  • 路径决策
    预测某个词时,从根节点到该词对应叶子节点的路径上,每一步需要选择向左或向右子树移动。非叶子节点的向量用于计算这些路径选择的概率

    • 例如,非叶子节点 $ n $ 的向量 $ \mathbf{v}_n $ 与中心词向量 $ \mathbf{v}_c $ 计算点积,通过逻辑函数(如sigmoid)得到向左子树的概率:

      \[P(\text{左} | n, \mathbf{v}_c) = \sigma(\mathbf{v}_n^\top \mathbf{v}_c) \]

    • 向右的概率则为 $ 1 - \sigma(\mathbf{v}_n^\top \mathbf{v}_c) $。
  • 路径概率的乘积
    从根节点到目标叶子节点的路径上,所有非叶子节点的条件概率相乘,得到该词元的最终预测概率:

    \[P(w_o | w_c) = \prod_{n \in \text{Path}(w_o)} P(\text{dir}(n) | n, \mathbf{v}_c) \]

    其中,$ \text{Path}(w_o) $ 是路径上的非叶子节点集合,$ \text{dir}(n) $ 表示在节点 $ n $ 处的方向(左/右)。


3. 非叶子节点向量的意义

  • 决策参数
    非叶子节点的向量 $ \mathbf{v}_n $ 是模型需要学习的参数,它们不直接表示某个词,而是编码了“如何根据中心词 $ w_c $ 选择路径方向”。

    • 例如,若某非叶子节点的向量与中心词向量点积较大,模型会更倾向于向左子树移动。
  • 与词向量的区别

    • 叶子节点:直接关联词元的向量(如Skip-Gram中的输入向量 $ \mathbf{v}_w $)。
    • 非叶子节点:仅用于路径决策的辅助向量,与词义无关,本质是二分类器的权重。

4. 为什么需要非叶子节点的向量?

  • 降低计算复杂度
    传统Softmax需要对所有词计算归一化概率,复杂度为 $ O(|V|) $。层序Softmax通过二叉树路径将复杂度降至 $ O(\log |V|) $,每一步只需计算一个二分类概率。

    • 每个二分类步骤依赖非叶子节点的向量来建模决策边界。
  • 分解多分类问题
    将全局的多分类问题(所有词的概率)分解为多个局部二分类问题(路径上的方向选择),每个二分类由非叶子节点的向量参数化。


5. 示例说明

假设词表为 {A, B, C, D},构建的二叉树如下:

        Root
       /   \
      n1    n2
     / \   / \
    A  B  C  D
  • 预测词 A 时,路径为 Root → n1 → A。
  • Root 处,用向量 $ \mathbf{v}_{\text{Root}} $ 计算向左(n1)的概率:

    \[P(\text{左} | \text{Root}, \mathbf{v}_c) = \sigma(\mathbf{v}_{\text{Root}}^\top \mathbf{v}_c) \]

  • n1 处,用向量 $ \mathbf{v}_{n1} $ 计算向左(A)的概率:

    \[P(\text{左} | n1, \mathbf{v}_c) = \sigma(\mathbf{v}_{n1}^\top \mathbf{v}_c) \]

  • 最终概率为两者的乘积:

    \[P(A | w_c) = \sigma(\mathbf{v}_{\text{Root}}^\top \mathbf{v}_c) \cdot \sigma(\mathbf{v}_{n1}^\top \mathbf{v}_c) \]


6. 非叶子节点向量的训练

  • 反向传播
    训练时,模型根据目标词的真实路径调整非叶子节点的向量:
    • 若路径在某个节点应向左,则增大 $ \sigma(\mathbf{v}_n^\top \mathbf{v}_c) $;
    • 反之则减小该概率。
  • 参数更新
    非叶子节点的向量通过梯度下降更新,以最大化正确路径的概率。

总结

  • 非叶子节点不直接代表词元,而是路径决策的中间节点,其向量用于建模路径选择的概率。
  • 计算条件概率时需涉及非叶子节点:因为词元的最终概率是路径上所有节点决策概率的乘积。
  • 非叶子节点的向量本质是二分类器参数,与词义无关,但通过训练可有效指导路径选择。

那么这种构造二叉树的方式如何从直观上理解呢?实际上,这个东西就没有什么道理,之所以构造二叉树,纯粹是因为要降低复杂度。如果说负采样变化了优化目标的话,层序softmax啥也没变化,只是为了加速,或者说,这么计算出来的嵌入向量,可能根本不能让跳元模型的损失函数最小化。简而言之,就是找到了一种计算比较快的方法还可以联系中心词和上下文词,所以就用层序softmax了

吴恩达视频P173还讲了他的理解,但是我觉得也没有什么道理

posted @ 2025-03-05 19:35  最爱丁珰  阅读(44)  评论(0)    收藏  举报