DeepSeek逆天,核心是 知识蒸馏(Knowledge Distillation, KD),一项 AI 领域的关键技术

本文原文链接

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 :

免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备
免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,完成职业升级, 薪酬猛涨!加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷1)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷2)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷3)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领

免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取


DeepSeek逆天,核心是 知识蒸馏(Knowledge Distillation, KD),一项 AI 领域的关键技术

尼恩特别说明: 尼恩的文章,都会在 《技术自由圈》 公号 发布, 并且维护最新版本。 如果发现图片 不可见, 请去 《技术自由圈》 公号 查找

尼恩:LLM大模型学习圣经PDF的起源

在40岁老架构师 尼恩的读者交流群(50+)中,经常性的指导小伙伴们改造简历。

经过尼恩的改造之后,很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会,拿到了大厂机会。

然而,其中一个成功案例,是一个9年经验 网易的小伙伴,当时拿到了一个年薪近80W的大模型架构offer,逆涨50%,那是在去年2023年的 5月。

  • 惊天大逆袭:8年小伙20天时间提75W年薪offer,逆涨50%,秘诀在这

不到1年,小伙伴也在团队站稳了脚跟,成为了名副其实的大模型 应用 架构师。

接下来,尼恩架构团队,通过 梳理一个《LLM大模型学习圣经》 帮助更多的人做LLM架构,拿到年薪100W, 这个内容体系包括下面的内容:

  • python安装、vscode安装、conda安装:一文搞定Python的开发环境(史上最全)

  • Python学习圣经:从0到1精通Python,打好AI基础

  • LLM大模型学习圣经:从0到1吃透Transformer技术底座

  • 《LangChain学习圣经:从0到1精通LLM大模型应用开发的基础框架》

  • 《LLM大模型学习圣经:从0到1精通RAG架构,基于LLM+RAG构建生产级企业知识库》

  • 《SpringCloud + Python 混合微服务架构,打造AI分布式业务应用的技术底层》

  • 《LLM大模型学习圣经:从0到1吃透大模型的顶级架构》

  • 《LLM 智能体 学习圣经:从0到1吃透 LLM 智能体 的架构 与实操》

  • 《LLM 智能体 学习圣经:从0到1吃透 LLM 智能体 的 中台 架构 与实操》

以上学习圣经 的 配套视频, 2025年 5月份之前发布。

1 火爆天际的 DeepSeek 与 模型蒸馏技术

最近大火的深度求索DeepSeek-V3模型仅用557万美元的训练费用,就达到了顶尖模型的效果。

国外独立评测机构Artificial Analysis在测试后声称,DeepSeek-V3超越了迄今为止所有开源模型。

DeepSeek-V3的训练仅使用2048个H800 GPU,总训练GPU卡时为2788千小时(其中预训练为2664千小时)。

与之相对比,根据黄仁勋在GTC2024上的演讲内容,GPT-4 MoE使用8000个H100训练了90天,合计约为17280千卡时,相当于DeepSeek-V3的6.2倍

DeepSeek-V3训练提效的原因主要包括:低精度计算、小参数量和高质量数据等。

据DeepSeek-V3的技术文档,该模型使用蒸馏技术(Distillation)生成的高质量数据提升了训练效率。

模型蒸馏是一种知识迁移技术,其核心在于将一个大规模、预训练的教师模型(Teacher Model)所蕴含的知识传递给一个规模较小的学生模型(Student Model)。

其目标是打造一个在性能上与大型模型相近,但计算资源消耗大幅降低的紧凑模型,恰似把一部厚重的百科全书浓缩成一本轻便实用的口袋指南,在精简的同时确保关键信息不流失

火爆天际的 DeepSeek团队发布的DeepSeek-R1,其670B参数的大模型通过强化学习与蒸馏技术,成功将能力迁移至7B参数的轻量模型DeepSeek-R1-7B中,各方面超越了非推理模型如 GPT-4o-0513。

DeepSeek-R1-14B 在所有评估指标上超过了 QwQ-32BPreview,而 DeepSeek-R1-32B 和 DeepSeek-R1-70B 在大多数基准测试中显著超过了 o1-mini。

在人工智能领域,大型语言模型(如GPT-4、DeepSeek-R1)凭借数千亿级参数,展现出卓越的推理与生成能力。然而,其庞大的计算需求与高昂的部署成本,严重限制了其在移动设备、边缘计算等场景的应用

对于大多数实际应用案例来说,特定任务中性能最好的模型往往过于庞大、缓慢或昂贵,但它们具有优秀的性能,这来自于它们的规模和在大量训练数据上进行预训练的能力。

相反,小型模型虽然速度更快、计算要求更低,但在准确性、精细度和知识容量方面却不及参数更多的大型模型

DeepSeek 蒸馏后的模型超越同规模传统模型,甚至接近OpenAI的顶尖小模型OpenAI-o1-mini。

这些结果展示了蒸馏的强大潜力。知识蒸馏已经成为一种重要的技术手段

下面45岁老架构师,由浅入深 带大家了解一下 知识蒸馏的 底层原理。当然,这个需要大家具备 神经网络和 Transform架构的基础知识, 如果不了解,请大家看看尼恩的介绍视频。

《 由浅入深,帮大家从0到1,彻底的理解 神经网络和 Transform架构的基础知识》

另外,尼恩架构团队的顶级 AI 架构视频, 已经基本录制完成,即将 全面发布,

image.png

这个版本的视频, 为大家 打造一个 从资深架构视角 讲的 大语言 模型 架构视频, 而不是 算法视角 的LLM视频。

2 什么是知识蒸馏?

知识蒸馏是一种机器学习技术,目的是将预先训练好的大型模型(即 "教师模型")的学习成果转移到较小的 "学生模型 "中。

在深度学习中,它被用作模型压缩和知识转移的一种形式,尤其适用于大规模深度神经网络。

知识蒸馏的本质是知识迁移,模仿教师模型的输出分布,使学生模型继承其泛化能力与推理逻辑。

教师模型(Teacher Model):通常为参数量大、训练充分的复杂模型(如DeepSeek-R1),其输出不仅包含预测结果,还隐含类别间的相似性信息。

学生模型( Student Model):结构精简、参数较少的小型模型,通过匹配教师模型的“软目标”(Soft Targets)实现能力迁移。

传统深度学习的目标是训练人工神经网络,使其预测结果更接近训练数据集中提供的输出示例,而知识蒸馏与传统监督学习不同,知识蒸馏要求学生模型不仅拟合正确答案(硬目标),还让学生模型学习教师模型的“思考逻辑”——即输出的概率分布(软目标)。

例如在图像分类任务中,教师模型不仅会指出“这张图是猫”(90%置信度),还会给出“像狐狸”(5%)、“其他动物”(5%)等可能性。

这些概率值如同老师批改试卷时标注的“易错点”,学生模型通过捕捉其中的关联性(如猫与狐狸的尖耳、毛发特征相似),最终学会更灵活的判别能力,而非机械记忆标准答案。

image.png

2.1 知识蒸馏的工作原理

在2015 年 开创性论文《Distilling the Knowledge in a Neural Network》 里,作者用昆虫生长阶段的不同特点 类比 神经网络训练 分成 两个目的不同的阶段,进而引出知识蒸馏的必要性和优势:

昆虫的幼虫和成虫阶段有不同的形态和功能。

  • 幼虫阶段主要是为了高效地从环境中获取能量和养分,以支持自身生长,这意味着它的形态和行为是为这个特定目的而优化的;

  • 成虫阶段则侧重于旅行和繁殖,其身体结构和能力是为适应这一阶段的任务而专门设计的。

传统深度学习的问题:传统的深度学习方法在训练和部署阶段使用相同的模型。然而,训练阶段和部署阶段的需求往往是不同的。训练阶段可能更注重模型的准确性和表达能力,因此通常会使用大规模、复杂的模型来学习数据中的复杂模式和特征;而部署阶段则可能更关注模型的效率,如推理速度、内存占用等,以便在实际应用中能够快速、低成本地运行。

知识蒸馏的意义:通过知识蒸馏,就像昆虫从幼虫形态转变为成虫形态一样,可以将训练阶段复杂模型(教师模型)中学习到的知识 “蒸馏” 到一个更简单、更高效的模型(学生模型)中。这样,学生模型可以在部署阶段满足效率要求,同时保留教师模型的大部分性能,实现了在不同阶段使用不同 “形态” 的模型来适应各自的需求。

对 “知识” 理解的转变

《Distilling the Knowledge in a Neural Network》 论文中对“知识”的理解也有不同:论文发表之前,人们倾向于将训练模型中的知识与学习到的参数值等同起来,这使得很难看到通过改变模型的形式而保持相同的知识。

在该论文发表前,人们普遍认为训练模型中的知识等同于学习到的参数值。基于这种理解,很难想象在改变模型形式的同时还能保留相同的知识。

而论文提出了一种更抽象的知识观,即知识是一个从输入向量到输出向量的映射。或者说,知识是一个学习到的从输入向量到输出向量的映射

知识蒸馏的本质

知识蒸馏技术的目标不仅是复制教师模型的输出结果,更重要的是模仿其 “思维过程”。

在大语言模型(LLMs)时代,知识蒸馏能够实现一些抽象品质的转移,比如风格、推理能力以及与人类偏好和价值观的一致性。

知识蒸馏技术不仅要复制教师模型的输出,还要模仿他们的 "思维过程"。

知识蒸馏的实现可分解为三个核心步骤:

  • 第一步:软目标生成:让答案“模糊化”
  • 第二步:目标函数设计:软目标与硬目标的平衡
  • 第三步:温度参数的动态调节,控制知识的“传递粒度”

2.2 第一步:软目标生成:让答案“模糊化”

教师模型通过高温Softmax技术,将原本“非黑即白”的答案(硬目标), 转化为包含细节信息的“模糊提示”(软目标)。

当温度(Temperature)升高(例如T=20),模型输出的概率分布会更平滑。

例如,原始判断“猫(90%)、狐狸(5%)” 可能变为“猫(60%)、狐狸(20%)、其他(20%)”。

这种调整迫使学生模型关注类别间的关联性(如猫与狐狸的耳朵形状相似),而非机械记忆标签。

2.3. 第二步:目标函数设计:软目标与硬目标的平衡

学生模型的学习目标是双重的:一方面,要 “模仿教师的思考逻辑”(软目标),即通过匹配教师模型在高温下输出的概率分布,学习不同类别之间的关系;另一方面,要 “记住正确答案”(硬目标),以此确保基础准确率不下降。

模仿教师的思考逻辑(软目标):通过匹配教师的高温概率分布,学习类间关系。

记住正确答案(硬目标):确保基础准确率不下降。

学生模型的损失函数为软目标与硬目标的加权组合,两者的权重需动态调整。

更详细的说: 学生模型的损失函数是软目标损失和硬目标损失的加权组合,并且这两个目标的权重需要动态调整。

例如,当赋予软目标 70% 的权重、硬目标 30% 的权重时,就好比学生用 70% 的时间去研究老师的解题思路,用 30% 的时间巩固标准答案,最终实现灵活性与准确性的平衡。

2.4 第三步:温度参数的动态调节,控制知识的“传递粒度”

温度参数是知识蒸馏的“难度调节旋钮”:

高温模式(如T=20):答案高度模糊,适合传递复杂关联(如区分不同品种的猫)。

在 “T=20 高温模式” 下, 答案的模糊程度很高,这种模式适合传递复杂的关联信息,比如区分不同品种的猫。

低温模式(如T=1):答案接近原始分布,适合简单任务(如数字识别)。

如 “T=1 低温模式” ,答案接近原始的概率分布(硬目标),适合处理简单任务,例如数字识别

动态策略:初期用高温广泛吸收知识,后期降温聚焦关键特征。

在实际应用中,可以采用动态调节策略,在训练初期使用高温,让学生模型广泛吸收知识;在后期降低温度,使模型聚焦于关键特征。

以语音识别任务为例,通常需要更低的温度来保证识别的精准性。整个过程就如同教师根据学生的学习水平调整教学深度,从启发式教学逐步过渡到应试训练。

这一过程,非常类似教师根据学生水平调整教学深度——从启发式教学到应试训练

3 模型蒸馏的 分类

模型蒸馏根据不同的分类标准有多种分类方式, 常见的分类 方法,大致如下:

3.1 按照蒸馏信息类型分类

第1类:输出层蒸馏(标准知识蒸馏)

原理:主要侧重于将教师模型的软预测结果传递给学生模型。软预测以概率分布的形式呈现,包含了模型对不同输出类别的置信度信息。

示例:在图像分类任务中,教师模型对一张猫的图片输出的概率分布可能是 “猫(0.9)、狗(0.05)、鸟(0.05)”,学生模型学习这个概率分布,而非仅仅学习 “猫” 这个硬标签,从而获取不同类别之间的相对关系,优化自身预测能力。

第2类:中间层特征蒸馏

原理:将教师模型中间层的特征信息传递给学生模型。教师模型在处理输入数据时,不同层次会产生丰富的特征表示,这些中间特征蕴含大量关于数据的抽象信息和语义知识。

示例:在计算机视觉的图像识别任务中,教师模型中间层提取的图像边缘、纹理和形状等特征信息,可被学生模型学习和利用,增强其对图像的理解和识别能力。

3.2 按照数据使用情况分类

第1类:有数据知识蒸馏

原理:使用原始的训练数据进行知识蒸馏。在训练过程中,教师模型和学生模型都以原始数据为输入,教师模型为学生模型提供监督信息。

示例:在手写数字识别任务中,使用大量的手写数字图像数据集,教师模型对这些图像进行预测并产生软标签或中间特征,学生模型根据这些信息和原始图像数据进行学习。

第2类:无数据知识蒸馏

原理:在无法获取原始训练数据的情况下,利用教师模型自身的结构和参数信息生成合成数据,然后基于这些合成数据对学生模型进行训练。

示例:在一些医疗影像诊断场景中,由于患者数据隐私保护,无法直接使用原始影像数据。此时可以利用教师模型生成模拟的医疗影像数据,用于学生模型的训练。

3.3 按照应用任务类型分类

第1类:通用蒸馏

原理:不针对特定任务,旨在让学生模型学习教师模型的通用知识和能力,使学生模型在多种任务上都能表现良好。

示例:训练一个通用的语言模型,让学生模型学习教师模型在多种自然语言处理任务(如文本分类、情感分析、问答系统等)上的通用语言理解和生成能力。

第2类:特定任务蒸馏

原理:针对不同的具体任务,如自然语言处理中的机器翻译、文本生成,计算机视觉中的目标检测、图像分割等,对蒸馏过程进行针对性优化。通过深入分析特定任务的特点和需求,设计专门的蒸馏策略和目标函数。

示例:在机器翻译任务中,根据源语言和目标语言的语法结构、语义关系以及语言习惯等特点,设计专门的知识蒸馏机制,引导学生模型学习教师模型在翻译过程中的关键技巧和策略,生成更准确、流畅的翻译结果。

3.4 按照模型结构关系分类

第1类:同质蒸馏

原理:教师模型和学生模型具有相似的结构,只是在模型规模(如参数数量)上有所不同。

示例:教师模型是一个层数较多、参数较多的卷积神经网络(CNN),学生模型是结构相似但层数较少、参数较少的 CNN。

第2类:异质蒸馏

原理:教师模型和学生模型的结构差异较大。

示例:教师模型是基于 Transformer 架构的大语言模型,学生模型是基于循环神经网络(RNN)的轻量级语言模型。

4 标准知识蒸馏(输出层蒸馏蒸馏)

4.1 标准知识蒸馏(输出层蒸馏蒸馏)原理

标准知识蒸馏(输出层蒸馏蒸馏), 主要侧重于将教师模型的软预测结果传递给学生模型。

软预测通常以概率分布的形式呈现,包含了模型对不同输出类别的置信度信息。

学生模型通过学习这些软预测结果,不仅能够获取教师模型的决策倾向,还能学习到不同类别之间的相对关系,从而优化自身的预测能力。

在自然语言处理任务中,如文本分类,教师模型对每个文本样本输出的属于不同类别的概率分布,能够帮助学生模型更好地理解文本的语义特征和类别边界,提高分类准确性。

4.2 新闻文本分类任务 的标准知识蒸馏案例

以新闻文本分类任务为例,假设要将新闻分为政治、经济、科技、文化、体育这 5 个类别。

  1. 模型选择

教师模型:选择 BERT 模型,它在自然语言处理任务中表现出色,但计算量较大。

学生模型:选择一个轻量级的文本分类模型,如 TextCNN,其结构相对简单,计算成本低。

  1. 教师模型软预测生成

当输入一篇新闻文本时,教师模型 BERT 经过对文本的编码、多层注意力机制等处理后,在输出层得到一个长度为 5 的概率向量,这个向量表示该新闻文本属于各个类别的概率,即软预测结果。

例如,对于一篇关于新科技产品发布的新闻,BERT 输出的概率分布可能是 [0.05, 0.1, 0.8, 0.03, 0.02],分别对应政治、经济、科技、文化、体育类别的概率,表明 BERT 模型认为这篇新闻属于科技类别的置信度最高,为 0.8 。

  1. 学生模型学习软预测结果

学生模型 TextCNN 在训练时,除了使用真实标签进行传统的交叉熵损失计算外,还会学习教师模型 BERT 的软预测结果。

具体来说,会在 TextCNN 的训练过程中引入一个额外的损失函数,用于衡量 TextCNN 输出的概率分布与 BERT 输出的软预测概率分布之间的差异。常用的衡量方法是 Kullback - Leibler(KL)散度,它可以有效地度量两个概率分布之间的距离。

通过最小化这个基于 KL 散度的损失函数,TextCNN 能够调整自身的参数,使得自己输出的概率分布更接近 BERT 的软预测结果。

例如,在训练初期,TextCNN 对同一篇科技新闻的预测概率分布可能是 [0.1, 0.2, 0.6, 0.05, 0.05],与 BERT 的软预测结果有一定差异。随着训练的进行,在学习 BERT 软预测结果的引导下,TextCNN 的预测概率分布会逐渐向 [0.05, 0.1, 0.8, 0.03, 0.02] 靠近。

  1. 效果体现

在没有使用标准知识蒸馏时,TextCNN 在该新闻文本分类任务上的准确率可能为 80% 。

而在引入标准知识蒸馏,学习了 BERT 的软预测结果后,TextCNN 能够更好地理解不同新闻类别之间的语义差异和边界,例如更准确地区分科技类新闻与经济类新闻中关于新技术商业应用的描述。

最终,TextCNN 的准确率可能提升至 85% ,在分类性能上得到了显著提高。

TextCNN 基础知识

TextCNN 即 Text Convolutional Neural Network(文本卷积神经网络),是一种专门用于自然语言处理任务的深度学习模型,以下是关于它的详细介绍:

模型结构

  • 嵌入层(Embedding Layer):将输入的文本中的每个单词转换为低维向量表示,即词向量。这些词向量可以捕捉单词的语义和句法信息,常见的词向量有 Word2Vec、GloVe 等。通过嵌入层,文本中的单词序列被转化为一个二维矩阵,矩阵的每一行对应一个词向量,便于后续的神经网络处理。
  • 卷积层(Convolutional Layer):使用多个不同大小的卷积核在文本序列上滑动进行卷积操作,类似于在图像上提取局部特征,在文本中可以捕捉到不同长度的单词组合所形成的局部特征。例如,一个大小为 3 的卷积核可以捕捉到连续 3 个单词的组合特征。通过卷积操作,每个卷积核会生成一个特征图,多个卷积核就可以得到多个特征图,这些特征图包含了文本中的各种局部语义特征。
  • 池化层(Pooling Layer):通常采用最大池化操作,对卷积层得到的特征图进行降维处理,提取每个特征图中的最重要特征,即最大值。这样可以减少数据维度,降低计算量,同时保留文本中的关键语义信息,避免过拟合。经过池化层后,每个特征图被压缩为一个固定长度的特征向量。
  • 全连接层(Fully Connected Layer):将池化层输出的所有特征向量连接起来,形成一个长向量,作为全连接层的输入。全连接层对这些特征进行综合和整合,通过非线性变换将其映射到最终的输出空间,例如文本分类任务中的各个类别。通常在全连接层之后会添加一个激活函数,如 Softmax 函数,用于将输出转换为各个类别的概率分布。

5 基于特征的蒸馏

5.1 基于特征的蒸馏 原理

这种方法的核心在于将教师模型中间层的特征信息传递给学生模型。

教师模型在处理输入数据时,会在不同层次产生丰富的特征表示,这些中间特征蕴含了大量关于数据的抽象信息和语义知识。

通过将这些特征传递给学生模型,并指导学生模型学习和构建类似的特征表示体系,能够帮助学生模型更好地捕捉数据的本质特征,提升模型的性能。

在计算机视觉领域的图像识别任务中,教师模型中间层提取的图像特征,如边缘、纹理和形状等信息,可以被学生模型学习和利用,增强学生模型对图像的理解和识别能力。

5.2 基于特征的蒸馏的例子

为了帮助大家理解 基于特征的蒸馏,这里以一个用于识别手写数字(0 - 9)的图像识别系统,采用基于特征的蒸馏方法来提升学生模型的性能。

  1. 模型选择

教师模型:选择一个较为复杂且性能强大的卷积神经网络(CNN),例如 ResNet - 50。它在处理手写数字图像时,能够通过多层卷积和池化操作,从图像中提取丰富的特征。

学生模型:选择一个相对简单的 CNN 模型,如 LeNet - 5,它结构简单,计算量小,但识别准确率相对较低。

  1. 教师模型特征提取

当输入一张手写数字图像时,教师模型 ResNet - 50 开始进行前向传播。在中间层,比如第 5 个卷积块(block5)的输出,会得到一个特征图(feature map)。这个特征图包含了经过多次卷积和池化后提取到的关于图像的高级特征。例如,它可能已经能够识别出数字的大致形状,如圆形(可能对应数字 0、6、8)、直线段(对应数字 1、7 等)以及一些笔画的连接关系等。这些特征是对图像更抽象、更具代表性的描述。

  1. 特征传递与学生模型学习

将教师模型 ResNet - 50 在 block5 输出的特征图作为额外的监督信息传递给学生模型 LeNet - 5。具体实现上,可以在 LeNet - 5 的相应位置(比如最后一个卷积层之后)添加一个损失函数,用于衡量学生模型生成的特征与教师模型传递过来的特征之间的差异。这个损失函数通常使用均方误差(MSE)等方法来计算两个特征图之间的相似度。

学生模型 LeNet - 5 在训练过程中,不仅要根据最终的分类结果(预测的数字类别与真实标签之间的交叉熵损失)进行反向传播更新参数,还要考虑特征蒸馏损失,即尽量使自己生成的特征与教师模型传递过来的特征相似。通过这种方式,学生模型能够学习到教师模型中更高级、更有效的特征表示。

  1. 效果体现

在没有使用特征蒸馏时,简单的 LeNet - 5 模型在手写数字识别任务上可能只能达到 95% 左右的准确率。而在使用基于特征的蒸馏方法后,由于学习到了教师模型 ResNet - 50 中更丰富的图像特征,如更准确的数字形状、笔画结构等信息,LeNet - 5 模型的准确率可能会提升到 97% 甚至更高,显著提升了模型对图像的理解和识别能力。

6 无数据知识蒸馏

6.1 无数据知识蒸馏 原理

在实际应用中,有时无法获取原始训练数据,此时无数据知识蒸馏技术便发挥了重要作用。例如,在一些特定领域的应用中,由于数据隐私或数据获取成本等原因,无法直接使用原始数据进行模型训练。

无数据知识蒸馏技术,利用教师模型自身的结构和参数信息生成合成数据,然后基于这些合成数据对学生模型进行训练。

通过无数据知识蒸馏,教师模型可以根据已有的知识和经验生成具有代表性的数据样本,为学生模型的训练提供数据支持,确保知识的传承和模型的优化。

6.2 小规模无数据知识蒸馏(SSD-KD)案例

以下是一个无数据知识蒸馏在图像分类任务中的应用实例,基于小规模无数据知识蒸馏(SSD-KD) 方法。

SSD - KD(Single Shot MultiBox Detector with Knowledge Distillation)结合了单阶段目标检测算法 SSD(Single Shot MultiBox Detector)和知识蒸馏(Knowledge Distillation)技术,旨在提升目标检测模型的性能和效率。

SSD 是一种经典的单阶段目标检测算法,能够在一次前向传播过程中完成目标的定位和分类,具有速度快的优点;

知识蒸馏Knowledge Distillation 则是一种将知识从复杂的教师模型转移到简单的学生模型的技术,通过这种方式可以让学生模型学习到教师模型的优秀特征和决策信息。

6.3 场景背景

在医疗影像诊断场景中,患者的医学影像数据包含大量敏感隐私信息,受到严格的隐私法规保护,如 HIPAA(美国健康保险流通与责任法案),获取和使用这些数据面临高昂的成本与复杂的审批流程,甚至在某些情况下无法直接使用原始数据训练模型,此时无数据知识蒸馏技术极具价值。

假设我们有一个预训练好的大型教师模型(如DenseNet ),它在某个图像分类任务上表现良好,该模型能够精准识别各类疾病在影像中的特征,如肿瘤的形状、位置、纹理等,但原始训练数据由于隐私或成本原因无法获取。

现在需要将教师模型的知识迁移到一个更小的学生模型(如轻量级的MobileNet)上,以提高学生模型的性能。

6.4 模型设定

  • 教师模型:选用在医学影像领域表现优异的高性能卷积神经网络(CNN),例如经过大量医疗影像数据预训练的 DenseNet 模型。该模型能够精准识别各类疾病在影像中的特征,如肿瘤的形状、位置、纹理等。
  • 学生模型:采用相对轻量级的 CNN 模型,如 MobileNet,其计算资源需求少,适合在资源受限的医疗设备(如便携式超声诊断仪)上运行,但直接训练的诊断准确率低于教师模型。

6.5 无数据知识蒸馏过程

  1. 生成合成数据

使用生成对抗网络(GAN)来生成合成图像。教师模型作为判别器,指导生成器生成与原始数据分布相似的合成样本。

SSD-KD引入了一个调节函数,用于平衡合成样本的类别分布,确保生成的样本在类别上具有代表性。

  1. 知识蒸馏(/学生模式的训练)过程

知识蒸馏,就是教师模型生成合成图像,用作学生模型的训练数据。

具体来说,使用教师模型生成的合成医学影像数据对学生模型进行训练。在训练过程中,学生模型学习合成数据中蕴含的疾病特征与诊断信息。例如,观察合成肺部 X 光影像中不同灰度区域与疾病的关联,学习如何识别潜在的病变。

在知识蒸馏过程中,学生模型的输出与教师模型在合成数据上的输出进行对比,通过损失函数(如KL散度)来优化学生模型。

SSD-KD还引入了一个优先采样函数,通过强化学习策略选择合适的合成样本进行训练,进一步提高训练效率。

除了合成数据的预测标签,学生模型还学习教师模型对合成数据的软预测结果。如教师模型对某合成影像判断为肺炎的概率是 0.8,为正常的概率是 0.2,学生模型通过最小化自身预测与教师模型软预测之间的差异(如使用 KL 散度损失函数),优化自身参数,从而学习到教师模型的诊断知识与决策方式。

  1. 训练结果

在未使用无数据知识蒸馏时,轻量级的学生模型(MobileNet)因训练数据不足,在医疗影像诊断任务上的准确率仅为 70%。

经过无数据知识蒸馏,利用教师模型生成的合成数据训练后,学生模型对常见疾病的诊断准确率提升至 80%。这使得在资源受限且无法获取原始数据的情况下,仍能拥有一个性能较好的医疗影像诊断模型,辅助医生进行初步诊断。

6.6 实际应用

无数据知识蒸馏过程方法, 特别适合于那些数据隐私要求高或数据获取成本高的场景。

例如,在医学图像分类任务中,由于隐私保护,原始数据无法共享,但通过无数据知识蒸馏,可以利用教师模型的知识生成合成数据,训练出性能良好的学生模型,用于实际的医学诊断。

7 特定任务蒸馏

针对不同的具体任务,如自然语言处理中的机器翻译、文本生成,计算机视觉中的目标检测、图像分割等,特定任务蒸馏方法 , 能够对蒸馏过程进行针对性优化。

通过深入分析特定任务的特点和需求,设计专门的蒸馏策略和目标函数,使学生模型能够更好地适应任务要求,提高在特定任务上的性能表现。

例如,在机器翻译任务中,根据源语言和目标语言的语法结构、语义关系以及语言习惯等特点,设计专门的知识蒸馏机制,引导学生模型学习教师模型在翻译过程中的关键技巧和策略,从而生成更准确、流畅的翻译结果。

以下是一个特定任务蒸馏在机器翻译任务中的应用实例:

7.1 场景背景

假设我们有一个大型的预训练教师模型(如Transformer架构的机器翻译模型),它在英译中任务上表现优异,但模型体积庞大,不适合在资源受限的设备上运行。现在需要将教师模型的知识迁移到一个更小的学生模型(如轻量级的Transformer模型)上,以提高学生模型在机器翻译任务上的性能。

7.2 特定任务蒸馏过程

  1. 分析任务特点
  • 机器翻译任务需要考虑源语言和目标语言的语法结构、语义关系以及语言习惯。例如,英语和中文在句子结构、词汇搭配等方面存在显著差异。

  • 教师模型在翻译过程中能够捕捉到这些复杂的语言特征和语义信息。

  1. 设计蒸馏策略
  • 软标签蒸馏:教师模型对每个翻译句子生成目标语言的概率分布(软标签),学生模型通过学习这些软标签来优化自身的翻译结果。
  • 特征蒸馏:提取教师模型中间层的特征表示,尤其是与语言语义和语法结构相关的特征,引导学生模型学习这些特征。
  • 注意力机制蒸馏:机器翻译中,注意力机制对于捕捉源语言和目标语言之间的对齐关系至关重要。通过蒸馏教师模型的注意力权重,学生模型能够学习到更有效的对齐策略。
  1. 目标函数优化
  • 设计专门的目标函数,结合软标签损失、特征损失和注意力损失,确保学生模型在翻译准确性、流畅性和语义一致性上都能达到较好的效果。

实际效果

通过这种特定任务蒸馏方法,学生模型能够学习到教师模型在翻译过程中的关键技巧和策略,从而生成更准确、流畅的翻译结果。例如,在英译中任务中,经过蒸馏的学生模型能够更好地处理复杂的句子结构和词汇搭配,翻译质量显著提升。

这种方法特别适合于机器翻译等对语言理解和生成要求较高的任务,能够有效提升轻量级模型的性能,同时满足实际应用中对模型效率和资源占用的要求。

预告

另外,尼恩架构团队的顶级 AI 架构视频, 已经基本录制完成,即将 全面发布,

这个版本的视频, 为大家 打造一个 从资深架构视角 讲的 大语言 模型 架构视频, 而不是 算法视角 的LLM视频。

帮助大家成为: Java架构 + LLM 架构 = 多栖超级架构师

image.png

尼恩架构团队的大模型《LLM大模型学习圣经》

尼恩架构团队的大模型《LLM大模型学习圣经》是一个系列, 包括下面的内容:

内容体系包括下面的内容:

  • python安装、vscode安装、conda安装:一文搞定Python的开发环境(史上最全)

  • Python学习圣经:从0到1精通Python,打好AI基础

  • LLM大模型学习圣经:从0到1吃透Transformer技术底座

  • 《LangChain学习圣经:从0到1精通LLM大模型应用开发的基础框架》

  • 《LLM大模型学习圣经:从0到1精通RAG架构,基于LLM+RAG构建生产级企业知识库》

  • 《SpringCloud + Python 混合微服务架构,打造AI分布式业务应用的技术底层》

  • 《LLM大模型学习圣经:从0到1吃透大模型的顶级架构》

  • 《LLM 智能体 学习圣经:从0到1吃透 LLM 智能体 的架构 与实操》

  • 《LLM 智能体 学习圣经:从0到1吃透 LLM 智能体 的 中台 架构 与实操》

以上学习圣经 的 配套视频, 2025年 5月份之前发布。

技术自由的实现路径:

实现你的 架构自由:

《吃透8图1模板,人人可以做架构》

《10Wqps评论中台,如何架构?B站是这么做的!!!》

《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》

《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》

《100亿级订单怎么调度,来一个大厂的极品方案》

《2个大厂 100亿级 超大流量 红包 架构方案》

… 更多架构文章,正在添加中

实现你的 响应式 自由:

《响应式圣经:10W字,实现Spring响应式编程自由》

这是老版本 《Flux、Mono、Reactor 实战(史上最全)》

实现你的 spring cloud 自由:

《Spring cloud Alibaba 学习圣经》 PDF

《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》

《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》

实现你的 linux 自由:

《Linux命令大全:2W多字,一次实现Linux自由》

实现你的 网络 自由:

《TCP协议详解 (史上最全)》

《网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!》

实现你的 分布式锁 自由:

《Redis分布式锁(图解 - 秒懂 - 史上最全)》

《Zookeeper 分布式锁 - 图解 - 秒懂》

实现你的 王者组件 自由:

《队列之王: Disruptor 原理、架构、源码 一文穿透》

《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》

《缓存之王:Caffeine 的使用(史上最全)》

《Java Agent 探针、字节码增强 ByteBuddy(史上最全)》

实现你的 面试题 自由:

4800页《尼恩Java面试宝典 》 40个专题

免费获取11个技术圣经PDF:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/878690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java初学者笔记-12、前端开发基础

未完待续 Web 三个组成部分:HTML:负责网页的结构(页面元素和内容)。 CSS:负责网页的表现(页面元素的外观、位置等页面样式,如:颜色、大小等)。 Javascript:负责网页的行为(交互效果)。高级技术:基于JS封装而来的高级框架——vue。 基于vue的桌面端组件库——Eleme…

Java笔记-13、Web后端基础 Maven

Maven是一款用于管理和构建Java项目的工具,是apache旗下的一个开源项目。基于项目对象模型(POM),通过一小段描述信息管理项目构建。依赖管理:方便快捷地管理项目依赖的资源(jar包)。 项目构建:标准化的跨平台自动化项目构建方式。Maven面板中Lifecycle中的compile用于编译…

直流有刷电机.

一、基础知识回顾 1.1 电路定律 1.1.1 基尔霍夫电流定律 在集总参数电路中的任一节点处,所有支路电流的代数和在任何时刻恒等于零,即\(\sum i=0\)。 对于正弦稳态交流电路,其相量形式为\(\sum {\dot I}=0\)。 其中,当支路电路的参考方向为流入、流出节点时,支路电流分别取…

用C# GDI编写粒子效果

C#语言能不能画一动画呢?闲来无事,特过一把编程瘾。一共写了6个例子特效动画,界面如下,程序在文末供下载。拿一个粒子效果“鼓泡泡效果”的类讲解,其他类似:using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; usi…

你说得对,但是我怎么没学过后缀科技啊???

后缀数组 (SA) 后缀数组(SA,Suffix Array)最基础的应用是,可以将给定串 \(S\) 的所有后缀串排序。 一点定义:\(sa_i\) 表示第 \(i\) 小的后缀的编号,\(rk_i\) 表示后缀 \([i,n]\) 的排名。显然 \(sa_{rk[i]}=rk_{sa[i]}=i\)。 后缀数组就是 \(sa\) 数组,我们可以利用后缀…

2025.2.4 鲜花

交通网络 题解?hzoi898 交通网络 题解?Underground 是那个纯音乐啦~Ans 注意到:一个只能说真话,一个绝不说假话。这题有四样读法,你知道么?出一个毒瘤 ds 的最好方式就是把序列问题直接出到树上,考察选手树剖能力。正确的题意:给定一棵树,在时刻 \([tl, tr]\) 链加,查…

云手机和模拟器究竟有什么区别?一分钟带你理清楚

云手机和模拟器究竟有什么区别?一分钟带你理清楚概念 云手机:是在云端运行的虚拟手机,基于云计算技术和端云一体虚拟化技术,通过云服务器实现云服务。具备真实的ARM硬件,和真实手机的架构几乎一样,用户通过网络连接,在不同终端设备上远程操作,可轻松安装、管理APP。 模…

函数笔记

想了很久还是来更这个了。 0x00 一次函数 一般式 \(y=kx+b\),特殊的,当 \(b=0\),称作正比例函数。 图象 一次函数的图像是过\(\left(0,b\right)\)、\(\left( -\dfrac{b}{k},0\right)\)的直线。 而正比例函数的图像则是过原点的一条直线。 根据参数的符号,我们可以确定图象…

java基础(中)

java基础 Scanner对象Scanner类是用于获取用户输入的import java.util.Scanner;public class Hello {public static void main(String[] args){// 创建一个scanner对象来接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("Enter your name: &qu…

java基础1

java基础2 Scanner对象Scanner类是用于获取用户输入的import java.util.Scanner;public class Hello {public static void main(String[] args){// 创建一个scanner对象来接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("Enter your name: &q…

PCIe扫盲——TLP Header详解(三)

Completions Completions的TLP Header的格式如下图所示:这里来解释一下Completion Status Codes000b (SC) Successful Completion:表示请求(Request)被正确的处理; 001b (UR) Unsupported Request:表示请求是非法的或者不能被Completer所识别的。在PCIe V1.1以及之后的版…

03-requests库和session

接口测试经常会用到抓包工具,用来抓取接口测试中发送的HTTP请求信息和接收的响应信息。然后查看里面的具体内容。 fiddler是一款常用的HTTP抓包工具,抓包原理是代理式抓包。 Filters设置过滤项Inspectors查看请求消息和响应消息,点击Raw查看原始的请求消息和响应消息 首先客…