大规模机器学习和深度学习模型越来越普遍。例如,GPT-3 使用 570 GB 文本进行训练,包含 1750 亿个参数。然而,虽然训练大型模型有助于提高最先进的性能,但部署如此繁琐的模型(尤其是在边缘设备上)并不简单。
此外,大多数数据科学建模工作侧重于训练单个大型模型或不同模型的集合,以便在保留验证集上表现良好,而该验证集通常不能代表现实世界的数据。
训练和测试目标之间的这种不一致导致了机器学习模型的开发,这些模型在策划的验证数据集上产生了良好的准确性,但在对实际测试数据进行推理时通常无法满足性能、延迟和吞吐量基准。
知识蒸馏[1]通过捕获复杂机器学习模型或模型集合中的知识并将其“蒸馏”为更小的单一模型来帮助克服这些挑战,该模型更容易部署,而且不会显着降低性能。
本文简单描述知识蒸馏、其基本原理、训练方案和算法;更深入地研究知识蒸馏在图像、文本和音频深度学习中的应用。
一、知识蒸馏的基本概念
知识蒸馏是指将知识从大型笨重模型或模型集转移到可以在现实世界约束下实际部署的单个较小模型的过程。本质上,它是一种模型压缩形式,由 Bucilua 及其合作者于 2006 年首次成功演示[2]。
知识蒸馏更常见于与复杂架构(包括多个层和模型参数)相关的神经网络模型。因此,随着过去十年深度学习的出现,及其在语音识别、图像识别和自然语言处理等多个领域的成功,知识蒸馏技术在实际应用中获得了突出的地位[3]。
部署大型深度神经网络模型的挑战对于内存和计算能力有限的边缘设备尤其重要。为了应对这一挑战,首先提出了一种模型压缩方法[2],将大型模型中的知识转移到训练较小的模型中,而不会造成任何显着的性能损失。Hinton 等人将这种从较大模型中学习小模型的过程形式化为“知识蒸馏”框架 [1]。
如图 1 所示,在知识蒸馏中,小型“学生”模型学习模仿大型“教师”模型,并利用教师的知识来获得相似或更高的准确性。在下一节中,我将更深入地研究知识蒸馏框架及其底层架构和机制。
图1.知识蒸馏框架
二、知识蒸馏原理
知识蒸馏系统由三个主要组成部分组成:知识、蒸馏算法和师生架构[3]。
2.1 知识
在神经网络中,知识通常是指学习到的权重和偏差。同时,大型深度神经网络的知识来源具有丰富的多样性。典型的知识蒸馏使用逻辑作为专家知识的来源,而其他的则关注中间层的权重或激活。其他类型的相关知识包括不同类型的激活和神经元之间的关系或模型本身的参数。
不同形式的知识分为三种不同类型:基于响应的知识、基于特征的知识和基于关系的知识。图 2 说明了大模型中的这三种不同类型的知识。

图 2. 大模型知识
2.1.1 基于响应的知识
如图 2 所示,基于响应的知识侧重于教师模型的最终输出层。假设学生模型将学习模仿教师模型的预测。如图 3 所示,这可以通过使用称为蒸馏损失的损失函数来实现,该函数分别捕获学生模
3万+


——模型蒸馏&spm=1001.2101.3001.11974&articleId=136469078&d=1&t=3&u=bb6bd8aae84d4874b372b734a5e3fe96)

被折叠的 条评论
为什么被折叠?



