跳转至

Pretext task

前置任务, 或者"借口"任务, Pretext Task是自监督学习中的一个核心概念, 指的是在没有外部标签监督的情况下, 为了学习有效的数据表示而人为设计的一种"假任务". 它通常和真正的目标任务无关. 但是通过在训练模型的时候让模型完成这个"假任务", 模型能够学习到对数据分布有用的表征, 在真正需要进行下游任务(如分类, 目标检测)的时候, 这些表征就能有效地迁移或者微调, 从而得到更好的性能.

这些任务本身并不是实际想要解决的问题, 因为被称为pretext, 即"借口"任务, 但是由于任务的设计会让模型自动学到对图像有判别里的特征, 因此对后续"真正"关心的下游任务是有帮助的.

图像领域的如让模型去预测被随机遮挡或者扣掉的图像块, 让模型判断一张图像是否被旋转, 旋转了多少度, 让模型预测两个图像patch是否来自同一张图像等等. 在NLP领域, 像GPT的语言模型, BERT的MLM以及T5的Span Corruption都可以看作是一种Pretext Task.

个人的看法: 前置任务可以被理解为预训练阶段的优化目标, 优化目标是一个更大的topic, 具体的下游任务也有优化目标. 损失函数不是优化目标也不是前置任务, 不同的优化目标可能有相同的损失函数, 如图像旋转, 图像拼图等优化目标都可以用对比损失函数来衡量正样本和anchor的相似度, 负样本与anchor的相似度. 对比损失函数的实现方式也有好多种, 如基于点积的, 基于margin的. 总之就是一种层层递进的关系.