您好,我是 Rijul,我正在构建 LiveReview —— 一个对 blast-radius 感知的 AI 代码审查工具,专为您的业务关键系统而设计。点个星 以帮助开发者发现该项目、试用并分享反馈,从而帮助改进产品。
想象您已经训练了一个在其任务上表现非常出色的巨型 AI 模型,例如识别照片中的物体或回答问题。
但有一个问题。该模型非常庞大。它需要强大的服务器,运行成本高昂,并且可能在手机、智能手表或汽车上运行太慢或太大。
您希望得到一个性能几乎相当、运行更快且成本更低的小型模型。
一种方法是使用您的原始数据从头训练一个小型模型。然而,它可能无法达到与大型模型相当的性能水平。
知识蒸馏 提供了一种另一种方法。除了仅从原始数据学习外,小型模型还会从大型模型学习,就像学生向老师学习而非仅仅研读教材一样。
让我们看看它是如何工作的。
1. 教师和学生
想想学习数学的两种方式。
第一种方式,您会得到一本包含问题及其最终答案的教材。
第二种方式,除了教材外,您还有导师,导师会解释他们解决每个问题的思路。导师可能会向您展示,尽管答案不同,但一个问题可能与另一个问题相似。
第二种方式提供了额外的信息,有助于您的学习。
知识蒸馏将类似的思想应用于 AI 模型:
- 教师模型: 已经表现良好的较大模型。
- 学生模型: 从教师模型学习的较小模型。
教师提供额外的学习信号,帮助学生再现其一些能力。
2. 从正确答案之外的学习
假设我们有一个 AI 模型,能够将动物照片分类到三个类别:
- 猫
- 狗
- 狐狸
当模型收到一张猫照片时,它会为每个类别输出一个分数。这些分数称为 logits。一个 softmax 函数能把它们转换为总和为 100% 的概率。
例如,老师可能会输出这些概率:
| 类别 | 概率 |
|---|---|
| Cat | 90% |
| Dog | 9% |
| Fox | 1% |
老师将 cat 预测为最可能的类别,因为它给该类别分配了最高的概率。
但还有另一点需要注意:它认为狗比狐狸更可能。
这些较小的概率提供了关于老师如何区分这些类别的额外信息。
硬标签 vs. 软标签
在普通的监督分类中,训练目标可能是一个硬标签:
Cat = 100%, Dog = 0%, Fox = 0%
这告诉模型哪个类别是正确的,但它没有直接传达其他类别之间的比较。
另一方面,老师的输出给出了一个分布:
Cat = 90%, Dog = 9%, Fox = 1%
这些被称为软标签。它们提供了老师在所有三个类别上的相对置信度信息。
老师实际上在说:“这是一只猫。狗的可能性较低,而狐狸的可能性更低。”
这些信息可以帮助学生学习简单的正确或错误标签无法表达的区别。
杰弗里·辛顿及其同事将老师输出概率中包含的有用信息称为“暗知识”。
特别是那些不太可能的替代方案所蕴含的信息。
核心思想是:
让学生从老师的完整概率分布中学习,而不仅仅是正确答案。
3. 让隐藏信息更易察觉:温度
上面的例子存在一个问题。
想象老师非常自信,并给出这些概率:
| 类别 | 概率 |
|---|---|
| Cat | 99.9% |
| Dog | 0.09% |
| Fox | 0.01% |
狗和狐狸概率很小。它们之间的差异可能提供有用的学习信号,但老师输出主要由猫预测决定。
这就是 温度起作用的地方。
温度通常用 (T) 表示,它控制在对老师的 logits 应用 softmax 时,概率分布变得有多软或有多锐利。
- T = 1: 这是通常的 softmax 分布。
- 更高温度: 概率变得更均匀,不太可能的类别之间的差异更易观察。
- 较低温度: 分布变得更锐利,给最高得分的类别更大权重。
例如,在温度较高时,老师可能会产生如下分布:
| 类别 | 示例概率 |
|---|---|
| Cat | 70% |
| Dog | 22% |
| Fox | 8% |
这些数字仅作示例,并不是某个特定温度的必然结果。
重要的是排名保持不变,而概率分布变得更软。
学生现在可以获得一个更具信息量的信号,了解老师如何关联不同的类别。
4. 学生实际上是如何学习的
学生需要学习两件事:
- 如何模仿老师。
- 如何从原始训练数据中预测正确答案。
在训练过程中,这些目标可以合并为一个损失函数。
A. 匹配老师
首先,学生使用相同的温度生成自己的概率分布。
训练过程将学生的软化概率与老师的软化概率进行比较。
一种衡量这种差异的方法是 KL 散度。它用来衡量两个概率分布有多不同。
通过训练让学生减少这种差异,使其输出更接近老师的输出。
B. 匹配正确的标签
学生还会使用数据集中的实际标签进行训练。
例如,如果图像中包含一只猫,学生仍应学习猫是正确的类别。
这通常通过交叉熵损失来实现,这是训练分类模型的标准方法。
C. 结合两种学习信号
两种损失可以通过加权求和结合:
- 蒸馏损失: 鼓励学生模仿教师。
- 标签损失: 鼓励学生预测正确答案。
权重决定每个目标在训练中的贡献程度。
这种组合帮助学生既从教师的行为,也从原始训练标签中学习。
5. 知识蒸馏过程
以下是整体工作流程:
- 准备教师: 训练一个大型模型或使用现有模型。
- 选择学生: 选择适合您用例的较小模型架构。
- 准备训练数据: 通过教师运行示例以获取其输出。
- 训练学生: 使用教师的输出和原始标签计算训练损失。
- 部署学生: 训练和评估完成后,使用较小的模型进行推理。教师在部署期间通常不需要。
结果是一个学生模型,旨在尽可能保留教师的有用行为,同时只需更少的资源。
6. 知识蒸馏真的有效吗?
是的。一个著名的例子是 DistilBERT,这是由 Hugging Face 开发的 BERT 的较小版本。
根据其创建者的说法, DistilBERT 大约比 BERT 小 40%、快 60%,同时在评估基准测试上保留了约 97% 的语言理解能力。
这些数字描述了该特定模型及其评估设置。结果会因教师、学生架构、训练数据和任务而异。
知识蒸馏也与大型语言模型相关。
较小的语言模型可以使用较大模型生成的输出进行训练。这是向老师学习的一种形式,尽管具体方法与用于分类的基于概率的蒸馏不同。
例如,较大的模型可能会生成一组问题的答案。这些答案随后可以用作较小模型的训练样例。
这有助于将较大模型的一些能力迁移到运行成本更低的模型中。
然而,蒸馏并不能保证学生模型能够达到老师模型的水平。训练数据的质量、学生模型的架构以及蒸馏方法都很重要。
结论
知识蒸馏是将较大 AI 模型的有用行为迁移到较小模型的一种方式。
学生不仅可以从正确答案中学习,还可以从老师的输出概率或其他信号中学习。这为学生提供了关于老师如何处理任务的额外信息。
目标是在降低模型运行成本和资源需求的同时,尽可能保留有用的性能。
简而言之,知识蒸馏帮助较小的模型通过向较大模型学习,以更少的资源实现更多功能。
您团队的注意力有限,AI 生成代码的洪流使得在不减慢您的情况下,保持生产环境的可靠和安全变得更加困难。
我正在构建 LiveReview,这是一种面向业务关键系统的、具备爆炸半径感知能力的 AI 代码审查工具。
与其对每个 diff 赋予同等重视,不如让 LiveReview 根据爆炸半径对每个更改进行评分 — — 其影响通过调用图传播的范围 — — 这样您就能将注意力集中在真正重要的地方。
将代码审查工作集中在业务风险最高的地方 — — 而不是将其平均分配到每个 diff。
⭐ 在GitHub上点亮星标:

LiveReview:面向关键业务系统的风险感知AI代码审查
LiveReview是一套面向整个组织的风险感知工具,专为AI生成的代码打造。它解决两类问题:判断哪些Pull Request完全可以跳过审查,以及在仍需人工审查的代码中优先标记出高风险部分。
自动批准:让安全的50%代码免人工直接合并
安全地自动批准最多50%的Pull Request。通过风险评分判断哪些MR/PR足够安全、无需人工审核即可合并,让你的团队把评审时间留给高风险和关键改动。
demo.mp4
LiveReview自动批准低风险改动,同时把高风险改动转给人工评审。点击播放。
风险评分综合三个信号得出:
- 大模型语义分析
- 基于你生产环境风险信号训练的自定义机器学习模型
- 基于静态图谱的代码库分析
灵感来自 Meta 的 RADAR 论文:生产事故减少 50 倍,回滚减少 3 倍,评审速度提升 35%。
工作原理:
- 追踪结果——记录生产事故并……
点击下方链接,用你的代码库试用 LiveReview:




