30 秒看懂
这节 3Blue1Brown 课程通过理想化压缩示例推导交叉熵,再把它与语言模型预训练、蒸馏和 KL 散度联系起来。
- 1交叉熵H(P,Q) 将基于 Q 的码长按 P 中结果的频率取平均。
- 2最小值固定 P 时,Q 匹配 P 可使交叉熵最小。
- 3下一个 token 损失语言模型预训练对观察到的 token 的负对数概率取平均。
- 4蒸馏教师分布比单个观察到的 token 提供更丰富的训练信号。
- 5KL 散度交叉熵与熵之差衡量额外的理想码长。
要点建议
- 信息量把概率转化为理想码长。
- 交叉熵衡量编码分布与来源分布不同时的平均码长。
- 固定来源分布时,匹配该分布可使交叉熵最小。
- 下一个 token 的对数损失是一种经验交叉熵。
- KL 散度衡量额外码长,并且不对称。
按章节阅读整理后的全文
压缩与语言谱系
Grant Sanderson 从一项 2002 年的实验讲起:将不同语言的文本一起压缩,可以显示相似性,并帮助重建语言谱系。该方法使用通用压缩,而非预先写入语言学知识。
Grant Sanderson 从一项 2002 年的实验讲起:将不同语言的文本一起压缩,可以显示相似性,并帮助重建语言谱系。该方法使用通用压缩,而非预先写入语言学知识。
将文档 B 的一小段附加到文档 A 后一起压缩,再与仅压缩 A 的大小比较。增加的大小大致反映适应 A 的压缩器处理 B 的效率;相似模式通常更容易被压缩。
其背后的思想是交叉熵:为一种分布设计的编码方案,面对另一种分布的数据时表现如何?同样的数学后来也出现在语言模型训练中。
编码与信息量
在玩具示例中,发给机器人的上、下、左、右指令分别以 1/2、1/4、1/8、1/8 的概率出现。合适的前缀码分别使用 1、2、3、3 比特。
在玩具示例中,发给机器人的上、下、左、右指令分别以 1/2、1/4、1/8、1/8 的概率出现。合适的前缀码分别使用 1、2、3、3 比特。
对于理想编码,概率为 q 的符号包含 −log₂q 比特信息。实际概率不一定对应整数比特,但较长消息可以逼近相应的平均值。
定义交叉熵
现在改变实际分布:上、下各为 1/8,左为 1/4,右为 1/2。如果继续使用旧编码,按新频率加权后的平均长度是每条指令 2.625 比特。
现在改变实际分布:上、下各为 1/8,左为 1/4,右为 1/2。如果继续使用旧编码,按新频率加权后的平均长度是每条指令 2.625 比特。
将实际分布记为 P,设计编码时使用的分布记为 Q。交叉熵为 H(P,Q) = −Σ pᵢ log₂qᵢ:在 P 下使用按 Q 设计的理想码长时的平均长度。不同资料对顺序的命名不同,因此应看公式。
考虑两个结果。若编码基于 Q = (1/2, 1/2),即使真实分布是 P = (0.9, 0.1),每个符号仍用一比特。交换角色后结果不同:针对偏斜分布优化的编码,在真实结果均匀时平均约需 1.74 比特。
交叉熵不对称:交换提供频率的分布和提供码长的分布,会改变结果。它不应被当作普通的对称距离。
固定 P 并改变 Q,最小值出现在 Q 与 P 相同时,最小值就是熵 H(P)。用压缩的语言说,让编码匹配真实来源,才能得到最优的平均理想码长。
压缩作为经验估计
语言谱系实验使用的是相关的经验思想,并非计算精确交叉熵。文本只是语言分布的样本,而 gzip 通过寻找重复序列进行压缩,并不能达到理论最优。
语言谱系实验使用的是相关的经验思想,并非计算精确交叉熵。文本只是语言分布的样本,而 gzip 通过寻找重复序列进行压缩,并不能达到理论最优。
语言模型预训练
对于语言模型,输入是一串 token,输出是下一个 token 的概率分布。训练通过改变模型参数,降低在大量文本上计算出的损失。
对于语言模型,输入是一串 token,输出是下一个 token 的概率分布。训练通过改变模型参数,降低在大量文本上计算出的损失。
在每个位置,取模型分配给实际出现的 token 的概率。该概率的负对数表示模型对这个 token 的惊讶程度;把这些值平均,就是标准的下一个 token 对数损失。
模型若给实际出现的 token 极低概率,就会受到较大惩罚。机器学习实现通常使用自然对数;改变对数底只会按常数缩放损失。
在这个抽象层次上,预训练就是最小化平均下一个 token 的惊讶程度。Sanderson 也指出,批处理、优化器和大规模训练本身都需要大量额外工程工作。
单个观察到的 token 可以表示成独热分布,因此其对数损失是交叉熵。Sanderson 认为更有解释力的方式是:考虑具有同一上下文的所有样本,以及它们的下一个 token 的经验分布。
为什么使用对数?
对于“my name is”这样的上下文,有些名字出现得比其他名字频繁。对这些样本的负对数概率取平均,就得到数据经验分布 P 与模型预测 Q 之间的交叉熵。
对于“my name is”这样的上下文,有些名字出现得比其他名字频繁。对这些样本的负对数概率取平均,就得到数据经验分布 P 与模型预测 Q 之间的交叉熵。
在 Q 上最小化这个平均值,会推动模型匹配数据中的频率。Sanderson 简述了一个拉格朗日乘数论证:当单样本损失只依赖模型给观察结果分配的概率,并要求恢复任意目标分布时,对数便自然出现。
约束是所有预测概率之和等于一。驻点条件使导数与 1/q 成正比,在这种局部评分形式的假设下得到对数。其他评分规则可以使用整个预测分布,因此这并不意味着所有有用的损失函数都必须是对数损失。
蒸馏与压缩
蒸馏让两个分布更加明确。训练较小的学生模型逼近较大的教师模型:对于给定上下文,比较学生的完整概率分布与教师的完整分布。
蒸馏让两个分布更加明确。训练较小的学生模型逼近较大的教师模型:对于给定上下文,比较学生的完整概率分布与教师的完整分布。
教师给出的概率比单个观察到的 token 提供更柔和、更丰富的信号。Sanderson 将其比作向高手学习棋局中多个可能的好招,而不是只看到某一局实际走出的一步。
压缩与训练的视角看起来不同,却使用同一个量。模型的平均惊讶程度可以解释为根据它的预测编码文本时的理想码长。
Sanderson 预告下一课将讨论如何把预测器变成压缩器。合适的编码算法可以使文本的编码长度接近预测器所认为的信息量。
KL 散度
KL 散度是交叉熵与熵之差:DKL(P‖Q) = H(P,Q) − H(P)。从压缩角度看,它衡量对分布为 P 的来源使用基于 Q 的编码,每个符号额外浪费的理想比特数。
KL 散度是交叉熵与熵之差:DKL(P‖Q) = H(P,Q) − H(P)。从压缩角度看,它衡量对分布为 P 的来源使用基于 Q 的编码,每个符号额外浪费的理想比特数。
两个分布一致时 KL 散度为零,但它通常不对称。因此它可用于衡量不匹配程度,却不是对称的距离度量。
Sanderson 留下一个练习:如果蒸馏使用 KL 散度而不是交叉熵,会发生什么?当教师分布 P 固定时,H(P) 对学生 Q 是常数,因此两个目标对学生的梯度和最优解相同。
同频道的其他文章
40:44EN → 简体中文
51:55EN → 简体中文
0:55EN → 简体中文
2:25EN → 简体中文
1:02EN → 简体中文
32:19EN → 简体中文