迁移学习-微调策略

微调 (tuning)

迁移学习

迁移学习是指调整预训练的神经网络并应用到新的不同数据集上。
根据以下两个方面:新数据集的大小,以及新数据集和原始数据集之间的相似性使用迁移学习的方式将不同。包括以下四大情形:
1.新数据集很小,新数据和原始训练数据相似
2.新数据集很小,新数据和原始训练数据不同
3.新数据集很大,新数据和原始训练数据相似
4.新数据集很大,新数据和原始训练数据不同

迁移学习的四种情形
迁移学习的四种情形
大型数据集可能有 100 万张图像。小型数据集可能有 2000 张图像。大型数据集和小型数据集的划分依据具有主观性。对小型数据集使用迁移学习时需要注意过拟合问题
小狗图像和狼图像属于相似的图像;它们具有共同的特征。花朵图像数据集和小狗图像数据集则很不同。

示例网络包含三个卷积层和三个全连接层。

在这里插入图片描述
三层卷积神经网络的作用:第一个层级将检测图像中的边缘;第二个层级将检测形状第三个卷积层将检测更高级特征

情形 1:小数据集,相似数据
在这里插入图片描述
如果新数据集很小,并且与原始训练数据相似:
1.删除神经网络的末尾层级
2.添加一个新的全连接层,输出数量与新数据集中的类别数量一样
3.随机化新全连接层的权重;冻结预训练网络的所有权重,冻结预训练网络的所有权重”意味着在后续训练过程中,这些权重不会更新。
4.训练网络以更新新全连接层的权重
为了避免过拟合小数据集,原始网络的权重将保持不变,而不是重新训练权重。
由于数据集相似,所以两个数据集的图像将具有相似的更高级特征。所以,大多数或所有预训练神经网络层级已经包含关于新数据集的相关信息,应该保留这些信息。
可视化结果为:
在这里插入图片描述
情形 2:小数据集,不同的数据
在这里插入图片描述
如果新数据集很小,并且与原始训练数据不同:
1.删除靠近网络开头的大多数预训练层级,这意味着移除网络中那些专门学习高级、特定特征的层。迁移学习的策略会有所不同。在这种情况下,高级特征(通常由网络后面的层学习)可能与新任务不太相关。因此,选择保留网络开始部分的层,这些层学习更一般的、低级的特征,可能对新任务更有用。
2.在剩余预训练层级后面添加一个新的全连接层,输出数量与新数据集中的类别数量一样,这个新层的目的是学习如何根据保留的低级特征对新数据集中的类别进行分类。
3.随机化这个新的全连接层的权重;冻结预训练网络的所有权重,新层的权重需要通过训练来调整,以适应新任务。同时,既然预训练层的权重被冻结,这些层不会在训练过程中更新。
4.训练网络以更新这个新的全连接层的权重
由于数据集很小,所以依然需要避免过拟合问题。为了避免过拟合,原始神经网络的权重将保持不变,与第一种情形一样。但是原始训练集和新数据集的更高级特征不一样。在这种情形下,新网络将仅使用包含更低级特征的层级。
可视化结果为:
在这里插入图片描述
情形 3:大型数据集,相似数据
在这里插入图片描述
如果新数据集很大,并且与原始训练数据相似:
1.删除最后的全连接层,并替换为输出数量与新数据集中的类别数量一样的层级
2.随机初始化新全连接层的权重,这个新层的权重需要从头开始训练,因此进行随机初始化。
3.使用预训练的权重初始化剩余的权重,网络的其余部分(除了新添加的全连接层)使用在原始数据集上训练得到的预训练权重作为初始权重。这有助于利用网络已经学到的知识,尤其是对于那些通用的特征提取部分。
使用预训练权重:意味着网络的初始部分(通常是卷积层)将保留它们在预训练任务中学到的权重,而不是从零开始(随机初始化)。这样做的原因是预训练权重已经能够识别许多有用的特征,这对新任务也可能是有益的,特别是当新任务与原始任务在视觉特征上有一定的相似性时。
4.重新训练整个神经网络,由于新数据集很大,重新训练整个网络(包括预训练层)是可行的,因为大量的数据有助于防止过拟合。在这个过程中,所有层的权重都会更新,以更好地适应新的数据集。
这种方法允许神经网络完全适应新数据集的特点,尤其是当新数据集与原始数据集在高级特征上相似时。通过这种方式,即使是预训练层也能微调,以更准确地反映新数据集的特性。
用大型数据集训练时,过拟合并不是严重的问题,所以可以重新训练所有权重。因为原始训练集和新数据集的更高级特征一样,所以使用整个神经网络。
可视化结果为:
在这里插入图片描述
情形 4:大型数据集,不同的数据
在这里插入图片描述
如果新数据集很大,并且与原始训练数据不同:
1.删除最后的全连接层,并替换为输出数量与新数据集中的类别数量一样的层级
2.从头训练网络,并随机初始化权重
3.或者采用和“大型数据集,相似数据”情形一样的策略
虽然数据集和训练数据不同,但是将初始权重设为预训练网络中的权重可能会加快训练速度。所以这种情形和“大型数据集,相似数据”情形完全一致。
如果将预训练网络设为起始网络没有生成成功的模型,你可以选择去随机初始化卷积神经网络权重,并从头训练网络。

在面对一个大型但与原始训练数据不同的新数据集时,有两种主要的策略来训练神经网络:
1.使用预训练网络的初始权重:即使新数据集与原始数据不同,使用预训练网络的权重作为起点仍然可能有益,因为这些权重可能包含了一些有用的、通用的特征提取能力。在这种情况下,你会替换最后的全连接层以适应新的类别数量,然后使用预训练网络的权重作为初始权重,重新训练整个网络。这种方法可以加快训练速度,并且在许多情况下效果很好,即使新数据集与预训练数据在某些方面不同。
2.从头开始训练网络,随机初始化权重:如果使用预训练模型的权重没有产生有效的结果,或者你发现预训练模型与新数据集的差异太大,另一个选择是完全放弃预训练权重,从头开始训练网络。这意味着所有的权重(包括卷积层和全连接层的权重)都将随机初始化,然后整个网络在新的数据集上进行训练。
简而言之,意味着可以选择使用预训练模型的权重作为起点,也可以选择完全不使用预训练权重,取决于具体情况和需求。
可视化结果为:
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Matlab是一种强大的数值计算和科学编程环境,它提供了丰富的工具箱和函数库,用于解决各种数学、工程和科学问题。迁移学习是机器学习领域的一个重要概念,它通过利用已经学习到的知识来改善在新任务上的学习性能。 在Matlab中,你可以使用机器学习工具箱来进行迁移学习的研究和应用。迁移学习的核心思想是将已经训练好的模型的知识迁移到新的任务上,从而加速新任务的学习过程或提高其性能。以下是一些关键概念和方法: 1. 预训练模型:使用大规模数据集在相关任务上进行训练得到的模型。这些模型通常在计算机视觉领域中应用广泛,如ImageNet数据集上预训练的卷积神经网络模型。 2. 微调:将预训练模型应用于新任务时,通过在新任务的数据集上进行进一步训练来调整模型参数。这样可以使模型更好地适应新任务的特征和要求。 3. 迁移学习策略:根据新任务和可用数据的特点选择适当的迁移学习策略。常见的策略包括特征提取、模型微调和多任务学习等。 4. 特征提取:利用预训练模型的特征提取能力,将其作为新任务的特征提取器。通过冻结预训练模型的参数,只训练新任务的分类器或回归器。 5. 模型微调:在预训练模型的基础上,通过调整模型的部分或全部参数,使其适应新任务。这通常需要较大规模的新任务数据集。 6. 多任务学习:同时学习多个相关任务,通过共享模型的表示能力来提高各个任务的性能。这种方法可以在数据集较小的情况下进行迁移学习。 在Matlab中,你可以使用机器学习工具箱中的函数和工具来实现迁移学习。例如,可以使用预训练模型进行特征提取,然后使用新任务数据集训练分类器或回归器。你还可以使用交叉验证和性能评估函数来评估迁移学习的效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值