当前位置: 首页 > news >正文

深度学习中的模型知识蒸馏

      知识蒸馏(knowledge distillation)最初由Hinton等人于2015年提出。知识蒸馏是机器学习中的一种模型优化和压缩技术,用于在不显著降低准确率的情况下降低模型的复杂度和规模,旨在将大型预训练模型(即"teacher model")的学习成果迁移到规模较小的"student model"。它在深度学习中被用作模型压缩和知识迁移的一种形式,尤其适用于大规模深度神经网络。知识蒸馏是一种深度学习过程,将知识从一个复杂且训练有素的模型(称为"teacher)"迁移到一个更简单、更轻量级的模型(称为"student")。知识蒸馏的目标是训练一个更紧凑的模型来模拟更大、更复杂的模型,即训练学生网络,使其预测结果与教师网络的预测结果相匹配。

      知识蒸馏不依赖于任何特定的神经网络架构,甚至不要求教师网络和学生网络具有相同的架构:它可以应用于任何深度学习模型。

      基本上,知识蒸馏系统由三个关键部分组成:知识、蒸馏算法和师生架构(teacher-student architecture),如下图所示:

      1. 知识:包括基于响应的知识、基于特征的知识和基于关系的知识,如下图所示展示了教师模型中不同知识类别的直观示例

      (1).response-based knowledge:基于响应的知识通常指教师模型最后输出层的神经响应。主要思想是直接模仿教师模型的最终预测。基于响应的知识蒸馏简单而有效,用于模型压缩,并已广泛用于不同任务和应用。然而,基于响应的知识通常依赖于最后一层的输出(如soft targets,软目标),因此无法解决教师模型的中级监督(intermediate-level supervision)问题,而这对于使用深度神经网络进行表征学习(representation learning)至关重要。由于软逻辑(soft logits)实际上是类概率分布,因此基于响应的知识蒸馏也仅限于监督学习。如下图所示显示了典型的基于响应的知识蒸馏模型:

      (2).feature-based knowledge:深度神经网络擅长学习多层次的特征表示(multiple levels of feature representation),并不断提升其抽象程度。这被称为表征学习。因此,最后一层的输出和中间层的输出(即特征图)都可以用作知识来监督学生模型的训练。具体来说,来自中间层的基于特征的知识是基于响应的知识的良好扩展,特别是对于更薄(thinner)更深网络的训练。如下图所示显示了通用的基于特征的知识蒸馏模型:

      (3).relation-based knowledge:探索不同层或数据样本之间的关系。如下图所示显示了典型的基于实例关系的知识蒸馏模型:

      2. 蒸馏算法:

      (1).对抗蒸馏:如下图所示:

      (2).多教师蒸馏:多个教师网络可以在训练学生网络期间单独和整体用于蒸馏。如下图所示:

      (3).跨模态蒸馏:如下图所示:

      (4).基于图的蒸馏:使用图作为教师知识的载体或使用图来控制教师知识的消息传递。如下图所示:

      (5).基于注意力的蒸馏:一些注意力机制用于知识蒸馏中以改善学生网络的性能。

      (6).无数据(data-free)蒸馏:克服由于隐私、合法性、安全性和保密性问题导致的数据不可用问题。数据是新生成或合成生成的。如下图所示:

      (7).量化蒸馏:如下图所示:

      (8).终生(lifelong)蒸馏

      (9).基于NAS(neural architecture search)的蒸馏

      3. 师生架构:在知识蒸馏中,师生架构是形成知识迁移(knowledge transfer)的通用载体。教师模型和学生模型结构之间的关系如下图所示:

      蒸馏方案(训练方案):根据教师模型是否与学生模型同时更新,知识蒸馏的学习方案可以直接分为三个主要类别:离线蒸馏、在线蒸馏和自蒸馏,如下图所示:

      (1).离线蒸馏:整个训练过程有两个阶段:1).在蒸馏之前,首先在一组训练样本上对大型教师模型进行训练;2).教师模型用于以logits或中间特征的形式提取知识,然后在蒸馏过程中用于指导学生模型的训练。离线蒸馏中的第一阶段通常不作为知识蒸馏的一部分讨论,即假设教师模型是预定义的。离线蒸馏是许多大语言模型知识蒸馏方法的典型特征,在这些方法中,教师网络通常是一个更大的专有模型,其模型权重无法更改。

      (2).在线蒸馏:教师模型和学生模型同时更新,整个知识蒸馏框架是端到端可训练的。在线蒸馏是一种具有高效并行计算的单阶段端到端训练方案。

      (3).自蒸馏:在自蒸馏中,教师和学生模型使用相同的网络。这可以被视为在线蒸馏的特殊情况。

      离线蒸馏意味着知识渊博的教师向学生传授知识;在线蒸馏意味着教师和学生一起相互学习;自蒸馏意味着学生自己学习知识

      蒸馏损失(distillation loss):知识蒸馏中的一种特殊类型的损失函数,负责将教师网络的"软知识"传递给学生网络。

      知识蒸馏技术已成功应用于自然语言处理(NLP)、语音识别、视觉识别和推荐系统等多个领域。近年来,知识蒸馏的研究对大型语言模型(LLM)尤为重要。对于LLM而言,知识蒸馏已成为一种有效的手段,可以将领先的专有模型的高级功能迁移到更小、更易于访问的开源模型中。

      注:以上主要内容及图来自于:https://arxiv.org/pdf/2006.05525

      GitHub:https://github.com/fengbingchun/NN_Test

http://www.dtcms.com/a/313387.html

相关文章:

  • 深度学习中卷积与互相关
  • 记录使用ruoyi-flowable开发部署中出现的问题以及解决方法
  • FastAPI-Vue3-Admin 一款Python 全栈融合的高可用中后台快速开发平台方案
  • golang 函数选项模式
  • 数据结构(概念及链表)
  • 【数据结构】队列的顺序存储与链式存储(C语言版)
  • 基于深度学习的医学图像分析:使用变分自编码器(VAE)实现医学图像生成
  • (FD Conv)Frequency Dynamic Convolution for Dense Image Prediction论文精读(逐段解析)
  • 07.config 命令实现动态修改配置和慢查询
  • [硬件电路-138]:模拟电路 - 什么是正电源?什么是负电源?集成运放为什么有VCC+和VCC-
  • Unix 发展史概览
  • 探索 Zephyr 项目:高效、可扩展的实时操作系统
  • 源代码本地安装funasr
  • C语言数据结构(6)贪吃蛇项目1.贪吃蛇项目介绍
  • 有限元方法中的数值技术:三角矩阵求解
  • Vulnhub Corrosion2靶机复现
  • 机器人抓取流程介绍与实现——机器人抓取系统基础系列(七)
  • 腾讯云CentOS7镜像配置指南
  • Pytorch实现一个简单的贝叶斯卷积神经网络模型
  • Java 中也存在类似的“直接引用”“浅拷贝”和“深拷贝”
  • [创业之路-530]:创业公司五维架构设计:借鉴国家治理智慧,打造敏捷型组织生态
  • mysql8.0集群技术
  • 第13章 文件输入/输出
  • 知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 KL散度公式对应
  • 文件拷贝-代码
  • Doris json_contains 查询报错
  • 数据结构总纲以及单向链表详解:
  • 【LeetCode刷题指南】--对称二叉树,另一颗树的子树
  • [创业之路-531]:知识、技能、技术、科学之间的区别以及它们对于职业的选择的指导作用?
  • 【OpenGL】LearnOpenGL学习笔记02 - 绘制三角形、矩形