百科问答小站 logo
百科问答小站 font logo



学生网络用知识蒸馏损失去逼近教师网络,如何提高学生网络的准确率? 第1页

  

user avatar   qalian 网友的相关建议: 
      

校招面试的时候,经常碰到使用过“BERT蒸馏”的同学。我基本都会问一下:你觉得,在这一整套操作流程里,需要额外注意和控制的点在哪里?

或者换一种问法,也就是题主的问题:当你按照标准流程做了蒸馏,但是效果不理想,现在该怎么办?

我自己对于这个问题的体会如下,欢迎讨论:

  1. Better Teacher, Bert Student:想办法提升教师模型的效果,最简单粗暴的,比如多模型ensemble在一起;
  2. 不要放弃标注数据:只用soft-label,小模型大概率会跑偏,亲测有坑。训练教师模型的标注数据,一定一定要混在每一个batch里
  3. 隐层逼近不适合简单模型:进行隐层(中间层)的输出逼近,只适合同类模型,比如从12层BERT到4层BERT。千万不要在BERT往CNN迁移的时候,加入奇奇怪怪的学习目标;
  4. 蒸馏数据的质和量:说实话,如果标注数据足够多足够好,根本没有必要做蒸馏。蒸馏的本质就是借助表现能力更强的教师模型,来生成大量的伪数据(即soft-label)。关于数据,第一要义是保证数量(至少10万吧),第二要义是控制来源(蒸馏数据和测试用数据需要“同分布”),第三要义是标签均衡(教师模型输出的得分,从0.01~0.99都要有,比例相差不能悬殊);
  5. 参数控制:标准流程里的参数配置,并不一定适合你的应用场景。比如,引入Temperature因子是为了拉开教师模型输出分数的分布区间,但如果你的模型分布已经很散了,不用也未尝不可;
  6. 心理预期:实操中不要太指望,学生模型可以追平教师模型。心态佛系一点 ^___^



  

相关话题

  CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别? 
  怎样让机器有意识? 
  新手如何实现个简单AutoML框架。有参考的github开源项目介绍吗? 
  了解/从事机器学习/深度学习系统相关的研究需要什么样的知识结构? 
  有没有可能运用人工神经网络将一种编程语言的代码翻译成任意的另一种编程语言,而不经过人工设计的编译过程? 
  如何评价 马毅教授 的 NeurIPS 2020 中稿文章 MCR2 及 自称弄明白深度学习了? 
  算法工程师是否应该持续读论文? 
  2021年,作为算法工程师的你们会在CV业务落地上用Transformer吗? 
  现在tensorflow和mxnet很火,是否还有必要学习scikit-learn等框架? 
  在五到十年内,人工智能能复原成人影片中的被马赛克部分吗? 

前一个讨论
成年人正畸是什么感受?
下一个讨论
2021 年你拍过最特别的照片是什么?有什么故事?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利