• 自监督学习(一):基于 Pretext Task


    ⾃监督学习算法分为两种: 生成式自监督学习与对比式自监督学习:

            生成式:训练编码器将输入x编码成显式向量z,解码器从z重建x,最小化重建误差;

            对比式:编码器将输入x编码成显式向量z以度量相似性(例如互信息最大化)。(对⽐学习要做的就是学习⼀个编码器f,这个编码器f能够拉近x与其正样本间的距离,推远x与其负样本之间的距离。即:)


    Proxy tasks(辅助任务/代理任务):

    其中辅助任务的指的是为达到特定训练任务⽽设计的间接任务,pretext任务的好处是为了简化原任务的求解,在深度学习中就是避免⼈⼯标记样本,实现⽆监督的语义提取。

    Pretext任务可以进⼀步理解为:对⽬标任务有帮助的辅助任务。主要pretext task包括:图像旋转、图像着⾊、图像修复,即类似于数据增强的操作。

    无监督学习中设计辅助任务的意义?

    无监督学习中通过设计辅助任务(Proxy tasks)来挖掘数据自身的表征特性作为监督信息,提升模型的特征提取能力
     

     

    什么时候使用自监督学习?
    自监督学习的出发点是考虑在缺少标签或者完全没有标签的情况下,依然学习到能够表示原始图片的良好有意义的特征。

    关于自监督学习的概念,使用无标注数据用自我监督的方式学习一种表示的方法,具体方式是通过学习一个代理任务(pretext task)的目标函数来获取特征表示。代理任务可以是一个预测类任务、生成式任务、对比学习任务。

    根据认为设计的不同的pretext方法,自监督可以分为:

    1. 基于上下文context:预训练LM、蒸馏、数据增强、伪标签、self-training等
    2. 基于时序
    3. 基于对比:contrastive learning通过对比学习来完成自监督学习

    为什么出现自监督学习?

    自监督学习有一个非常强的动机:目前,大部分神经网络的训练仍然使用的是有监督范式,需要耗费大量的标注数据,标注这些数据是非常耗时费力的。而自监督的提出就是为了打破对人工标注的依赖,即使在没有标注数据的情况下,也可以高效地训练网络。众所周知,神经网络的训练需要任务来进行驱动,所以自监督学习的核心就是来合理构造有利于模型学习的任务。目前来说构造这些任务的方法大致可以划分为三个方面:

    1) 基于 pretext task ( 代理任务 ):是为了学习图片的语义信息

    2) 基于 contrastive learning ( 对比学习 )

    3) 基于 mask image modeling ( 掩码图像模型 )

    这篇文章主要介绍 基于 pretext task 的自监督学习算法是如何构造任务驱动模型来进行高效学习的。以下我们将分析 4 篇主流文章,带大家一起感受基于 pretext task 的自监督学习算法。


    1、Relative Location(让模型来预测一个 patch 相对于另外一个 patch 的位置)

    论文链接: https://arxiv.org/abs/1505.05192

    视觉领域也可以利用图片的 context 信息来完成自监督训练。作者从一张图片中随机抽取两个 patches,然后让模型来预测一个 patch 相对于另外一个 patch 的位置
    作者认为: 模型只有很好地理解到图片中的各种场景,物体,以及各部分之间的相互关系,模型才能够很好地完成这个相对位置预测任务。

    具体做法如上图所示,从红色框中随机选取一个,然后让模型预测其相对于蓝色方框的位置。具体网络结构如上图所示:最开始让两个网络分别提取两个 patches 的特征,然后再在最后面进行融合

    2、Colorization(通过L通道来预测a, b 通道的值

    论文链接: https://arxiv.org/abs/1603.08511

    作者主要通过构造一个图片着色任务来让模型学习图片的语义信息。因为作者认为: 只有很好地理解到了各种场景的独立的语义信息,以及他们之间的联系,模型才能够很好完成这项任务。

    具体做法如上图所示,作者将图片转换到 CIE Lab 颜色空间,然后将 L 通道喂入模型,然后让模型去预测 a, b 通道的数值。但是,如何设计损失函数非常有考究。

    如果直接通过回归的方式来完成 a, b 通道的预测,那么最终的着色效果是不太理想的,最终的图片偏灰度图。

    因为图片中每个物体可能有多个可能的着色效果,所以作者将其转换成一个分类问题,并进一步提出 class rebalancing 来平衡不同像素点对模型训练的影响。

    3、Context Encoders(计算生成的mask区域与从原始mask的损失,使模型可以学到被mask的信息)

    论文链接: https://arxiv.org/abs/1604.07379

    与上面讲到的 Colorization 类似,Context Encoders 也是通过设计重建原图来使模型学习到图片的语义信息。但是与 Colorization 不同,Context Encoders 是从空间维度对图片进行重建,而 Colorization 是从图片的通道维度进行重建。作者认为:模型只有很好地理解到整张图片的语义信息,才能够很好地完成这个重建任务。

    具体做法,如上图所示: 作者 mask 掉一部分图片信息,再将 mask 过的图片喂入网络,然后让 mask 掉的部分对预测的部分进行监督,并使用 L2 loss 驱动模型学习
    到此为止,通过对图片进行重建来进行自监督学习的整个流水线已经搭建完成。但是作者发现,仅仅使用 L2 loss 容易使得模型的重建结果非常模糊,而没有很好地重建出图片的高频信号。这是因为,回归平均值对 L2 loss 来说更易于优化。

    为了解决上述问题,作者进而提出添加了一个对抗损失函数,这个函数的引入使得重建的图片更加 sharp,进而提高了模型对图片语义的理解能力。

    最后,作者探索了如何来 mask 图片,最终发现采用 Central region 的模型的泛化能力不是特别好,而采用 Random block 和 Random region 的模型取得不错且相似的结果

    4、Rotation Prediction(通过让模型去识别图片的旋转角度,让模型具有理解图片语义信息的能力

    论文链接: https://arxiv.org/abs/1803.07728

    作者希望通过让模型去识别图片的旋转角度,让模型具有理解图片语义信息的能力。为了完成这个任务,作者认为:模型只有很好地识别并提取图片中的主要物体,并理解其和图片中其他景物的语义信息,才能够完成这个旋转角度识别任务。其具体操作如下:

    首先定义多种旋转操作,将旋转后的图片喂入网络,然后对模型进行分类任务训练,让模型输出当前图片被施加了何种旋转操作
    通过这样一个简单的任务,作者发现,模型具备了提取图片中主要物体,并理解图片语义信息的能力。除此之外,作者继续分析了该方法成功的原因:

    1)相较于其他操作,旋转操作没有遗留任何明显的 low-level 线索让模型轻易完成这个旋转识别任务。所以,模型必须得去理解图片的语义信息。
    2)识别旋转角度是一个定义非常完善的任务。因为,大多数情况下图片中的物体总是呈现直立的状态,所以理想情况下,模型可以清楚地识别图片被旋转了多大的角度。除非,物体是类似于圆形的形状。

    通过上面四个例子,我们可以发现,基于 pretext task 的自监督学习算法都具有以下两个特点:

    1)一个定义良好的任务,例如识别旋转角度和相对位置。
    2)合理的限制条件,例如引入何种条件才能够避免模型得到无效解。

    自监督学习系列(一):基于 Pretext Task - 知乎

  • 相关阅读:
    Lumiprobe 点击化学丨非荧光炔烃:己酸STP酯
    2023后端面试题(持续性更新)
    【2022国赛模拟】摆(bigben)——行列式、杜教筛
    LRTimelapse 6 for Mac(延时摄影视频制作软件)
    蓝桥杯实战应用【算法知识篇】-分治法介绍及关键点解析
    图像处理 QImage
    微信小程序通过npm引入tdesign包进行构建的时候报错
    Ceph分布式存储:资源池Pool的管理与MDS、RBD、RGW接口的部署
    龙芯3a5000下编译nginx源码
    JavaScript 47 JavaScript 正则表达式
  • 原文地址:https://blog.csdn.net/weixin_43135178/article/details/126349526