迁移学习
迁移学习的原理和方法
预训练模型(Pre-trained Model):预训练模型是指在大数据集上预先训练好的模型。这些模型通常用于图像识别、自然语言处理等任务,并且已经在诸如ImageNet、Wikipedia等大数据集上进行了训练,学习到了丰富的特征表示。
微调(Fine-tuning):微调是指在预训练模型的基础上,针对特定的任务或数据集进行进一步的训练。在这个过程中,通常会使用较小的学习率,并且只训练模型的一部分层,而冻结其它层。这样做的目的是保留预训练模型学到的通用特征,同时让模型适应新的任务或数据集。也可以不冻结前面的层,对前面的层的参数也进行微调。
在源数据集(如ImageNet数据集)上预训练的神经网络模型,即源模型。
创建一个新的神经网络模型,即目标模型。这将复制源模型上的所有模型设计及其参数(输出层除外)。我们假定这些模型参数包含从源数据集中学习到的知识,这些知识也将适用于目标数据集。我们还假设源模型的输出层与源数据集的标签密切相关,因此不在目标模型中使用该层。
向目标模型中添加输出层,其输出数是目标数据集中的类别数。然后随机初始化该层的模型参数。
在目标数据集上训练目标模型。输出层将从头开始训练,而所有其他层的参数将根据源模型的参数进行微调。
迁移学习的实例
比如:在使用ImageNet数据集预训练的ResNet-18上,训练目标数据集使用hotdog数据集,对模型进行微调:
1 |
|
结果:
不使用预训练模型:
1 |
|
结果:
冻结前面所有的层:
1 |
|
结果:
冻结前面所有的层,线性层变为两层:
1 |
|
结果:
迁移学习
https://blog.shinebook.net/2025/03/10/人工智能/pytorch/迁移学习/