作者发现两个规律:
1,每一个feature dimension都携带有一定量的semantic meaning,也就是说每个feature dimension代表了一定的信息量
2,大部分的预训练模型都是以分类为训练目标,这些分类器都可以看作是distilled knowledge
(知识蒸馏(knowledge distil),可以将一个网络的知识转移到另一个网络,两个网络可以是同构或者异构。做法是先训练一个teacher网络,然后使用这个teacher网络的输出和数据的真实标签去训练student网络。知识蒸馏,可以用来将网络从大网络转化成一个小网络,并保留接近于大网络的性能;也可以将多个网络的学到的知识转移到一个网络中,使得单个网络的性能接近emsemble的结果。)
作者受到这二者的启发后,提出了三种调整的方法:
1,基于特征的调整(Feature-wise Adjustment ):
F是index set of feature dimension of X (比如说在resnet10里,output的feature dimension是512,我们把它切成8份(切几份可以自定义),则,Fi = {64(i − 1) + 1, …, 64i} ,i的取值1-8)
g(x, di) := {k|k ∈ Fi ∩ It}。这里对Fi做了一个筛选,只有高于某一个threshold的才会被选。g(x,d)就是预训练时模型学到的x和d之间的关系。
P (Y |X, D, C) = P (Y |[x]c), where c = g(x, di)。由于d也已经包含在c里了, 所以[x]c实际上是一个包括了X,D和C的function
P(di) = 1/m。这里假设每一份的d都是相等的概率。
最后得到带有do因子的关系式
总结:1,先筛选符合一定条件的X,D的关系。
2,通过这些筛选过的关系得出X,D和C的function
3,将关于X,D,C的function进行n等分求概率后在相加
2,基于类别的调整(class-wise Adjustment ):
假设有m个预训练的类别,用A表示所有预训练类别的集合
D := {d1,…,dm} and each di = ai
g(x, di) := P (ai|x)xi:
对预训练中的每一个类都算一个平均特征(平均特征,我个人理解就是对这个类里所有sample的每一个特征取平均值组合而成的一个vector)
xi:预训练里类别为ai的平均特征
p(ai|x):在预训练分类器下,一个instance(x)属于ai类的概率
P (Y |X, D, C) = P (Y |x ⊕ g(x, di))
把在上一步算出来的g和原始的特征x拼起来
P(di) = 1/m
默认每个预训练类型概率相等
结合后得到如下方程式
3,综合1,2调整:
把1和2中的式子进行一个整合