使用pretrained的模型进行微调,往往会加速模型的收敛,但精度不一定会增加,但至少不会变差,whynot呢。
从至少不会变差的角度看,我在训练时数据处理的均值和方差,就不应该使用预训练的模型的均值和方差,因为它并不属于我当前数据集的均值和方差
图像归一化的作用
如果输入层 x 很大,在反向传播时候传递到输入层的梯度就会变得很大。梯度大,学习率就得非常小,否则会越过最优。在这种情况下,学习率的选择需要参考输入层数值大小,而直接将数据归一化操作,能很方便的选择学习率。一般归一化还会做减去均值除以方差的操作, 这种方式可以移除图像的平均亮度值 (intensity)。很多情况下我们对图像的亮度并不感兴趣,而更多地关注其内容,比如在目标识别任务中,图像的整体明亮程度并不会影响图像中存在的是什么物体。此时,在每个样本上减去数据的统计平均值可以移除共同的部分,凸显个体差异。
如果使用预训练时数据的均值和方差,并不会凸显我当前数据集的差异,甚至会对图像带来噪声,所以应该使用自己数据集的均值和方差去做迁移学习。
迁移学习不一定要训练到过拟合,然后在精度较高处作为训练好的模型,因为无论是否有预训练模型,最终都可以做到过拟合,使用预训练模型的目的是,在最高精度之前,有可能会使的模型泛化能力最好。所以在训练完成后,在测试集上可以多试几个过拟合epoch前保存的模型,找到最优的。