训练目标是得到一个样本X1和学习率lr使得模型在X1上以lr优化的结果,和在正常样本上优化的结果一样
算法简洁如下:
- 初始有一个估计学习率lr,蒸馏样本X1,模型参数M
- 用lr,X1来更新M得到M2
- 利用新的模型M2,计算在真实样本上的损失L1
- 用L1更新估计学习率lr和X1,即找到最好的lr和X1,使得第二步更新得到的M2是最优的
- 回到第一步
个人
我觉得,这个东西就和Adaboost差不多?类似于选了一个子集,然后给子集分配了一个权重(学习率大小)
而且咋说呢,这个东西和模型的构造都是绑定的,你用模型A和数据集N,蒸馏得到了子集M
那这个M唯一的应用就是把初始化的A快速训练回去
但是问题就在于蒸馏的时候,你就已经对整个数据集进行了遍历和优化更新,本质并没有节省计算量啊