欢迎光临散文网 会员登陆 & 注册

深度学习知识蒸馏,小模型也有大可能

2023-06-29 18:09 作者:跟着唐宇迪学AI  | 我要投稿

      现如今,各种大模型横行在AI的各个领域,有钱有资源的大公司都在暴力堆数据,疯狂卷资源,大模型的效果的确是让人惊艳的,但实际落地的部署设备无法匹配这么高的算力需求,普通人也没有钞能力能够在大模型上再做文章。基于此现状,识蒸馏的策略就应运而生了,它的目标是让小体量的模型能够达到与大模型相媲美的效果。

      大家都知道,参数量并不是越大越好,达到一定的瓶颈后,即便扩大参数量,模型性能的提升也是微乎其微,但对于相同参数量的模型,执行不同的训练策略,往往能够得到不同的效果。知识蒸馏也是关注训练策略上的调整,试图通过设计策略让模型既小又好,采用Teacher和Student一大一小两种模型,二者共用相同的数据,Teacher模型是已经训练完成的,需要被冻住不再进行二次训练,Student模型不仅要学习原始的数据,还要学习Teacher模型的相关指导。

     Teacher模型负责提供辅助信息指导Student模型,信息的形式是多样的,例如最终结果的分布、中间解题的过程、数据分布的关系等。下图中将Teacher模型的预测结果作为软标签,数据集的真实标签作为硬标签,Stuedent模型需要权衡软损失和硬损失,不仅要学会任务,还要学会Teacher模型的结果分布,两种损失是相辅相成的。图中的T代表温度系数,除以T可以重新设计预测结果的概率,让软标签变得更软。温度越高,相当于多样性更丰富,标签的概率是雨露均沾的,而温度越低,越接近硬标签,只希望模型预测到最准的效果。

     除了上述的Teacher模型提供结果分布的信息外,还可通过模型中间层的特征图传递指导信息;也能使用样本之间的关系,比如每个batch中样本存在的差异等,但此种形式使用率不高,主要原因是数据的可控性不足,可能存在的离群点会让模型学错方向。


      知识蒸馏可以应用在不同的任务方向上,以目标检测场景为例,下图一融合利用了Teacher端的特征图信息和结果分布信息,设计四个监督损失指导Student模型的训练过程;下图二在其基础上进一步改进,采用mask的机制只关注前景区域的损失;下图三又对前景和背景分别计算损失。

    以上三种是相对较早的研究,我们可以深刻的感受到学术是一个思路不断发散,持续精进的尝试过程。后续的知识蒸馏研究中,学者们将目光放到了Teacher端和Student端的差异上,同样设计了Mask机制,重点突出差异的区域;随着Transformer思想的兴起,下图二引入了Attention机制,分别在空间和通道维度上做注意力,并设计了三重损失监督训练。


       此外,Teacher模型的数量可以是多个的,通过不断的信息反馈,让Student模型在不同阶段自主地选择Teacher模型,类似于强化学习的策略。下图二中的环境可以包含相对灵活的信息,例如特征图、Teacher端的软标签、Teacher端的自身损失等;Agent来学习如何选择策略(老师),它会给出一组Action,0/1代表选择/不选择;选择好老师后,Student端会进行相应的聚合操作,并评估学习后的效果,得到一个奖励值返回给Agent,继续下一轮选择的调整。


       解耦是知识蒸馏的另一种改进思想,传统的辅助信息大都使用预测结果的分布,下图中TCKD是置信度,NCKD是错误分布,从表格中可以看出TCKD的存在会导致效果变差,但对于一些难度较大的数据集,使用TCKD会有一定程度的提升作用。

       分析上述情况可以得出:如果置信度预测的准,则无法利用到错误分布,软标签失去了本身的意义;如果置信度预测的不准,即便利用了错误分布,也很难挽回自身不准的局面。由此衍生出解耦的思想,置信度和错误分布不再绑定,而是通过两路分支,分别计算各自的损失,再通过一组可学习的损失权重来解耦二者的关系。

       从上述中可以看到,知识蒸馏方向已经有很多理论成果,但目前的实际应用中,仍不尽如人意,绝大部分的蒸馏模型只能活跃在文本数据上,CV方向受限制于分类、检测的基础任务,效果也往往略显逊色。但这个方向非常具有实际意义,小模型迸发出的大可能,落地到端侧后可以实现既小体量、又好效果,期待知识蒸馏能有更大的突破,让人工智能跳出资

后面会努力更新AI相关技术点文章
 记得3连支持一下,感谢!感谢!


深度学习知识蒸馏,小模型也有大可能的评论 (共 条)

分享到微博请遵守国家法律