一个知识蒸馏的简单介绍,一看就懂

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Prakhar Ganesh

编译:ronghuaiyang

导读

对教师学生网络进行一个初步的了解。

什么是知识蒸馏?

近年来,神经模型在几乎所有领域都取得了成功,包括极端复杂的问题。然而,这些模型体积巨大,有数百万(甚至数十亿)个参数,因此不能部署在边缘设备上。

知识蒸馏指的是模型压缩的思想,通过一步一步地使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么。“软标签”指的是大网络在每一层卷积后输出的feature map。然后,通过尝试复制大网络在每一层的输出(不仅仅是最终的损失),小网络被训练以学习大网络的准确行为。

一个知识蒸馏的简单介绍,一看就懂一个知识蒸馏的简单介绍,一看就懂

我们为什么需要这样做?

深度学习在计算机视觉、语音识别、自然语言处理等众多领域取得了令人难以置信的成绩。然而,这些模型中的大多数在移动电话或嵌入式设备上运行的计算成本太过昂贵。要了解更多关于模型压缩的需求和涉及的常见技术,请访问下面的博客:https://towardsdatascience.com/machine-learning-models-compression-and-quantization-simplified-a302ddf326f2。

这样和从头训练一个模型有什么不一样?

显然,模型越复杂,理论搜索空间越大。但是,如果我们假设较小的网络也能实现相同(甚至相似)的收敛,那么教师网络的收敛空间应该与学生网络的解空间重叠。

不幸的是,仅凭这一点并不能保证学生网络收敛在同一点。学生网络的收敛点可能与教师网络有很大的不同。但是,如果引导学生网络复制教师网络的行为(教师网络已经在更大的解空间中进行了搜索),则其预期收敛空间会与原有的教师网络收敛空间重叠。

一个知识蒸馏的简单介绍,一看就懂

教师学生网络 — 到底如何工作?

  1. 训练教师网络:首先使用完整数据集分别对高度复杂的教师网络进行训练。这个步骤需要高计算性能,因此只能在离线(在高性能gpu上)完成。

一个知识蒸馏的简单介绍,一看就懂

一个高度复杂和深度的网络可以用作教师网络的例子:GoogleNet
  1. 构建对应关系:在设计学生网络时,需要建立学生网络的中间输出与教师网络的对应关系。这种对应关系可以直接将教师网络中某一层的输出信息传递给学生网络,或者在传递给学生网络之前进行一些数据增强。

一个知识蒸馏的简单介绍,一看就懂

构建对应关系的例子
  1. 通过教师网络前向传播:教师网络前向传播数据以获得所有中间输出,然后对其应用数据增强(如果有的话)。

  2. 通过学生网络反向传播:现在利用教师网络的输出和学生网络中反向传播误差的对应关系,使学生网络能够学会复制教师网络的行为。

下一步工作?

对于上述传统的学生教师,有很多新的修改建议,比如引入多名教师(即将集成网络转换为单一网络),引入助教(教师先教助教,助教再教学生)等。然而,该领域还很年轻,在许多维度上还未被探索。

一个知识蒸馏的简单介绍,一看就懂

END

英文原文:https://towardsdatascience.com/knowledge-distillation-simplified-dd4973dbc764

一个知识蒸馏的简单介绍,一看就懂

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧一个知识蒸馏的简单介绍,一看就懂