teacher-student 网络架构

最近看了几篇有关teacher-student架构的paper,感觉收获挺大的,今天就来总结一下。这个teacher-student模式架构主要的目的就是用来进行深度学习模型的压缩,属于model compression领域中的一种比较流行的做法。因为深度学习下为了能够获得更好的准确率,训练出的网络往往结构比价复杂,而对于一些在线预测任务来说,复杂的模型结构不利于线上预测任务的快速响应需求,因此模型压缩的需求应运而生。故在该模型框架下,teacher结构相当于原始的复杂的深度神经网络结构,student则是一种轻量级的网络结构;因此teacher会有更高的预测准确率,它会指导student到达在简化参数之后最好的模型效果。既然已经介绍了teacher-student网络的工作过程,下面就来介绍一些学习到的两篇paper。

第一篇是Hinton大神2015年发表的paper《Distilling the Knowledge in a Neural Network》。整体来说这篇paper由于发表的比较早,所以他整体模型的思路也比较简单。首先使用训练数据集,通过构建比较复杂的网络结构来学习到一个teacher network,然后使用这个学习到的teacher network重新对训练数据集进行预测,
生成soft的结果概率分布, q i = e x p ( z i / T ) j ( z j / T ) 。其实论文里提到,在这个地方有两种可选方案:1 只是对training data预测soft概率分布;2 对所有的label数据和unlabel数据预测soft概率分布。通过实验证明了,第一种方式准确度更高,因此选用了第一种方案。

其中这个 T 是一个缩放因子,这个值越高说明预测结果的概率分布变的越soft。在distillinged即student网络进行训练的时候,其损失函数来自两个地方:1 使用了T进行缩放的teacher产生的soft概率分布的cross entropy;2 来自该样本真实类别属性的hard cross entropy,即 L = α L s o f t + ( 1 α ) L h a r d

其实在该paper中,关于teacher网络对于student网络的指导,仅仅只是在网络输出的结果部分,并且以soft的类别概率分布的方式体现出来。这样student在进行学习的时候,相比于只提供类别的归属信息1或者0来说,它可以知道更多的信息,(虽然两个样本都被划为了1类,只能说明它们被预测为1类的概率大于被预测为0类的概率,但是它们被划分为1类的强弱信息是不知道的)。

第二篇paper是阿里妈妈精准定向广告推荐组在2018年AAAI上发表的paper《Rocket Launching: A Universal and Efficient Framework for Training Well-performing Light Net》,这篇paper也用到了teacher-student架构。整个模型如下所示:
这里写图片描述
其中左边的Booster net就对应了teacher network,右边的Light Net就对应了student network。假设light net网络的softmax输出形式为: p ( x ) = s o f t m a x ( l ( x ) ) ,booster net网络的softmax输出形式为: q ( x ) = s o f t m a x ( z ( x ) ) 。那么该模型的损失函数如下所示:
L = H ( y , p ( x ) ) + H ( y , q ( x ) ) + λ | | l ( x ) z ( x ) | | 2 。和标准的teacher-student 架构不同的是在该paper提出的架构中Lighter和booster是联合训练的,这么做的原因是:student network可以学习teacher network整个的优化过程,而不仅仅是一个最终优化好的结果。同时在使用误差梯度逆向传播对网络进行更新的时候,损失函数中的 λ | | l ( x ) z ( x ) | | 2 部分只对student network参数部分进行更新(这样才是teacher 去指导student),过程如下所示:
这里写图片描述
从中还可以发现,在该paper提出的网络结构中,light net和booster net还共享了部分底层的网络参数。(整个神经网络模型,从功能的角度来看,可以分为表示层+判别层,网络的底层主要进行表示层工作,因此具有share的特性。)

其实,在衡量student和teacher网络输出差异部分还可以有其他的选择,作者也在实验中进行了对比,结果肯定是他采用的这种方式效果是最好的,其他两种方式如下所示,给大家一个参考,毕竟不同场景下最优的策略可能是不一样的:
1 | | p ( x ) q ( x ) | | 2
2 H ( p ( x ) T , q ( x ) T )

其实关于teacher-student架构的paper还有不少,不过大概的核心思想和实现方式基本大同小异,比方说2015年ICLR的paper《fitnets: hints for thin deep nets》,也是利用类似的方式把一个deep and wide的网络变成deep and thin的网络,它不仅仅是对最终分类的概率输出进行了比对,同时对网络的中间层神经元的输出进行了比对,具体的方式可以去原文中学习。

其实这个soft 类别概率分布的transfer应用的思想还是很有借鉴价值的,希望大家以后可以多多应用起来

猜你喜欢

转载自blog.csdn.net/guoyuhaoaaa/article/details/81433830