Math——多项式分布下的熵变化详细讨论


整体问题描述

  • 核心问题:在基于 Softmax 归一化的 Category 分布(多项式分布)中,单独压低或提升某一个类别的概率,系统总熵如何变化
  • 本文内容:根据 Softmax 的一个重要数学性质,对熵进行分解求导,最后进行分类讨论
  • 基本结论:这种情况下,总熵的变化并不是单调的 ,而是取决于该类别当前的概率大小以及剩余类别的分布混乱程度
  • 更精确的结论前置与直观理解
    • 前提:在 Softmax 分布下调整单一类别的概率
    • 1)如果调整的类别概率非常大(大于 \(0.5\)),压低它必然增熵 ,提升它必然减熵
    • 2)如果调整的类别概率非常小(小于 \(1/n\)),提升它必然增熵 ,压低它必然减熵
    • 3)如果它的概率处于中间地带(在 \(1/n\) 到 \(0.5\) 之间),需要计算剩余类别的熵 \(H_\text{rest}\) 来确定临界点 \(p^*\),再判断它是减熵还是增熵
  • 新补充:其他常用直观结论(比如 LLM 场景):
    • 当一个类别很多得分布,且某个类别概率非常大时(比如大于 0.9),只要不是压低这个概率,压低其他任何概率都会降低熵

整体推导

Softmax 性质:调整单类的隐含前提

  • 假设有 \(n\) 个类别,其 Logits 为
    $$z_1, z_2, \dots, z_n$$
    • 通过 Softmax 计算出的概率分布为
      $$P = (p_1, p_2, \dots, p_n), \\ p_i = \frac{e^{z_i}}{\sum e^{z_k}}$$
  • 如果想要提升或压低类别 1 的概率 \(p_1\)(通常是通过改变 \(z_1\) 来实现)
  • 根据 Softmax 的性质,压低类别 1 的概率前后,若假设其他类别的 Logits 没有变化,则 剩余类别 \(p_2, \dots, p_n\) 之间的相对比例会保持不变
  • 也就是说,如果令剩余类别的总概率为 \(1 - p_1\),那么对于 \(j \ge 2\),有:
    $$p_j = (1 - p_1) \cdot r_j$$
    • 其中 \(r_j = \frac{p_j}{1-p_1} = \frac{e^{z_j}}{\sum_{k=2}^n e^{z_k}}\) 是类别 \(j\) 在剩余类别中的相对占比,且满足
      $$\sum_{j=2}^n r_j = 1$$
  • 在调整 \(p_1\) 的过程中,所有的 \(r_j\) 都是常数
    • 因为调整 \(p_1\) 的过程中 \(p_j\) 也会发生变化
    • 详细证明见附录

系统总熵的数学推导与分解

  • 系统总熵(使用自然对数)定义为:
    $$H(P) = -\sum_{i=1}^n p_i \ln p_i$$
  • 将 \(p_1\) 单独剥离出来,并将 \(p_j = (1 - p_1) r_j\) 代入求和式中:
    $$
    \begin{align}
    H(P) &= -p_1 \ln p_1 - \sum_{j=2}^n \left[ (1-p_1)r_j \ln\big((1-p_1)r_j\big) \right] \\
    &= -p_1 \ln p_1 - (1-p_1) \sum_{j=2}^n r_j \big[ \ln(1-p_1) + \ln r_j \big]
    \end{align}
    $$
  • 因为 \(\sum_{j=2}^n r_j = 1\),上式可以化简为:
    $$H(P) = \underbrace{-p_1 \ln p_1 - (1-p_1)\ln(1-p_1)}_{\text{二元分类熵 } H_{binary}(p_1)} + (1-p_1) \underbrace{\left( -\sum_{j=2}^n r_j \ln r_j \right)}_{\text{剩余类别的内部熵 } H_\text{rest}}$$

  • $$H_\text{rest} = -\sum_{j=2}^n r_j \ln r_j$$
  • 由于在调整 \(p_1\) 时 \(r_j\) 不变,所以 \(H_\text{rest}\) 是一个常数
    • 注意:这里剩余内部熵是与 \(p_1\) 无关的,
  • 此时,总熵被完美分解为一个关于 \(p_1\) 的函数:
    $$H(p_1) = H_{binary}(p_1) + (1-p_1)H_\text{rest}$$

对 \(p_1\) 求导,寻找临界点

  • 为了知道提升或压低 \(p_1\) 时熵怎么变,我们对 \(p_1\) 求导:
    $$
    \begin{align}
    \frac{dH}{dp_1} &= \frac{d}{dp_1} \left[ -p_1 \ln p_1 - (1-p_1)\ln(1-p_1) + (1-p_1)H_\text{rest} \right] \\
    &= -(\ln p_1 + 1) - (-1)(\ln(1-p_1) + 1) - H_\text{rest} \\
    &= \ln(1-p_1) - \ln p_1 - H_\text{rest} = \ln\left(\frac{1-p_1}{p_1}\right) - H_\text{rest}
    \end{align}
    $$
  • 令导数为 0,寻找熵的极值点(临界概率 \(p^*\)):
    $$\ln\left(\frac{1-p^*}{p^*}\right) = H_\text{rest} \\
    \frac{1-p^*}{p^*} = e^{H_\text{rest}} \\
    p^* = \frac{1}{1 + e^{H_\text{rest}}}$$
  • 由于二阶导数 \(\frac{d^2H}{dp_1^2} = -\frac{1}{p_1(1-p_1)} < 0\),所以总熵 \(H(p_1)\) 是一个严格的凹函数 ,在 \(p_1 = p^*\) 处取得全局最大值

分类讨论(核心结论)

  • 根据推导,熵的变化完全取决于当前 \(p_1\) 与临界值 \(p^* = \frac{1}{1 + e^{H_\text{rest}}}\) 的大小关系

临界值 \(p^*\) 的物理意义

  • \(H_\text{rest} \ge 0\),因此 \(e^{H_\text{rest}} \ge 1\),这意味着 \(p^*\) 永远在 \((0, 0.5]\) 之间
  • 如果剩余 \(n-1\) 个类别分布极其不均(例如全集中在某一个类上),\(H_\text{rest} \to 0\),此时 \(p^* \to 0.5\)
  • 如果剩余 \(n-1\) 个类别分布完全均匀 ,\(H_\text{rest} = \ln(n-1)\),此时 \(p^* = \frac{1}{1 + n - 1} = \frac{1}{n}\)
  • 总结:
    • \(p^*\) 的范围是 \([\frac{1}{n}, \frac{1}{2}]\)
    • 它代表了让当前系统达到“最混乱状态”时,类别 1 应该占据的完美比例

情况一:当前 \(p_1 < p^*\) (该类别属于“弱势类别”)

  • 此时导数 \(\frac{dH}{dp_1} > 0\)
  • 提升该类别的概率:总熵会 增加
    • 因为正在把概率从其他占据主导地位的类别中抽离,分给弱势类别,使得整体分布趋于均匀
  • 压低该类别的概率:总熵会 减小
    • 因为让弱势类别更弱,系统分布变得更加两极分化(尖锐)

情况二:当前 \(p_1 > p^*\) (该类别属于“强势类别”)

  • 此时导数 \(\frac{dH}{dp_1} < 0\)
  • 提升该类别的概率:总熵会 减小
    • 因为该类别已经占据了超过临界值的比例,继续提升它会让系统迅速走向“一家独大”(One-hot 倾向),确定性增加,熵降低
  • 压低该类别的概率:总熵会 增加
    • 因为削弱一个强势类别,把概率释放给其他类别,会让整体分布重新走向均匀

情况三:当前 \(p_1 = p^*\) (该类别处于“最大熵状态”)

  • 此时导数 \(\frac{dH}{dp_1} = 0\)
  • 无论是提升还是压低该类别的概率,总熵都会 减小
    • 因为此时系统已经处于(在固定其他类别相对比例前提下的)最大熵状态

附录:如果是类别数量为 100000 个,此时存在一个类别 p1 概率为 0.9,另一个类别概率为 p2,其他概率均匀分布,请问 p2 提升或下降对熵的影响是什么?

  • 结论:在这种分布下,无论 \(p_2\) 当前具体是多少,提升 \(p_2\) 一定会增加总熵,下降 \(p_2\) 一定会减小总熵

场景的边界条件分析

  • 已知总类别数为 \(N = 100,000\)
    • \(p_1 = 0.9\)
    • \(p_2\) 是我们要调整的类别
    • 剩余 \(99,998\) 个类别均匀分布
  • 因为所有概率之和必须为 1,所以 \(p_2\) 的取值范围被严格限制在:
    $$0 \le p_2 \le 0.1$$
  • 剩余 \(99,998\) 个类别共享剩下的概率,每个类别的概率为:
    $$p_i = \frac{0.1 - p_2}{99,998} \quad (i \ge 3)$$

数学推导:为什么 \(p_2\) 永远是“弱势类别”?

  • 根据本文推导的结论,判断提升 \(p_2\) 对熵的影响,核心在于比较 当前 \(p_2\)临界点 \(p_2^*\) 的大小关系
    临界点公式为:
    $$p_2^* = \frac{1}{1 + e^{H_\text{rest}}}$$
  • 需要计算在剥离 \(p_2\) 后,剩余 \(99,999\) 个类别(即 \(p_1\) 和那 \(99,998\) 个均匀类别)的内部相对熵 \(H_\text{rest}\)
计算相对概率
  • 剥离 \(p_2\) 后,剩余类别的总概率为 \(1 - p_2\),它们的相对占比 \(r\) 为:
    • \(p_1\) 的相对占比:\(r_1 = \frac{0.9}{1 - p_2}\)
    • 剩余 \(99,998\) 个类别的相对占比之和:\(r_{others} = \frac{0.1 - p_2}{1 - p_2}\)
估算 \(H_\text{rest}\) 的最大值
  • 因为 \(0 \le p_2 \le 0.1\),我们可以看看 \(r_1\) 的范围:
    • 当 \(p_2 = 0\) 时,\(r_1 = 0.9 / 1 = 0.9\)
    • 当 \(p_2 \to 0.1\) 时,\(r_1 \to 0.9 / 0.9 = 1.0\)
  • 这说明,在剩余的 \(99,999\) 个类别中,\(p_1\) 占据了绝对的统治地位(相对占比在 \(90%\) 到 \(100%\) 之间)
    • 这种高度集中的分布会导致 \(H_\text{rest}\) 非常小
  • 可以计算出 \(H_\text{rest}\) 的理论最大值(发生在 \(p_2 = 0\) 时):
    $$
    \begin{align}
    H_{rest_max} &= -0.9 \ln 0.9 - 99998 \times \left(\frac{0.1}{99998}\right) \ln\left(\frac{0.1}{99998}\right)\\
    &= -0.9 \ln 0.9 - 0.1 \ln\left(\frac{0.1}{99998}\right)\\
    &\approx 0.0948 + 0.1 \times 13.815 \approx 1.476
    \end{align}
    $$
计算临界点 \(p_2^*\) 的最小值
  • 既然 \(H_\text{rest}\) 最大约为 \(1.476\),那么临界点 \(p_2^*\) 的最小值为:
    $$p_{2_min}^* = \frac{1}{1 + e^{1.476}} \approx \frac{1}{1 + 4.37} \approx 0.186$$
结论
  • 在 \(p_1=0.9\) 时,无论 \(p_2\) 怎么取值,它的临界点 \(p_2^*\) 至少是 \(0.186\)
  • 但是,受限于 \(p_1 = 0.9\) 的客观事实,\(p_2\) 的实际值最大只能是 \(0.1\)
    因此,存在绝对的不等式:
    $$p_2 \le 0.1 < 0.186 \le p_2^*$$
  • \(p_2\) 永远严格小于其临界点 \(p_2^*\)
    • 在系统的视角下,\(p_2\) 绝对属于“弱势类别”(情况一)
    • 因此,导数 \(\frac{dH}{dp_2} > 0\) 恒成立,提升 \(p_2\) 必然增熵,下降 \(p_2\) 必然减熵

直观物理意义:Softmax 的“按比例概率转移”机制

  • 抛开复杂的数学公式,可以从 Softmax 的运作机制非常直观地理解这个现象
  • 在这个系统中,存在一个绝对的“巨无霸” \(p_1 = 0.9\)
    • 整个系统目前的熵是非常低的(因为非常确定,大概率就是类别 1)
  • 当通过 Softmax 机制去提升 \(p_2\) 时,多出来的概率是从哪里来的?
    • Softmax 的特性是按原比例从其他类别中抽取概率
      • 因为 \(p_1\) 占了剩余概率的绝大部分(至少 90%),所以 \(p_2\) 提升所需的概率,绝大部分是从 \(p_1\) 身上“转移”来的
      • 例如,让 \(p_2\) 增加 \(0.05\),\(p_1\) 可能会因此下降 \(0.045\),而那十万个小类别总共才下降 \(0.005\)
      • 结果: 巨无霸 \(p_1\) 被削弱了,系统不再那么“一家独大”,分布变得更平缓了,因此系统的混乱度(熵)增加了
  • 反之,如果压低 \(p_2\)
    • \(p_2\) 吐出来的概率会按比例还给其他类别
    • 同样,巨无霸 \(p_1\) 会吃掉这部分吐出来概率的 90% 以上
    • 结果: \(p_1\) 从 \(0.9\) 变得更大(比如变成 \(0.95\)),系统变得更加极端和确定,因此系统的混乱度(熵)进一步减小了

附录:证明 \(r_j\) 与 \(p_1\) 无关

  • 在神经网络或逻辑回归中,调整一个类别的概率,本质上是调整该类别对应的 Logit(未归一化的得分)
  • 假设有 \(n\) 个类别,其 Logits 分别为 \(z_1, z_2, \dots, z_n\)
  • 为了提升或压低类别 1 的概率 \(p_1\),只改变 \(z_1\) 的值 ,而保持其他类别的得分 \(z_2, \dots, z_n\) 不变
  • 令剩余类别的指数和为一个常数 \(S_\text{rest}\):
    $$S_\text{rest} = \sum_{k=2}^n e^{z_k}$$
    • 因为 \(z_2, \dots, z_n\) 没变,所以 \(S_\text{rest}\) 是一个常数
  • 现在写出 Softmax 的概率公式:
    • 1)类别 1 的概率 \(p_1\):
      $$p_1 = \frac{e^{z_1}}{e^{z_1} + S_\text{rest}}$$
    • 2)剩余所有类别的总概率 \(1 - p_1\):
      $$1 - p_1 = \frac{S_\text{rest}}{e^{z_1} + S_\text{rest}}$$
    • 3)任意其他类别 \(j\) (\(j \ge 2\)) 的概率 \(p_j\):
      $$p_j = \frac{e^{z_j}}{e^{z_1} + S_\text{rest}}$$
  • 把 \(p_j\) 和 \(1 - p_1\) 代入前一节提到的公式 \(r_j = \frac{p_j}{1-p_1}\) 中:
    $$r_j = \frac{ \frac{e^{z_j}}{e^{z_1} + S_\text{rest}} }{ \frac{S_\text{rest}}{e^{z_1} + S_\text{rest}} }$$
  • 分母 \(e^{z_1} + S_\text{rest}\) 可以被约掉,于是得到
    $$r_j = \frac{e^{z_j}}{S_\text{rest}} = \frac{e^{z_j}}{\sum_{k=2}^n e^{z_k}}$$
  • 证毕!