预训练到微调:深入理解AI的上下游任务

笔者在2022年开始做目标检测时,了解过上游任务和上游任务的区别,在这里举例进行初步的解释。本文以目标检测为例子来解释概念。

一、简单说说:上下游任务的协同关系

上下游任务是前后关系,上游任务先让模型学习到通用的特征表示,下游任务再让模型学习到特定的特征表示来解决特定问题。可以先理解成下图1所示:

预训练
微调训练
微调训练
微调训练
微调训练
上游任务
通用的预训练模型
下游任务
目标检测模型
语义分割模型
机器翻译模型
...
图1. 上下游任务的流程

如上图所示,通过这种分工,上游任务提供"基础能力",下游任务专注"业务落地",形成完整的pipeline。



二、具体讲讲:上游任务(Upstream Tasks)

#1. 核心目标

上游任务的核心是通过大规模预训练让模型学习通用特征表示,得到「预训练模型」,以此为后续下游任务提供强大的迁移能力

通用特征比如COCO数据集中80个类别的330K张图片,部分数据样本如下图2所示:

COCO数据集的示例图片

图2. COCO数据集的示例图片

注:本图引子论文《Microsoft COCO: Common Objects in Context》

#2. 关键特点

1️⃣数据规模大

  • 通常使用海量数据(如目标检测数据集COOC、图片分类数据集ImageNet等)。
  • 例如:YOLO系列在COCO上预训练、BERT在Wikipedia+BookCorpus(16GB文本)上预训练,ViT在JFT-300M(3亿张图片)上训练。

2️⃣学习通用特征

  • 图像领域的颜色、纹理、边缘等特征;
  • 文本领域的词向量、语法结构等特征。

3️⃣迁移能力强大

  • 因为数据集庞大且类别庞大,所以得到的预训练模型通常能适应绝大多数的现实场景。


三、具体讲讲:下游任务(Downstream Tasks)

#1. 核心目标

基于「预训练模型」进行微调训练(Fine-tuning)应用到实际落地场景,解决实际问题。

微调数据集的数据量通常比预训练数据集少几十倍。

#2. 举几个栗子

任务类型输入-输出实际应用
目标检测图片 => 定位+分类工业瑕疵检测、自动驾驶(检测行人、车辆)
语义分割图片 => 分类(像素级别)医学图像(肿瘤区域分割)
机器翻译文本 => 文本Google Translate|有道翻译

#3. 实现方式——微调(Fine-tuning)

1️⃣微调(Fine-tuning)

  • 对整个网络进行微调训练在预训练模型顶部添加任务特定层(如分类头),端到端训练。
  • 适用场景:微调数据集量很大,如几万的数据样本。

2️⃣冻结核心部分并进行微调训练

  • 冻结骨干网络(Backbone),仅对部分网络(如Head)进行微调训练,或添加新模块并进行微调。
  • 适用场景:数据量较小,如只有几百的数据样本。

如果这篇文章对您有些许帮助,请帮忙点个赞👍或收个藏📃。您的支持是我继续创作的动力💪!


不要害怕,不要着急。保持每日的前进☀️与积极的内心❤️,命运总在曲折中馈赠最好的礼物。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北上ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值