预训练、迁移学习和微调理解

学习pytorch~~~

1.迁移学习

为了对迁移学习产生一个直观的认识,不妨拿老师与学生之间的关系做类比。

一位老师通常在ta所教授的领域有着多年丰富的经验,在这些积累的基础上,老师们能够在课堂上教授给学生们该领域最简明扼要的内容。这个过程可以看做是老手与新手之间的“信息转移”。

这个过程在神经网络中也适用。我们知道,神经网络需要用数据来训练,它从数据中获得信息,进而把它们转换成相应的权重。这些权重能够被提取出来,迁移到其他的神经网络中,我们“迁移”了这些学来的特征,就不需要从零开始训练一个神经网络了 。

2.预训练

预训练的意思就是提前已经给你一些初始化的参数,这个参数不是随机的,而是通过其他类似数据集上面学得的,然后再用你的数据集进行学习,得到适合你数据集的参数,随机初始化的话,的确不容易得到结果,但是这个结果是因为速度太慢,而不是最终的结果不一样

1) 预训练模型就是已经用数据集训练好了的模型。

2) 现在我们常用的预训练模型就是他人用常用模型,比如VGG16/19,Resnet等模型,并用大型数据集来做训练集,比如Imagenet, COCO等训练好的模型参数

3 ) 正常情况下,我们常用的VGG16/19等网络已经是他人调试好的优秀网络,我们无需再修改其网络结构。

3.迁移学习和预训练关系

通过使用之前在大数据集上经过训练的预训练模型,我们可以直接使用相应的结构和权重,将它们应用到我们正在面对的问题上。这被称作是“迁移学习”,即将预训练的模型“迁移”到我们正在应对的特定问题中。

4.微调

微调就是从一个预训练模型开始,我们改变一些模型的架构,然后继续训练整个模型的参数

pre-training就是把一个已经训练好的图像分类的模型的参数,应用到另一个类似任务上作为初始参数,这样之前训练模型的过程就叫做预训练,fine tuning就是在训练新任务的过程中慢慢调整参数叫做微调

这种情况大多数应用于迁移学习当中,当新任务的数据量较小时,之前类似的任务数据量较多时,可以使用之前训练的参数作为初始参数来训练新任务。

所以,预训练 就是指预先训练的一个模型或者指预先训练模型的过程;微调 就是指将预训练过的模型作用于自己的数据集,并使参数适应自己数据集的过程。

5. 微调模型的方法

5.1 特征提取

我们可以将预训练模型当做特征提取装置来使用。具体的做法是,将输出层去掉,然后将剩下的整个网络当做一个固定的特征提取机,从而应用到新的数据集中。

5.2 采用预训练模型的结构

我们还可以采用预训练模型的结构,但先将所有的权重随机化,然后依据自己的数据集进行训练。

5.3 训练特定层,冻结其他层

另一种使用预训练模型的方法是对它进行部分的训练。具体的做法是,将模型起始的一些层的权重保持不变,重新训练后面的层,得到新的权重。在这个过程中,我们可以多次进行尝试,从而能够依据结果找到frozen layers和retrain layers之间的最佳搭配。

如何使用与训练模型,是由数据集大小和新旧数据集(预训练的数据集和我们要解决的数据集)之间数据的相似度来决定的。

6.构建和训练迁移学习模型的基本步骤

  • 初始化预训练模型
  • 把最后一层的输出层改变为我们想要分的类总数
  • 定义一个optimizer来更新参数
  • 模型训练

还可以看下Cs231n里面也有讲迁移学习
参考: 一文看懂迁移学习:怎样用预训练模型搞定深度学习?

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
迁移学习(Transfer Learning)是一种机器学习技术,通过将在一个任务上训练好的模型应用于另一个相关任务,从而加快和改善后续任务的学习过程。 在迁移学习中,训练的模型通常是在大规模数据集上进行训练,如ImageNet数据集。这些训练的模型已经学习到了图像的通用特征表示,具备一定的视觉理解能力。通过将这些模型应用于新任务时,可以从训练模型中获取到一些有用的特征和知识,从而加速和改善新任务的学习过程。 对训练模型进行微调迁移学习的一种常见策略。微调是指在训练模型的基础上,对模型的一部分或全部参数进行重新训练,以适应新任务。微调可以分为两个步骤: 1. 冻结:首先,将训练模型的所有参数都锁定住,不进行更新。这样可以保持训练模型已经学到的特征表示不变。 2. 微调:然后,在冻结的基础上,对新任务的特定层或几个层进行解冻,并将其参数设置为可更新。这些解冻的层将根据新任务的数据进行训练,而其他层仍然保持不变。通过微调这些特定层,模型可以适应新任务的特定特征和要求。 微调的关键是要根据新任务的特征和数据进行选择性解冻和训练。通常,底层的卷积层包含更通用的特征表示,可以保持不变,而较高层的全连接层则会在新任务中学习到更特定的特征。 在微调过程中,可以使用较小的学习率进行参数更新,以避免破坏已经学到的特征表示。此外,还可以通过数据增强技术来扩充训练集,以提高模型的泛化能力。 总结来说,迁移学习是利用训练模型的知识和特征表示来加速和改善新任务的学习过程。对训练模型进行微调是一种常见策略,包括冻结参数、解冻特定层并对其进行重新训练。通过合适地选择解冻层和进行微调,可以使模型更好地适应新任务的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值