信息量连接预测与编码
概率拟合为什么采用对数损失,困惑度究竟测什么?本课从明确模型建立有限离散熵、条件熵、交叉熵、KL 散度和互信息,证明相关不等式,连接期望损失、可解码编码与似然,最后讨论序列分解和限定的连续预览。每个信息量都说明对数底、字母表及平均单位。
检索准备:模块 16的对数不等式、模块 23的期望联合律、模块 25的似然。密度预览需模块 17。实验都是独立可运行标准库 CPU 脚本,不需外部语料或模型下载。
自信息、对数底与可解码编码
p(x)>0 的结果自信息(surprisal)是 −log_b p(x),声明 b>1。概率越低越意外,必然结果自信息零。底二为比特(bits),底 e 为纳特(nats)。独立结果概率相乘,自信息相加;一般联合概率分成条件概率,也可相加条件自信息,无需独立。对数把概率乘积转成可用的加性信息与损失。
模型不可能结果有无限自信息。按 p 取期望时,p(x)=0 的项权重零,以 t log t→0 的极限约定 0log0=0。但 p>0、另一个预测 q=0 的项不是零,而是无限期望损失。数学定义与实现都必须处理支撑。
换底只改变尺度:nats 除以 log2 得 bits。数值为一在两种单位含义不同,概率、长度和损失不能放入无单位列。后续将损失取指数时,底必须匹配;实验 3 展示 exp(bits) 的错误。
概率 (1/2,1/4,1/4) 的自信息为 (1,2,2) bits。码字 0、10、11 具有这些长度,任何码字都不是另一个的前缀。期望长度 .5·1+.25·2+.25·2=1.5 bits/符号,等于期望自信息;固定两比特码则为 2。变量长码在可解码条件下可减平均长度。
前缀码没有一个码字作为另一字的开头。沿二叉树到叶得到一个符号,再从根开始,便可逐符号唯一解码。随意给极短码不是压缩成果,例如 0、1、01 的字符串 01 可代表第三符号,或前两符号连续。平均长度需要解码约定,不只是加权数值好看。
有限二进前缀码长度 ℓ_i 满足 Kraft 不等式 Σ2^(−ℓ_i)≤1。证明:长度 ℓ 的二进词对应 [0,1) 中长度 2^(−ℓ) 的二进子区间;无前缀意味着区间不相交,所以总长度≤1。第三节由此推熵下界。合格整数长度反过来存在前缀码是命名编码定理,阅读链接给进一步构造。
−log₂(.3) 通常不是整数,它是理想信息长度,不是已经存在的码字。取整和编码构造是另一步。分块或算术编码可在声明模型和解码条件下接近理想平均率,但分数对数不自动定义精确码。文件存储还有模型描述、头信息、有限块和实现成本。
至少两个正概率符号的非退化有限源,可取正整数 ℓ_i=ceil(−log₂p_i),满足 Kraft 和≤Σp_i=1;所述逆定理给这样的前缀码。各长度小于理想值加一,故期望长度<H₂(p)+1,后面下界则给≥H₂(p)。这界定平均编码,不分配分数码字。零概率符号可从声明源支撑排除,但要应对未见符号的预测系统需要独立支撑约定。若解码器不知道长度,终止或长度描述也有成本。这里命名存在定理,完整证明必要性与平均下界;树构造可另作编码拓展。
0、10、11 的叶结构保留解码。概率决定一比特或两比特长度,理想对数长度不能随意视为真实码字。
哪个底给 bits?哪些零项可跳过?为什么平均长度需要解码条件?
查看答案
底二。只跳过源 p=0 的项,正 p 遇零 q 是无限损失。不唯一解码时同一比特串可表示不同源序列,不能恢复原数据。
熵、条件熵与链式法则
有限字母表 p 的 H_b(p)=−Σp_i log_b p_i,是同一规律下的期望自信息,不是一次实现的惊讶。概率≤1 使各项非负,熵零当且仅当变量确定。m 符号最大 log_bm、仅均匀取等号,第四节用 KL 证明。边界按声明字母表计,支撑较小不能取全均匀最大。
联合熵平均 −log p(x,y)。H(X|Y) 按 p(y) 加权 H(X|Y=y),只考虑正 p(y)。它不是某一个条件组,也不是对标签不加权平均。正联合格满足 p(x,y)=p(y)p(x|y),取负对数加权得到 H(X,Y)=H(Y)+H(X|Y),反顺序同理。
独立时条件律等于边缘,所以联合熵是边缘之和。依赖时差额为第五节互信息。离散条件熵非负,故联合熵至少为任一边缘。Y=f(X) 的 H(Y|X)=0,链式给 H(Y)≤H(X),确定处理不能增加输出离散不确定性。
X 公平比特,Y=X XOR E,E 独立且翻转率 .1。联合四格 (.45,.05,.05,.45),两边缘都公平,熵各 1。给定 X 的不确定性 h₂(.1)≈.468996,故联合熵约 1.468996,小于独立和 2;差 .531004 即互信息。
有限离散条件熵平均降低,H(X|Y)≤H(X),独立时且仅此取等号,下面由 KL 身份证明。它不说每个条件组都更低。例如 Y 以 .9 选择确定零 X 组,以 .1 选择公平 X 组。边缘 P(X=1)=.05、熵约 .286397,而公平组熵 1 更高;加权条件熵 .1 仍更低。平均与所选组的量词不同。
反复链式得 H(X₁,…,X_T)=ΣH(X_t|X_<t),无需词元独立。上下文模型可表示依赖,unigram 模型则仅用边缘。预测的因果顺序是概率分解,不自动声称干预因果;所有条件项应在相关正概率前缀计算。
有限字母表确保熵有限、求和重排安全。可数无限字母表可有无限熵,∞−∞ 不能随便减,即使相对信息可直接定义。此课证明实验都有限;搬到无限词表或密度前要说明额外存在条件。
由因子分解证链式。每个条件组都必须更低吗?序列条件和需要独立吗?
查看答案
正格对 log p(x,y)=log p(y)+log p(x|y) 加权。只有条件熵平均保证降低,个别组可升。条件链式适用依赖,边缘熵和则需独立。
交叉熵、期望损失、似然与码长
同一有序有限字母表的源 p 和预测 q,H_b(p,q)=−Σp_i log_bq_i。正 p 配零 q 为无穷,p=0 则零贡献。标签语义要匹配,一向量交换标签会改变结果,即使都归一化。非负、有限输入与和一是模型条件。
H(p,q) 不等于 H(q):前者 p 加权预测,后者 q 自己加权。模型自熵可因过度自信很低,真实源下损失却巨大;自信不等于正确。m 类均匀预测的交叉熵总 log_bm,而源熵随 p 变化,所以是明确字母表的固定参照。
p=(.5,.3,.2)、q=(.25,.5,.25),H₂(p)≈1.485475,交叉熵 .5·2+.3·1+.2·2=1.7,超额约 .214525。q 自加权给 H₂(q)=1.5,是另一量。实验也算反向,并不相等。
IID 分类观察的负 logL 为 −Σlog q(x_i)。经验频率 p_hat_i=c_i/n,按类别合并并除以 n 就是 H(p_hat,q)。固定 q、支撑兼容的 IID p 下,其期望为 H(p,q)。若 q 用同一数据拟合,训练损失并不自动无偏估计未来损失。
无约束分类 MLE 为经验频率,零计数为合法边界,却可对未见类别给零,导致未来无限损失。加性平滑 q_i=(c_i+a)/(n+ma)、a>0 在固定字母表上保留正支撑。可通过合适 Dirichlet 模型解释,是 beta 的多类扩展,也可直接声明为平滑规则。它改变估计器,不能用保留标签暗调。
码长连接要准确。完整二进概率模型 q_i=2^(−ℓ_i) 对应整数前缀长度时,源期望长度恰为 H₂(p,q)。一般 q 需要取整和构造。反之,任意有限二进前缀码取 Z=Σ2^(−ℓ_i)≤1,r_i=2^(−ℓ_i)/Z,则 ℓ_i=−log₂r_i−log₂Z。平均长度 H₂(p,r)−log₂Z,由下一节 KL 非负至少为 H₂(p),从而证明带解码条件的下界。
这只是源下平均下界,不说每条消息长度至少其自信息,也不禁止个别消息极好压缩。模型开销和有限块成本另计。有限保留词元仅估其经验损失,不证明总体熵或所有质量。实验刻意报告平滑频率模型在固定测试上差于均匀,避免暗示训练频率自动有泛化优势。
交叉熵用源 p 加权 −log q,等于源熵加方向性错配成本,不是模型自熵。
交叉熵用谁加权?如何由似然推出?分数自信息是否自动是真实整数码长?
查看答案
用 p。按分类合并负 logL 再除 n。真实码需构造、取整或分块开销;只有特定编码模型条件下精确等式成立。
KL 散度、非负、等号与支撑方向
有限 p,q 的 D_b(p||q)=Σ_{p_i>0}p_i log_b(p_i/q_i),需要的 q_i 为零则无穷,源零项为零。支撑兼容时重排得到 H_b(p,q)=H_b(p)+D_b(p||q)。方向明确:p 是给予结果权重的源,不是对称距离。
用自然 log 的 −log u≥1−u、u>0 证明。差函数 g=−logu−1+u,导数 1−1/u,在一以下递减、以上递增,仅一时零。对 p 正支撑 S 应用 u=q_i/p_i、乘 p_i 并加总,D≥Σ_S(p_i−q_i)=1−Σ_Sq_i≥0。其他底除以正 logb。需要的 q 为零时无穷仍非负。
等号要求每个正源处 q_i=p_i,且没有支撑外质量。源和一使匹配已用完全部 q,因此完整 p=q。不能在证明中默设所有概率正而丢零处理。取均匀 q 得 D=log_bm−H_b(p),证最大熵界及均匀等号;也说明所有有限预测中真实源最小化交叉熵。
p=(1,0)、q=(.5,.5),D₂(p||q)=1 bit;反向 q 有第二结果正质量,p 却预测零,所以无穷。正向量也一般不对称:实验的三类例子约 .214525 与 .198965 bits。
KL 也一般不满足三角不等式。例如 Bernoulli .1、.5、.9 的 D₂(.1||.9)≈2.53594,而经过 .5 的两散度和≈1.26797,违反三角。平方根或对称替代要有自己的定义与证明,随便对称化不能自动叫度量。
拟合时最小 D(p||q_θ) 等价于最小源交叉熵,因为 H(p) 固定;反向改变权重与目标,未知真实 p 时还可能不可计算。受限族最小可正,KL 非负不保证族含真源或优化器找到最佳。模型、数值优化和数学下界是不同声明。
近似相等分布的浮点计算可给很小负 KL。先检验概率与支撑,稳定计算并谨慎加总,再按尺度解释舍入;不能大负值也静默裁零。实验归一化检查披露容差,全零权重则根本不能归一化。
探索器明确将非负类别权重归一化成 p,q,按选择单位报告熵、双向交叉熵与 KL。正源配零预测显示无穷,匹配 q=p 给零散度,共同零类无害。柱图是概率,理想码长仍只是信息量,除非另有解码方案。
将零预测换成 epsilon 会改变模型与损失,可作为声明后重新归一化的平滑,但不是原分布精确散度。数学无穷与对数域数值稳定要分开。
哪个不等式证明非负?零概率下等号需要什么?反方向为何改变拟合?
查看答案
用 −logu≥1−u 并计支撑外 q。等号要完整规律相同。反向改变对数权重,并可能要求模型生成结果处未知真实概率。
互信息、依赖与处理
有限联合律的 I(X;Y)=D(p_XY||p_Xp_Y)。正联合格的边缘正,因此分母有效。展开得到 I=H(X)+H(Y)−H(X,Y)=H(X)−H(X|Y)=H(Y)−H(Y|X)。KL 非负及等号给 I≥0,零恰是联合乘积分解独立。虽然一般 KL 有方向,这个联合对边缘乘积表达对 X,Y 对称。
离散条件熵非负给 I≤min(HX,HY),并证明条件平均降低。确定 Y=f(X) 给 I=H(Y),不必等于 H(X),多对一可丢信息,可逆重标签则保留。信息量描述规律下依赖,不识别因果方向,共同源也可令互信息大。
公平比特的 .1 翻转复制 I=1−h₂(.1)≈.531004。再将 Y 替换为完全独立公平 Z,X,Z 独立,I=0。翻转零保留一 bit,翻转 .5 无信息。随机噪声在别的模型可增输出熵却减输入信息,所以输出熵不是保留信息的指标。
条件互信息是在正 z 上按 p(z) 加权的条件联合对条件边缘乘积 KL,所以非负。熵展开给 I(X;Y,Z)=I(X;Y)+I(X;Z|Y)。有限 Markov 关系 X→Y→Z 表示给定 Y 后 X,Z 条件独立,故后项零。另一顺序展开为 I(X;Z)+I(X;Y|Z)≥I(X;Z),由此完整证明有限数据处理不等式 I(X;Z)≤I(X;Y)。
确定 Z=f(Y) 是特殊情况,也可用只依赖 Y 而不额外访问 X 的随机通道。增加独立观察 X 的新传感器可能帮忙,但不满足处理链;随机处理可增加输出熵,定理约束的是关于原输入的信息。应说明比较的是哪个输入。
互信息不同于线性协方差。有限例子 X 在 −1,0,1 等概率,Y=X²,Cov 由对称为零,却是非恒定确定函数,所以 I=H(Y)>0。稀疏数据估信息还有偏差和支撑问题,经验表不自动为准确总体律。连续数据离散化改变变量和测量的信息。
处理链要求给定中间变量后,输入与最后输出条件独立。关于输入的互信息不会沿链增加,即使新噪声增加输出熵。
为何互信息零恰是独立?数据处理说输出熵总减吗?Cov 零能推出信息零吗?
查看答案
KL 等号表示联合等于边缘乘积。定理约束原输入信息,噪声可增输出随机性。非线性依赖可以 Cov 零但信息正。
序列似然、困惑度与密度预览
有限序列 q(x₁:T)=∏q(x_t|x_<t),说明起始上下文与正前缀约定。总负 logL 是条件词元损失和,不需独立;unigram 是受限特殊模型。变长字符串的完整生成律还需终止概率;不计结束词元时可为条件或部分评估分数,应如实命名。
每计分词元平均 nats L=−Σlogq/T,困惑度(perplexity)为 expL;bits 则 2^L_bits。它是所赋词元概率几何平均的倒数,不需整数,也不字面等于模型考虑候选数。m 词元均匀模型给困惑度 m,只是特殊直觉。
两个人工联合模型都给同一原字符串概率 1/16。两词元计分给 mean nats=log4、困惑度 4,四词元给 log2、困惑度 2。这里只是分母改变,并非字符串概率改善。比较需相同分词、计分数据、上下文与概率语义。
不同长度序列的语料词元平均,应总计损失/总计词元;每句均值再等权平均是另一问题。说明 padding、提示、开始结束和掩码位置是否计分,不能暗用不同分母。依赖序列词元也不自动是独立标准误样本,统计不确定性需合适独立序列或主体。
困惑度测指定评估分布的预测 log 损失,不单独衡量真实、有用、公平、推理或全部压缩成本。低均损失可同时有罕见严重失败,换分布即换目标,模块 26 的选择规则仍适用。需要词元无支撑的无穷是模型问题;巨大有限损失的指数溢出是表示问题,后者报告 log 损失仍有意义。
连续选学:密度微分熵 h=−∫f logf,在积分定义良好时成立,不是精确实数点离散熵,因为点概率零。Uniform(0,a) 密度 1/a,h=log a;a=.25 时密度 4、nats 熵负。Y=cX、c≠0,在正确变换可积条件下 hY=hX+log|c|,离散非负与单位不变不能照搬。
充分正则的等宽细分,H(离散化 X)≈h(X)−logΔ,记录分辨率成本;不是任意混合分布或无限熵密度的恒等式。连续 KL 要共同参考测度及支撑可积条件,两个规律正确坐标变换时 Jacobian 在比中消去。完整连续信息论属后续,不能隐藏在本课有限证明内。
困惑度需匹配底与计分词元分母。连续密度的熵另依赖坐标尺度,允许为负。
序列分解需独立吗?语料词元困惑度用哪个分母?微分熵为何可负?
查看答案
条件链式适用依赖。使用总计分词元数。密度可大于一且坐标缩放改变微分熵,不是点概率熵。
常见误解
| 错误说法 | 修正 |
|---|---|
| 一 bit 与一 nat 相同。 | 按 log2 换算并匹配指数底。 |
| 所有零概率贡献都零。 | 正源遇零预测为无穷。 |
| 交叉熵用 q 加权。 | H(p,q) 按 p 平均。 |
| KL 是对称度量。 | 方向、支撑、三角失败重要。 |
| 所选条件组熵总减。 | 不等式针对加权平均。 |
| 互信息给因果方向。 | 它描述联合依赖。 |
| 随机处理总降输出熵。 | Markov 条件下降原输入信息。 |
| 任意分词的困惑度可比。 | 单位和概率约定需一致。 |
| 微分熵总非负。 | 密度单位和宽度改变它。 |
三个可复现实验
实验 1 · 熵、方向 KL 与信息
下载 lab1_entropy_kl_and_information.py
"""Finite information measures in bits, with explicit support conventions."""
import math
def validate(p):
if not p or any(not math.isfinite(x) or x < 0 for x in p) or not math.isclose(math.fsum(p), 1., abs_tol=1e-12, rel_tol=0.):
raise ValueError("probabilities must be finite, nonnegative, and sum to one")
def entropy(p):
validate(p)
return -math.fsum(x*math.log2(x) for x in p if x > 0)
def cross_entropy(p, q):
validate(p)
validate(q)
if len(p) != len(q):
raise ValueError("same ordered alphabet required")
if any(x > 0 and y == 0 for x, y in zip(p, q)):
return math.inf
return -math.fsum(x*math.log2(y) for x, y in zip(p, q) if x > 0)
def kl(p, q):
return cross_entropy(p, q)-entropy(p)
if __name__ == "__main__":
p, q = [.5, .3, .2], [.25, .5, .25]
print(f"p={p}; q={q}; same ordered alphabet; units=bits")
print(f"H(p)={entropy(p):.6f}; H(p,q)={cross_entropy(p,q):.6f}; KL(p||q)={kl(p,q):.6f}; KL(q||p)={kl(q,p):.6f}")
assert abs(cross_entropy(p,q)-entropy(p)-kl(p,q)) < 1e-12
print(f"KL([1,0]||[.5,.5])={kl([1.,0.],[.5,.5]):.6f}; reverse={kl([.5,.5],[1.,0.])}")
joint = [.45, .05, .05, .45]
independent = [.25]*4
mi = kl(joint, independent)
print(f"Fair binary input, independent flip probability.1: MI={mi:.6f}; H(Y|X)={entropy([.1,.9]):.6f}")
print(f"H(X,Y)={entropy(joint):.6f}; H(X)+H(Y)-H(X,Y)={2-entropy(joint):.6f}")
assert abs(mi-(1-entropy([.1,.9]))) < 1e-12
code_p, lengths = [.5,.25,.25], [1,2,2]
expected = math.fsum(x*l for x,l in zip(code_p,lengths))
print(f"Prefix code0/10/11: expected length={expected:.6f}; entropy={entropy(code_p):.6f}")
p=[0.5, 0.3, 0.2]; q=[0.25, 0.5, 0.25]; same ordered alphabet; units=bits
H(p)=1.485475; H(p,q)=1.700000; KL(p||q)=0.214525; KL(q||p)=0.198965
KL([1,0]||[.5,.5])=1.000000; reverse=inf
Fair binary input, independent flip probability.1: MI=0.531004; H(Y|X)=0.468996
H(X,Y)=1.468996; H(X)+H(Y)-H(X,Y)=0.531004
Prefix code0/10/11: expected length=1.500000; entropy=1.500000
预测无穷方向,证明恒等式,解释前缀码等号与噪声比特条件熵。
实验 2 · 小型保留频率模型
下载 lab2_frequency_language_model.py
"""A tiny categorical unigram model evaluated on a fixed held-out token list."""
import collections
import math
if __name__ == "__main__":
alphabet = ("a", "b", "c")
training = list("aaaaaabbbc")
test = list("abcac")
counts = collections.Counter(training)
# Alphabet and additive smoothing are specified before examining test tokens.
alpha = 1.
models = {"uniform": {t:1/3 for t in alphabet},
"training-only smoothed unigram": {t:(counts[t]+alpha)/(len(training)+alpha*len(alphabet)) for t in alphabet}}
print(f"Fixed alphabet={alphabet}; training counts={dict(counts)}; test tokens={test}; smoothing alpha=1")
for name, model in models.items():
losses = [-math.log(model[t]) for t in test]
nll = math.fsum(losses)
average = nll/len(test)
bits = average/math.log(2)
print(f"{name}: probabilities={[round(model[t],6) for t in alphabet]}")
print(f" held-out total NLL={nll:.6f}, mean nats/token={average:.6f}, bits/token={bits:.6f}, perplexity={math.exp(average):.6f}")
print("This fixed unigram approximation ignores order and context. Its poor held-out result cannot be repaired by fitting test counts.")
sequence_probability = .5*.8*.6
print(f"Conditional sequence example: .5*.8*.6={sequence_probability:.6f}; chain NLL={-math.log(sequence_probability):.6f}")
print("The chain factorisation uses conditional probabilities; it does not require independent tokens.")
Fixed alphabet=('a', 'b', 'c'); training counts={'a': 6, 'b': 3, 'c': 1}; test tokens=['a', 'b', 'c', 'a', 'c']; smoothing alpha=1
uniform: probabilities=[0.333333, 0.333333, 0.333333]
held-out total NLL=5.493061, mean nats/token=1.098612, bits/token=1.584963, perplexity=3.000000
training-only smoothed unigram: probabilities=[0.538462, 0.307692, 0.153846]
held-out total NLL=6.160338, mean nats/token=1.232068, bits/token=1.777498, perplexity=3.428310
This fixed unigram approximation ignores order and context. Its poor held-out result cannot be repaired by fitting test counts.
Conditional sequence example: .5*.8*.6=0.240000; chain NLL=1.427116
The chain factorisation uses conditional probabilities; it does not require independent tokens.
测试以前固定字母表和平滑,推 unigram 概率,解释为何此次训练频率未胜均匀。
实验 3 · 单位、支撑与计分修复
下载 lab3_units_support_and_tokenisation.py
"""Challenge units, invalid PMFs, zero support, and per-token comparisons."""
import math
def validate(p):
if not p or any(not math.isfinite(x) or x < 0 for x in p) or not math.isclose(math.fsum(p), 1., abs_tol=1e-12, rel_tol=0.):
raise ValueError("probabilities must be finite, nonnegative, and sum to one")
def cross_entropy(p, q):
validate(p)
validate(q)
if len(p) != len(q):
raise ValueError("same ordered alphabet required")
if any(x > 0 and y == 0 for x, y in zip(p, q)):
return math.inf
return -math.fsum(x*math.log2(y) for x, y in zip(p, q) if x > 0)
if __name__ == "__main__":
for bad in ([.8,.4], [-.1,1.1], [math.nan,1.], [0.,0.]):
try:
validate(bad)
except ValueError:
print(f"Rejected invalid probability list: {bad}")
bits = 1.
print(f"One bit loss: wrong exp(bits)={math.exp(bits):.6f}; correct 2**bits={2**bits:.6f}")
print(f"Nats conversion={bits*math.log(2):.6f}; exp(nats)={math.exp(bits*math.log(2)):.6f}")
print(f"Required support missing: cross-entropy([.5,.5],[1,0])={cross_entropy([.5,.5],[1.,0.])}")
# Artificial joint models assign the same probability to the same raw string.
probability = 1/16
nll = -math.log(probability)
for tokens in (2,4):
ppl = math.exp(nll/tokens)
print(f"Same raw-string probability1/16, {tokens} scored tokens: mean nats={nll/tokens:.6f}, perplexity={ppl:.6f}")
print("A smaller token perplexity here reflects a different unit count, not a better raw-string probability.")
p = .25
print(f"Density preview: Uniform(0,.25) density=4, differential entropy nats={math.log(p):.6f}; exact-point probability=0")
print("Differential entropy can be negative and changes with coordinate units; discrete entropy's nonnegativity does not transfer.")
Rejected invalid probability list: [0.8, 0.4]
Rejected invalid probability list: [-0.1, 1.1]
Rejected invalid probability list: [nan, 1.0]
Rejected invalid probability list: [0.0, 0.0]
One bit loss: wrong exp(bits)=2.718282; correct 2**bits=2.000000
Nats conversion=0.693147; exp(nats)=2.000000
Required support missing: cross-entropy([.5,.5],[1,0])=inf
Same raw-string probability1/16, 2 scored tokens: mean nats=1.386294, perplexity=4.000000
Same raw-string probability1/16, 4 scored tokens: mean nats=0.693147, perplexity=2.000000
A smaller token perplexity here reflects a different unit count, not a better raw-string probability.
Density preview: Uniform(0,.25) density=4, differential entropy nats=-1.386294; exact-point probability=0
Differential entropy can be negative and changes with coordinate units; discrete entropy's nonnegativity does not transfer.
拒无效概率,修 bit/nat 指数,说明同字符串概率不同困惑度。密度预览需模块 17。
十四题与完整解答
练习 1–12 必做,选学 13–14 在十小时以外加 35 分钟,连续替代需模块 17。
算公平及 Bernoulli(.1) 的 bits 熵,将后者换 nats。
查看解答
公平为 1,.1 的 h₂≈.468996,乘 log2 得 .325083 nats。换底只改单位。
p=(.5,.3,.2)、q=(.25,.5,.25),求交叉熵及正向 KL。
查看解答
交叉熵 1.7,源熵约 1.485475,散度约 .214525 bits。模型自熵是另一加权。
p=(1,0)、q=(.5,.5) 两方向 KL 如何?
查看解答
正向 1 bit,反向无穷,因为正 q 源质量遇零预测。只跳零源项,不能跳需要的零预测。
一 bit 损失的困惑度多少?1/16 字符串的两/四词元值呢?
查看解答
一 bit 给 2,也等于 exp(log2)。两分母给 4 和 2,原字符串概率相同。exp1 对一 bit 错误。
含零概率证有限 KL 非负等号,再推最大熵界。
查看解答
需要的 q 零则无穷,否则在正源支撑用 −log(q_i/p_i)≥1−q_i/p_i,加总得 D≥1−Σ_Sq_i≥0。等号完整匹配 p=q。均匀 q 给 D=log_bm−H_b(p),所以 H≤log_bm,仅均匀相等。
推链式及联合/边缘乘积 KL 的互信息。
查看解答
正格 log联合=log边缘+log条件,加权得 HXY=HY+H(X|Y)。展开 log[pXY/(pXpY)] 得 I=HX+HY−HXY,KL 证明非负,等号恰独立。
由 IID 似然推经验交叉熵,并证有限二进前缀码平均下界。
查看解答
负 logL 按类别合并除 n 得 H(p_hat,q)。Kraft 给 Z≤1,r_i=2^(−ℓ_i)/Z,平均长 H₂(p,r)−log₂Z≥H₂(p)。解码与正码质量条件不可省。
公平输入独立 .1 翻转,算边缘、联合、条件熵与互信息。
查看解答
四格 .45,.05,.05,.45,两边缘公平;条件 .468996,联合 1.468996,信息 .531004 bits。独立翻转是模型条件,不由少量观察推出。
训练计数 6,3,1、固定三类、平滑一,推 q 并说明保留计分。
查看解答
q=(7,4,2)/13,正且归一。测试不改计数或按标签调平滑。abcac 均损失约 1.232068 nats、困惑度 3.428310,差于均匀 3;有限结果不定总体排序。
X 在 −1,0,1 均匀,Y=X²,求 Cov 与信息。
查看解答
EX=0、EXY=EX³=0,所以 Cov0。Y 在 0,1 质量 1/3,2/3,由 X 确定,I=H₂Y≈.918296 bits。线性不相关不表示独立。
H(p,q) 用 q 加权,需要的零预测写零损失,KL 称对称。修复。
查看解答
按源 p 平均 −logq;正 p 配零 q 无穷,只有 p 零可跳。方向改变权重支撑,有限/无穷例即反驳对称。先检验标签与归一化。
语料等权平均句均值、未写词元约定,又比较不同分词器困惑度。修复。
查看解答
词元指标用总损失/总计分词元,列提示、padding、开始结束、上下文及底。相同概率词元约定比较,或以有依据共同原数据单位;分母不同可改困惑度却不改字符串概率。
用条件信息链式证 X→Y→Z 有限数据处理。
查看解答
条件独立给 I(X;Z|Y)=0,故 I(X;YZ)=I(X;Y)。反顺序为 I(X;Z)+I(X;Y|Z)≥I(X;Z),后项为加权 KL 非负。额外访问 X 的处理器不在条件内。
CS:给个别条件组熵增但平均减的例子。AI 替代:推均匀微分熵与缩放。
查看解答
CS 的 .9 确定零组与 .1 公平组给边缘 .05、熵 .286397,公平组 1 较大,加权 .1 较小。AI 均匀宽 a 的 h=log a,Y=cX 的密度除 |c|,代入积分得 hY=hX+log|c|;a<1 的负值有效。
十题自测
查看答案
IID logL 按类别计数合并为经验 H。H(p,q)=H(p)+D,用 −logu≥1−u 在正源支撑证明非负,需要 q 零则无穷。噪声公平比特携带 1−h₂(.1) bits。条件序列无需词元独立。困惑度用匹配底指数化均损失,比较前需相同分词、位置、上下文与权重。
带问题阅读
读 Stanford 信息量讲义、变长编码及连续信息预览。本课有限证明和原创例子明确处理零支撑,连续为后续选学。
| 时间 | 阅读问题 |
|---|---|
| 第一阶段 · 15 分钟 | 哪个律加权每个 log,条件分解在何处进入? |
| 第四阶段 · 15 分钟 | 哪些解码、支撑和单位条件支持各界? |
检索结业与下一步
计算有限信息,证明 KL 与链式,推似然损失及码长下界,给正确困惑度报告,解释依赖而不混淆因果。
结业任务:算三类错配,找无穷方向,修底或词元分母比较,将依赖序列概率追踪到加性条件损失。
进入下一课的标准:能把概率模型连接 log 损失。下一课研究抽样梯度与正则化训练。返回总览。
符号与双语术语
| 术语或符号 | 含义 | English |
|---|---|---|
| 自信息 / bit / nat | 负 log 概率 / 二 / e 底单位 | Surprisal / bit / nat |
| H(p) / H(p,q) | 源熵 / 期望预测自信息 | Entropy / cross-entropy |
| D(p | q) / 支撑 | |
| I(X;Y) | 联合对边缘乘积信息 | Mutual information |
| 前缀码 / Kraft | 可解码叶码 / 长度约束 | Prefix code / Kraft |
| 困惑度 / 计分词元 | 均损失指数 / 平均单位 | Perplexity / scored token |
| h(X) / 密度 | 微分熵 / 连续参考密度 | Differential entropy / density |