
比如说,先设计出一个CNN结构。然后用一个大的数据集A,训练该CNN网络,得到网络a。可是在数据集B上,a网络预测效果并不理想(可能的原因是数据集A和B存在一些差异,比如数据来源不同导致的代表性差异)。如果直接用B的一部分训练的话,数据量太小,CNN不适用。
解决方法:将数据集B分为train集和test,以a网络的参数为初始参数,以较小的学习率,以B的train集为训练数据,继续训练,得到网络b。
这样,b在B的test集中一般可实现较好的预测精度。
此外,大家一般认为CNN网络中前端(靠近输入图片)的层提取的是纹理、色彩等基本特征,越靠近后端,提取的特征越高级、抽象、面向具体任务。所以更普遍的微调方法是:固定其他参数不变,a网络最后几层的参数重新训练,之后再用较小的学习率将网络整体训练。
