Advertisement

知识蒸馏系列:蒸馏算法【标准蒸馏、DML蒸馏(互学习蒸馏)、CML蒸馏(协同互学习蒸馏)、U-DML蒸馏(统一互学习蒸馏)】

阅读量:

知识蒸馏(Knowledge Distillation)是一种经典的模型压缩技术,通过引导轻量化的学生模型模仿性能更好的教师模型(或多个教师的集成),从而在不改变学生结构的情况下提升性能。该技术起源于2015年Hinton团队提出的响应式蒸馏,并逐步发展出包括标准蒸馏、DML蒸馏、U-DML蒸馏和CML蒸馏在内的多种方法。其中,标准蒸馏使用大模型作为教师;DML通过两个相同结构的学生模型互相学习;U-DML在标准DML的基础上加入中间输出特征的监督信号;而CML则结合了多个学生模型与较大预训练教师模型协同互学。这些方法各有特点,在不同场景中展现出不同的优势。

知识蒸馏技术(Knowledge Distillation, 简记为 KD)是一种经典的深度学习模型压缩技术。其核心思想是通过引导轻量化的学生网络"复制"教师网络[性能]更好且架构更为复杂的 teacher models,在不修改学生网络架构的前提下显著提升其性能。

2015年,Hinton团队开发了一种基于"响应"的知识蒸馏技术,该方法通常被归类为"vanilla-KD [1]"并引发对该领域研究的广泛关注,随后基于"特征"和"关系"的KD算法也随之开发出了多种变体。

现有的知识蒸馏方法主要有以下4种,

  • 常规蒸馏
  • DML 蒸馏(交互式 DML 蒸馏)
  • CML 蒸馏(协同型 CML 蒸馏)
  • U-DML 蒸馏(统一型 U-DML 蒸馏)

1、标准蒸馏

典型的蒸馏流程通常利用一个大模型作为 Teacher 指导 Student 进行性能优化

大模型在训练过程中权重不更新。

2、DML蒸馏

随后发展出基于DML的互学习蒸馏方法。该方法即通过两个结构完全一致的模型进行交互学习,在相较于之前的方案中无需过多依赖大型Teacher模型的情况下实现了蒸馏训练的过程更加简便,并且能够显著提升模型产出效率。

该系统支持各网络间的知识共享机制,默认情况下无需子网络结构一致或依赖预训练模型(注:如图所示的是两个结构一致的模型进行知识共享),且系统允许用户自由配置参与的学习任务数量与方式(注:无需限定子网络的数量)。特别地,在配置文件中增加对应参数即可完成扩展功能部署。

3、U-DML蒸馏

对于遵循标准流程的 DML 方法而言,在蒸馏过程中所使用的损失函数主要包含来自最终输出层的监督信号;然而,在两个结构完全一致的模型中,在接受完全相同的输入时,它们对相同输入的中间特征输出期望则一致。

在此基础上,在最后输出层监督方面(...),可将其视为损失函数,并进一步添加中间输出的特征图这一补充信息作为 supervision 信号进行训练优化

4、CML蒸馏

PP-OCRv2文字检测模型主要采用了三个模型之间的协同互化知识蒸馏机制,在具体实现过程中, 不仅包含了两个具有相同结构的学生模型之间的相互学习过程, 还融合了较大规模教师模型的知识。该方法与现有蒸馏算法进行了系统性对比分析, 体现了其独特的优势和应用价值

在本系统中,在Teacher和学生之间的知识蒸馏过程中,“教师”端的Teacher模型被定义为大型语言模型,并通过预训练任务完成相关参数的学习;而学生端则采用了结构完全一致的小型网络架构,在教师的指导与监督下完成学习任务。具体而言,“教师”端经过预训练后固定的权值保持不变;而每个学生的学习过程均需更新其相应的可学习参数。




知识蒸馏系列的小站(第一期):三种基础蒸馏技术详解

系统知识蒸馏方法综述_探讨其具体实现路径_村民的菜篮子的博客-

知识蒸馏系列 - 知乎

经典简读

知识蒸馏系列 - 相关搜索 - 知乎

全部评论 (0)

还没有任何评论哟~