将从源数据集学到的知识迁移到目标数据集上
微调(fine tuning)
微调通过将模型部分权重初始化成在源数据集上预训练的模型权重,从而将模型在源数据集上学到的知识迁移到目标数据上。
- 在源数据(例如 ImageNet)上训练一个神经网络 A。
- 创建一个新的神经网络 B,它复制了 A 上除了输出层外的所有模型参数。我们假设这些模型参数含有源数据上学习到的知识,且这些知识同样适用于目标数据集。但最后的输出层跟源数据标注紧密相关,所以不被重用。
- 为 B 添加一个输出大小为目标数据集类别数目(例如一百类椅子)的输出层,并将其权重初始化成随机值。
- 在目标数据集(例如椅子数据集)上训练 B。我们将从头开始学习输出层,但其余层都是基于源数据上的模型参数进行微调。
微调的网络中的主要层的已经训练的足够好,所以一般采用比较小的学习率,防止过大的步长对训练好的层产生过多影响。
微调的模型因为初始值更好,在相同迭代周期下能够取得更好的结果。在很多情况下,微调的模型最终也会比非微调的模型取得更好的结果。