什么是模型蒸馏?

什么是模型蒸馏?
收藏者
0
被浏览
455

3 个回答

lifesinger LV

发表于 前天 23:42

模型蒸馏,可以把它理解成“让一个小模型跟着一个大模型学习”。

大模型通常很聪明,但体积大、运行慢、成本高。小模型体积小、速度快,但能力可能弱一些。模型蒸馏就是想办法把大模型的本领,尽量教给小模型。

打个比方。大模型像一位经验丰富的老师,小模型像一名学生。学生不光要知道标准答案,还要学习老师解题时的思路。比如一道选择题,标准答案只告诉学生“选 A”,但老师还会说“A 最可能,B 也有点像,C 和 D 基本不可能”。这种更细的信息,能帮助学生理解题目。

在模型蒸馏里,大模型会对同一个问题给出自己的判断结果,比如每个类别的概率分布。小模型不仅学习真实答案,也学习大模型输出的这种“概率分布”。这样,小模型就能学到一些只靠标准答案学不到的规律。

有时还会用“温度”这个技巧,让大模型的概率分布变得更柔和,好比老师把思路讲得更细一点,方便学生学。

所以,模型蒸馏的核心就是:用大模型当老师,把小模型训练得更强,同时保留小模型体积小、速度快、容易部署的优点。它不是简单复制大模型,而是让小模型学习大模型的判断方式和知识。

54sh54sh LV

发表于 前天 22:24

模型蒸馏是一种模型压缩和知识迁移方法。它的核心思想是:先用一个能力较强的大模型作为“教师模型”,再用教师模型的输出信息来训练一个更小的“学生模型”,让学生模型尽量模仿教师模型的行为。这样,小模型可以在参数量更少、推理速度更快、部署成本更低的情况下,获得接近大模型的效果。

常见做法包括:让学生模型学习教师模型输出的“软标签”概率分布,而不仅是真实标签;通过温度参数平滑概率分布;结合蒸馏损失和原任务损失共同训练。教师模型还可以提供中间层特征、注意力分布等知识。

模型蒸馏的优点主要是压缩模型、降低计算和存储成本、提升小模型性能;难点在于教师知识是否容易被学生吸收,以及蒸馏策略和超参数设计是否合理。它常用于大模型小型化、端侧部署、加速推理等场景。

这个 LV

发表于 前天 21:14

模型蒸馏是一种把较大、较强模型的知识转移给较小、较轻模型的技术。这里的“大模型”通常称为教师模型,“小模型”称为学生模型。训练学生模型时,除了让它学习真实标签,还会让它模仿教师模型对样本的输出分布,从而在参数量更少、推理速度更快的情况下尽量接近教师模型的效果。

传统监督学习只告诉模型“这张图是猫”,这种标签叫硬标签。教师模型输出的则往往是一组概率,比如猫0.85、狗0.10、兔子0.05,这叫软标签。软标签不仅包含正确答案,还包含类别之间的相似关系。例如教师认为某张猫图有点像狗、但不太像汽车,这种“暗知识”能给学生模型提供更丰富的监督信号。学生模型只学硬标签时,信息量较少;学习软标签时,它能看到教师如何区分容易混淆的类别,因此往往学得更稳、泛化更好。

具体做法通常涉及温度参数。设教师模型输出的 logits 为 z,普通 softmax 为 p_i=exp(z_i)/Σ_j exp(z_j)。蒸馏时使用带温度 T 的 softmax:p_i^T=exp(z_i/T)/Σ_j exp(z_j/T)。T 越大,输出分布越平滑,类别间的相对关系越明显;T=1 时就是普通 softmax。训练学生模型时,一方面用真实标签计算交叉熵损失,另一方面用教师和学生在同一温度下的软输出计算 KL 散度或均方误差,再把两项损失加权相加。训练完成后,学生模型推理时通常恢复 T=1,像普通模型一样使用。

模型蒸馏之所以有效,一个原因是软标签相当于一种正则化,能减少学生模型对训练集硬标签的过拟合;另一个原因是教师输出提供了类别相似性和样本难度的信息。教师模型可以是大规模预训练模型、集成模型,也可以是多个模型的平均输出。学生模型不必和教师结构相同,可以更窄、更浅,或换成更适合部署的架构。根据教师是否固定,可分为离线蒸馏、在线蒸馏和自蒸馏;根据模仿对象,也可分为输出层蒸馏、特征层蒸馏和关系蒸馏。输出层蒸馏关注最终概率分布,特征蒸馏关注中间表示,关系蒸馏关注样本之间或层之间的关系。

模型蒸馏常用于模型压缩和部署,比如把大语言模型、视觉模型或集成模型的能力迁移到手机、边缘设备和小型服务上。它也有局限。教师模型如果有偏差,学生可能继承偏差;教师和学生容量差距过大时,学生未必能完全吸收教师知识;温度、损失权重和中间层匹配方式需要调参;如果教师输出涉及敏感数据,还要考虑隐私和合规问题。

您需要登录后才可以回帖 登录 | 立即注册