Knowledge Distillation(11)——teacher assistant

motivation: 希望a teacher can effectively transfer its knowl-
edge to students up to a certain size,
但有时gap太大,效果反而差,
正如mutual learning发现跟teacher学还不如和一个与自己目前水平相当(虽然网络结构差很多)的student学
所以助教的概念都出来了:
在这里插入图片描述
teacher student 差距太大,学习效果反而不好:
在这里插入图片描述

这个实验很有趣:
在这里插入图片描述
看完第三个因素后,我觉得是不是gap太大时,把T调大一点就好了啊……
不过可能也不对,毕竟这个teacher才10层,prediction也没有那么hard吧,有些论文里面teacher student都是resnet这种,也没听说T要调特别大

在这里插入图片描述

teacher和student之间引入一个TA是有效的,然而又有了这些问题:
在这里插入图片描述
作者说用accuracy平均,然后得到对应TA的层数
在这里插入图片描述
我觉得这种可操作性太差,平均accuracy对应多少层还不是得训练了才知道,直接(10+2)/2不好,求几何平均数我觉得更科学点 10 × 2 = 4.5 \sqrt{10\times2}=4.5 10×2 =4.5

在这里插入图片描述
这个图也很有意思,似乎TA越多越密集,迁移效果越好:
在这里插入图片描述

知识蒸馏(Knowledge Distillation)是一种将一个较大的模型的知识转移到一个较小的模型的技术。这种技术通常用于减小模型的大小和推理成本,同时保持模型在任务上的性能。 在Python中,你可以使用以下步骤来实现知识蒸馏: 1. 准备教师模型和学生模型:首先,你需要准备一个较大的教师模型和一个较小的学生模型。教师模型通常是一个预训练的大型模型,例如BERT或其他深度学习模型。学生模型是一个较小的模型,可以是一个浅层的神经网络或者是一个窄的版本的教师模型。 2. 训练教师模型:使用标注数据或其他训练数据集来训练教师模型。这个步骤可以使用常规的深度学习训练方法,例如反向传播和随机梯度下降。 3. 生成教师模型的软标签:使用教师模型对训练数据进行推理,并生成教师模型的软标签。软标签是对每个样本的预测概率分布,而不是传统的单一类别标签。 4. 训练学生模型:使用软标签作为学生模型的目标,使用训练数据集来训练学生模型。学生模型的结构和教师模型可以不同,但通常会尽量保持相似。 5. 进行知识蒸馏:在训练学生模型时,除了使用软标签作为目标,还可以使用教师模型的中间层表示或其他知识来辅助学生模型的训练。这可以通过添加额外的损失函数或使用特定的蒸馏算法来实现。 以上是实现知识蒸馏的一般步骤,具体实现细节可能因应用场景和模型而有所不同。你可以使用深度学习框架(如TensorFlow、PyTorch等)来实现这些步骤,并根据需要进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值