知识蒸馏用于度量学习(一)

Learning Metrics from Teachers: Compact Networks for Image Embedding

链接:https://arxiv.org/abs/1904.03624

Code:https://github.com/yulu0724/ EmbeddingDistillation

知识蒸馏是实现模型压缩的一种有效的方法,它受启发于人类社会中教师和学生之间的教授关系。人类社会中,教师一般具有更多的知识,可以通过指导学生使得学生获得解决问题的能力。类似地,知识蒸馏将特征提取能力强但是复杂的模型定义为教师模型,特征提取能力弱但是简单易实现的模型定义为学生模型,通过教师模型对学生模型的指导来使得学生模型获得类似教师的特征提取能力。也就是说知识蒸馏致力于让学生模型通过模仿教师模型来获得和教师模型相似的能力。常见的知识蒸馏主要用于分类任务,在这篇文章中作者将知识蒸馏模型应用于度量学习中。

摘要:度量学习可以用于图像检索和人脸识别等诸多领域。在本文中,作者引入知识蒸馏,在小型网络上实现图像嵌入。知识蒸馏已成功地用于图像分类,但尚未用于度量学习。作者提出了两个新的损失函数用于深层教师网络与小型学生网络间的通信。作者在CUB-200-2011,Cars-196,Stanford Online Products数据库上进行了实验,结果显示小型学生网络的效果明显优于类似规模的标准网络的效果。在MobileNet-0.25上,提出的方法可以将Recall @ 1从27.5%提高到44.6%。

度量学习:度量学习是通过神经网络将图像转换为特征量,并通过合适的损失函数使得在特征空间中特征具有明显的类内相似性和类间相异性,在论文中作者使用了Triplet loss:

知识蒸馏用于度量学习

知识蒸馏想让学生网络的特征和教师网络的特征具有相同的分布,也即是越相似也好,因此一个很自然的想法是约束学生和教师网络提取的同一张图像的特征之间的距离,这也就是作者提出的第一个蒸馏损失函数,作者称为absolute teacher:

回到度量学习上,度量学习的目的就是使得同类特征间的距离尽可能小,异类特征间的距离尽可能大,也即是说是约束特征间的距离,因此可以使用另一种更高效的蒸馏损失函数,约束教师和学生特征距离间的距离,也即是对于同样的两张图像,使得学生网络得到的它们间的距离和教师网络得到的它们间的距离,尽可能地像,这即是作者提出的第二个蒸馏损失函数,称为relative teacher

到这里将标准的度量学习的损失函数与蒸馏函数结合起来,作者提出了整体的损失函数

对于两种损失函数,作者用下图进行了可视化描述,从图中可以解读到,假设由学生网络S1变换到学生网络S2,当相对损失为零,也即是教师和学生网络特征分布相同时,绝对损失仍旧存在。

接着作者又结合了以前的知识蒸馏模型,并进行了实验。

评价:这篇论文中,作者将知识蒸馏引入到度量学习中,并提出两种蒸馏损失函数,分别从点和线上描述教师和学生特征之间的关系。

 

### 关于 DeepSeek 中的知识蒸馏 知识蒸馏种有效的方法,旨在将大型复杂模型(教师模型)的知识迁移到较小的简化模型(学生模型),以便在保持较高性能的同时降低计算成本和资源需求。对于深度求索(DeepSeek)而言,在推出的系列蒸馏模型中,如 DeepSeek-R1,已经成功实现了这点[^2]。 #### 技术原理 知识蒸馏的核心思想在于利用教师模型产生的软标签来指导学生模型的学习过程。具体来说: - **软标签**:相比于传统硬标签(one-hot编码的真实类别),软标签包含了更多概率分布信息,能够传递更加丰富的语义特征给学生模型。 - **损失函数设计**:为了使学生模型更好地拟合教师模型的行为模式,通常会引入专门针对此目的定制化的损失项,比如 KL 散度等距离度量指标,用于衡量两者输出之间的差异程度并加以最小化。 #### 实现路径 在实际操作层面,DeepSeek 采取了系列措施确保高效且高质量地完成整个流程: - **架构选择**:基于目标应用领域特性挑选合适的学生网络结构;既要考虑参数数量上的精简又要兼顾表达能力不打折扣。 - **训练策略优化**:除了常规前向传播外还加入了反向传播机制调整权重更新规则,使得每轮迭代都能充分利用来自教师端的信息反馈进行改进提升。 ```python def knowledge_distillation(student_model, teacher_model, data_loader): student_optimizer = torch.optim.Adam(student_model.parameters()) for inputs, _ in data_loader: # 获取教师模型预测结果作为软标签 with torch.no_grad(): soft_labels = teacher_model(inputs) # 前向传播获取学生模型预测值 predictions = student_model(inputs) # 计算KL散度损失 loss_fn = nn.KLDivLoss() kl_loss = loss_fn(F.log_softmax(predictions / T), F.softmax(soft_labels / T)) # 反向传播及优化器步进 student_optimizer.zero_grad() kl_loss.backward() student_optimizer.step() return student_model ``` #### 应用场景 得益于上述方法论的支持,经过知识蒸馏处理后的 DeepSeek 轻量化 AI 模型能够在多种环境下展现优异的表现效果,特别是在那些对实时响应速度有严格要求或是硬件条件较为苛刻的地方尤为适用。例如移动设备端的应用开发、边缘计算节点部署等方面均能发挥重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值