LLM大模型中的基础数学工具—— 信息论

部署运行你感兴趣的模型镜像

Q21: 推导互信息 I(X; Y) = H(X) - H(X|Y)的链式法则

互信息、熵与条件熵是啥?

  • 互信息 I(X; Y) 衡量随机变量 X 和 Y 共享的信息量,反映知道 Y 后 X 不确定性的减少量。
  • 熵 H(X) = -\sum_{x} P(x) \log P(x),表示 X 的不确定性。
  • 条件熵 H(X|Y) = -\sum_{x,y} P(x,y) \log P(x|y),表示已知 Y 时 X 的剩余不确定性。

推导过程:

从定义出发:\begin{aligned} I(X; Y) &= \sum_{x,y} P(x,y) \log \frac{P(x,y)}{P(x)P(y)} \\ &= \sum_{x,y} P(x,y) \log \frac{P(x|y)P(y)}{P(x)P(y)} \\ &= \sum_{x,y} P(x,y) \log P(x|y) - \sum_{x,y} P(x,y) \log P(x) \\ &= -\sum_{x,y} P(x,y) \log P(x|y) - \left( \sum_{x} P(x) \log P(x) \sum_{y} P(y) \right) \\ &= H(X) - H(X|Y) \end{aligned}

这里利用了\sum_{y} P(y) = 1 以及熵和条件熵的定义,通过对数运算和概率求和规则完成推导。

在 LLM 中的使用

在 LLM 中,互信息可衡量词与上下文的关联。例如,计算目标词 X 与上下文 Y 的 I(X; Y),若值大,说明上下文对预测词很重要。训练时,模型学习最大化这种互信息,提升语义理解。如 BERT 通过掩码预测,最大化掩码词与上下文的互信息,优化表征。

代码示例(简单离散变量)

import numpy as np  
# 假设离散分布  
Pxy = np.array([[0.1, 0.2], [0.3, 0.4]])  # P(x,y)  
Px = Pxy.sum(axis=1)  # P(x)  
Py = Pxy.sum(axis=0)  # P(y)  
Hx = -np.sum(Px * np.log2(Px))  
Hx_y = -np.sum(Pxy * np.log2(Pxy / Py))  
Ixy = Hx - Hx_y  
print(f"互信息 I(X;Y): {Ixy}")  

解释:代码通过定义联合概率分布 Pxy,计算 H(X) 和 H(X|Y),再求差得到互信息。LLM 中类似思路可分析词与语境的信息交互。


Q22: 证明熵 H(X)的凹性(Concavity)性质

熵的凹性是啥?

凹性指对于概率分布 p_1, p_2 和 \lambda \in [0,1],有 H(\lambda p_1 + (1-\lambda)p_2) \geq \lambda H(p_1) + (1-\lambda)H(p_2)。即混合分布的熵不小于分布熵的加权和,反映概率分布越 “均匀”,熵越大。

证明过程(利用 Jensen 不等式)

Jensen 不等式对凹函数 f 有 f(\lambda x_1 + (1-\lambda)x_2) \geq \lambda f(x_1) + (1-\lambda)f(x_2)

熵 H(X) = -\sum_{x} P(x) \log P(x),设 f(p) = -p \log p,其二阶导数 f''(p) = -\frac{1}{p} < 0,故 f(p)是凹函数。

 H(\lambda p_1 + (1-\lambda)p_2) = \sum_{x} [\lambda p_1(x) + (1-\lambda)p_2(x)] (-\log [\lambda p_1(x) + (1-\lambda)p_2(x)])

由 Jensen:

\begin{aligned} &\sum_{x} \lambda p_1(x) (-\log [\lambda p_1(x) + (1-\lambda)p_2(x)]) + \sum_{x} (1-\lambda)p_2(x) (-\log [\lambda p_1(x) + (1-\lambda)p_2(x)]) \\ &\geq \lambda \sum_{x} p_1(x) (-\log p_1(x)) + (1-\lambda) \sum_{x} p_2(x) (-\log p_2(x)) \\ &= \lambda H(p_1) + (1-\lambda)H(p_2) \end{aligned}

在 LLM 中的使用

LLM 中,熵的凹性用于优化生成多样性。例如,生成文本时,若分布 p_1 集中(低熵,如重复词),p_2均匀(高熵),混合分布 \lambda p_1 + (1-\lambda)p_2 的熵更高,生成更丰富。通过调整\lambda,利用凹性平衡准确性和多样性。

代码示例(验证凹性)

import numpy as np  
def entropy(p):  
    p = p[np.nonzero(p)]  # 避免log(0)  
    return -np.sum(p * np.log2(p))  
p1 = np.array([0.9, 0.1])  
p2 = np.array([0.5, 0.5])  
lambda_ = 0.5  
p_mix = lambda_ * p1 + (1 - lambda_) * p2  
print(f"H(p1): {entropy(p1)}, H(p2): {entropy(p2)}")  
print(f"H(混合分布): {entropy(p_mix)}, 加权和: {lambda_ * entropy(p1) + (1 - lambda_) * entropy(p2)}")  
print(f"凹性验证: {entropy(p_mix) >= lambda_ * entropy(p1) + (1 - lambda_) * entropy(p2)}")  

解释:代码定义熵函数,验证混合分布的熵不小于加权和,体现凹性。LLM 中可类似调整输出分布的熵,优化生成效果。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值