teacher-student network
来源:互联网 发布:手机京东秒杀软件 编辑:程序博客网 时间:2024/06/01 09:56
最近读到一篇文章《An On-device Deep Neural Network for Face Detection》,讲的是苹果如何将基于深度学习的人脸识别方法应用到iPhone上,同时解决多任务并行及能耗的问题。文中提到了一个teacher-student network的概念。概括地讲,就是用一个更宽更复杂的,但是已经训练好的神经网络(教师网络),去训练另一个窄而深的网络(学生网络)。
在Adriana Romero等人2014年发表的paper《FitNets: Hints for Thin Deep Nets》中给出了一种参数较少的解决方案,以下内容主要翻译自这篇paper。
1、介绍
2、KD算法(KNOWLEDGE DISTILLATION)
然后训练学生网络以优化下面的损失函数:
这里H代表交叉熵, 是一个可调的参数,用来平衡两个交叉熵。我们注意到这个式子的第一项就是一个网络的输出和标签之间传统的交叉熵,而第二项则强制学生网络从教师网络的‘软’输出中学习。
所以说,KD的设计使学生网络模仿教师网络架构,所以有类似的深度。尽管当学生网络的结构稍深一些时,我们发现了KD框架来达到令人鼓舞的效果。但随着我们增加学生网络的深度,KD训练仍然面临着优化深层网络的困难。
3、基于Hint的训练
这里uh和vg是老师/学生网络的深度嵌套函数,它们取决于各自提示/被引导层的参数WH/WG,r是Wr参数下最顶端被引导层的回归函数。注意到uh和r的输出必须是可比较的,也就是说uh和r必须是同样非线性的。
尽管如此,使用一个完全连接的回归模型,在被引导和提示层是卷积的情况下,还是会显著增加参数的数量和内存消耗。令Nh,1*Nh,2、Oh分别表示教师网络提示层的空间大小和通道数量。相似的,让Ng,1*Ng,2、Og为FitNet被引导层的空间大小和通道数量。在一个完全连接的回归矩阵的权重矩阵中,参数的个数是Nh,1*Nh,2*Oh*Ng,1*Ng,2*Og。为了减少参数数量,我们使用了一个卷积的回归。设计卷积的回归使它与教师网络的提示层输入图像的空间区域大致相同。因此,“回归”的输出与教师的hint有相同的空间大小。
给定一个教师网络的提示层,大小Nh,1*Nh,2,回归函数使用了学生网络被引导层输出的大小Ng,1*Ng,2,同时通过一个式子调整内核的形状k1*k2:Ng,i-ki+1=Nh,i ,这样,参数数量为k1*k2*Oh*Og ,显然比之前少得多。
最后,一张图概括一下训练过程。
- teacher-student network
- the student-teacher paradigm
- 06-Student Becomes the Teacher
- 教育,老师,学生??(education teacher student)
- Python 入门教程 10 ---- Student Becomes the Teacher
- Python 入门教程 10 ---- Student Becomes the Teacher
- Codeacademy Python-06-Student Becomes the Teacher
- Codeacademy Python-07-Student Becomes the Teacher
- 经典SQL练习题1----student/teacher/course/sc
- 经典SQL练习题3----student/score/cource/teacher
- 7.20在学生类student和教师类teacher 基础上再派生出一个助教类
- 6.27 洗刷刷 oj Teacher(教师)类和一个Student(学生)类 运算符重载
- student
- student
- student
- student
- student
- hibernate中当Teacher与Student具有多对多的关系时,且使用关联关系,没有实体的中间表,如何使用hql根据student的名字取出拥有他的teacher
- Opencv Laplacian算子
- java.lang之java.lang.Object源码阅读及分析
- DFS深度优先搜索算法与BFS广度优先搜索算法的java实现
- QT基于TCP的Socket编程
- 用java代码模拟鼠标双击事件
- teacher-student network
- java中对Redis的缓存进行操作
- Andrew Ng的machine learning课程week3编程题python实现
- 第九周 项目3 利用二叉树遍历思想解决问题
- 启明星第六周学习总结
- es6 Proxy
- word2vec的详细实例介绍(包含jieba分词提供的语料)
- linux 系统运行级别一般为 0-6,请分别写出每个级别的含义
- Linux实验三