¶张量分解
¶tensor-decompostions libraries
-
tensorly: https://github.com/tensorly/tensorly
-
tensor_rnn: https://github.com/arkmagus/tensor_rnn
-
tednet: https://github.com/tnbar/tednet
¶知识蒸馏
¶模型蒸馏原理
Hinton在NIPS2014**[1]提出了知识蒸馏**(Knowledge Distillation)的概念,旨在把一个大模型或者多个模型ensemble学到的知识迁移到另一个轻量级单模型上,方便部署。简单的说就是用小模型去学习大模型的预测结果,而不是直接学习训练集中的label。
在蒸馏的过程中,我们将原始大模型称为教师模型(teacher),新的小模型称为学生模型(student),训练集中的标签称为hard label,教师模型预测的概率输出为soft label,**temperature(T)**是用来调整soft label的超参数。
之前提到学生模型需要通过教师模型的输出学习泛化能力,那对于简单的二分类任务来说,直接拿教师预测的0/1结果会与训练集差不多,没什么意义,那拿概率值是不是好一些?于是Hinton采用了教师模型的输出概率q,同时为了更好地控制输出概率的平滑程度,给教师模型的softmax中加了一个参数T。
$$
q_i = \frac{exp(z_i/T)}{\sum_j{z_j/T}}
$$