知识蒸馏(Knowledge Distilling)

1.参考资料,

一个很好的KD的资料list    https://github.com/dkozlov/awesome-knowledge-distillation

一个中文的相关资料https://www.zhihu.com/question/333196499/answer/738197683

一些找到的跟KD相关的资料

https://github.com/lhyfst/knowledge-distillation-papers

https://xmfbit.github.io/2018/06/07/knowledge-distilling/

https://www.zhihu.com/question/50519680

https://github.com/dkozlov/awesome-knowledge-distillation

 

与seq2seq最相关的论文 Sequence-Level Knowledge Distillation

 https://arxiv.org/pdf/1606.07947.pdf

 

 

一、Hinton的dark knowledge

1.思想

 

为了获得更好的效果对模型做ensemble,但是在预测的过程中,太多模型的ensemble会导致每一个参数本质上包含了很少的知识,在预测过程中需要更少的运算量和内存消耗。目标是用训练数据训练ensemble的效果好的模型,再利用一个更小的模型来获得emsemble模型中的 映射空间

 

2.做法

对于emsemble来说,可以使用多个模型的几何平均也可以使用代数平均,对于输出来说有一个soft target。

对于最终使用的小模型来说,如果只从soft target学习也可以学习的很快很好,因为这样做学习的是大模型的空间,一个不是onehot的label蕴含了更多的关联约束信息,但是利用hard target(one hot 的label)和soft target 一起使用会有更好的效果。

如何添加hard targets呢?(??)

 

如何让ensemble高效?

对多分类任务,使被集成的模型分别专注于不同的类别(翻译模型可否组合不同的模型,专注于不同的指标,BLEU,METEOR或者在不同的惩罚因子条件下达到最优)

从专家系统中获得更易混淆的类的信息.

3.效果

在做kd的过程中,如果使用soft target,对于多分类问题,即便训练数据中不包含其中某一类的数据,也能对这一类进行预测,

 

转载于:https://www.cnblogs.com/wb-learn/p/11436128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于特征的知识蒸馏代码可以使用以下示例代码实现: ```python import torch import torch.nn as nn import torch.nn.functional as F class DistillFeature(nn.Module): """Distilling the Knowledge in a Neural Network based on Features""" def __init__(self, T): super(DistillFeature, self).__init__() self.T = T def forward(self, f_s, f_t): p_s = F.log_softmax(f_s/self.T, dim=1) p_t = F.softmax(f_t/self.T, dim=1) loss = F.kl_div(p_s, p_t, reduction='batchmean') * (self.T**2) return loss ``` 在这个示例代码中,`DistillFeature`类是一个继承自`nn.Module`的模型,用于实现基于特征的知识蒸馏。它接受两个特征向量`f_s`和`f_t`作为输入,分别代表教师网络和学生网络的特征表示。然后,通过计算这两个特征向量的softmax后的概率分布,并使用KL散度来衡量它们之间的相似度。最后,将相似度矩阵乘以温度参数T的平方,并除以特征向量的批次大小,得到最终的损失值。 请注意,这只是一个示例代码,具体的实现可能会根据具体的任务和模型结构有所不同。 #### 引用[.reference_title] - *1* *2* [知识蒸馏综述:代码整理](https://blog.csdn.net/DD_PP_JJ/article/details/121900793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [知识蒸馏 示例代码实现及下载](https://blog.csdn.net/For_learning/article/details/117304450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值