1. 初始参数的网络自适应
方法1:用已有数据集(ImageNet)先训练一个模型,在新数据集上,以此模型作为初始模型做fine tuning得到新模型。也就是传统的pretrain + fine tuning。
缺点:新训练出来的模型可能更偏向于新数据集的分布和特征。
方法2:基于KLD的方法
在fine tuning的过程中考虑新数据和老数据集。新训练的模型不要偏离原有的数据集太远。假设我们有两个数据集,旧数据集得到的模型A, 新数据集得到的模型B。新的数据集是 x x x。于是我们有
我们使用的损失函数是:
J = α ⋅ J 1 ( x , y , w ) + ( 1 − α ) ⋅ J 2 ( x , w ~ , w ) J=\alpha \cdot J_{1}(x, y, w)+(1-\alpha) \cdot J_{2}(x, \widetilde{w}, w) J=α⋅J1(x,y,w)+(1−α)⋅J2(x,w
,w)
这里的 J 1 J_1 J1代表的是模型B的损失函数,也就是 y y y和 y ^ \hat{y} y^的距离。在训练模型B的同时,我们同时要想办法控制B不要偏离原模型A太远。因此我们要把输入 x x x同时输入模型A和模型B。通过控制模型A的输出 y ˉ \bar{y} yˉ与 y y y的kl距离不要太远,来控制模型B与模型A的距离。这里 J 2