【深度学习:Self-supervised learning (SSL) 】自我监督学习解释

news2024/11/17 6:27:47

在这里插入图片描述

【深度学习:SSL Self-supervised learning 】自我监督学习解释

    • 什么是自我监督学习?
      • 比较自我监督学习与监督学习和无监督学习
    • 为什么计算机视觉模型需要自监督学习?
      • 自我监督学习的好处
      • 自监督学习的局限性
    • 自我监督学习如何运作?
      • 对比学习
      • Non-Contrastive Learning (NC-SSL) 非对比学习
      • 对比预测编码 (CPC)
      • 实例判别方法
      • 基于能量的模型 (EBM SSL)
      • 对比群集分配
      • 联合嵌入架构
    • 计算机视觉自监督学习的用例
      • 医疗保健与医学成像 计算机视觉
      • 从 2D 图像进行 3D 旋转
      • 基于语义链接帧的视频运动预测
      • 机器人学:利用自我监督学习机制实现自主性
    • 要点总结

自监督学习(SSL)是一种利用原始、未标记数据来训练算法模型的人工智能(AI)方法。使用各种方法和学习技术,自监督模型在预训练阶段创建标签和注释,旨在迭代实现准确的地面实况,以便模型可以投入生产。

如果您难以找到时间和资源来注释和标记机器学习项目的数据集,SSL 可能是一个不错的选择。这种方法不同于无监督学习,且不需要耗费大量时间进行数据标记。

在本文中,我们将解释自监督学习,包括:

  • 什么是自我监督学习?
  • 它与监督学习和无监督学习有何不同?
  • 自监督学习的优势与局限性;
  • 自我监督学习是如何运作的?
  • 用例,特别是为什么计算机视觉项目需要自我监督学习?

让我们开始吧…

什么是自我监督学习?

自监督学习(SSL)是机器学习(ML)中的一种训练方式,它鼓励模型使用未标记的数据进行学习。

它不是依赖于大量标记和注释数据的模型(在监督学习的情况下),而是根据非结构化输入为数据生成标签。

在计算机视觉 (CV) 中,您可以使用灰度图像或半张图像来训练 ML 模型,以便它能够准确预测另一半或哪些颜色的去向。

在这里插入图片描述
自监督学习在计算机视觉和自然语言处理 (NLP) 中特别有用,在这些应用中,训练模型所需的标记数据量可能非常大。使用自监督方法在较少的数据上训练模型更具成本效益和时间效率,因为您不需要注释和标记那么多数据。

如果模型获得足够的数据并通过迭代过程生成准确结果,它可以更快地达到生产就绪状态。

在这里插入图片描述

比较自我监督学习与监督学习和无监督学习

在我们深入研究自我监督学习之前,将其与两种主要的替代方案进行比较是很有用的:监督学习和无监督学习。

监督学习 需要在高质量标记和注释数据上训练人工智能 (AI)、机器学习 (ML)、计算机视觉 (CV) 或其他算法生成的模型。这些标记数据以监督方式输入模型,人类机器学习工程师通过迭代反馈循环对其进行训练。

无监督学习 涉及在未标记的数据上训练模型,其中模型尝试查找数据中的模式和关系,而无需以标签形式给出明确的反馈。

自监督学习 是一种基于 ML 的训练格式和一系列鼓励模型从未标记数据进行训练的方法。基础模型和视觉基础模型 (VFM) 通常以这种方式训练,不依赖于标记数据。

无监督学习主要专注于分组、聚类和降维。在许多方面,这使得SSL成为无监督学习的一个子集。但是,这两种格式的输出存在差异。

另一方面,自监督学习用于执行分割、分类和回归任务,这与监督学习类似。

还有其他方法,例如半监督学习,它介于监督学习和无监督学习之间。但是,我们将把半监督学习作为另一篇关于模型训练和学习方法的文章的主题。

在这里插入图片描述
现在让我们看看为什么计算机视觉需要自我监督学习、SSL 的好处、它是如何工作的以及用例。

为什么计算机视觉模型需要自监督学习?

计算机视觉模型需要自监督学习,因为它们通常需要大量标记数据才能有效训练。获取、注释和标记这些数据可能既困难又昂贵。

特别是在高度专业化的领域,例如医疗保健,需要医疗专业人员来准确地注释和标记数据。

自监督学习可以提供标记大量数据的替代方案 - 这是一项昂贵且耗时的任务,即使您使用的是自动数据标记系统也是如此。相反,这允许模型从数据本身中学习并提高其准确性,而无需大量的标签和注释。

在这里插入图片描述
当每类标记数据具有相同数量的样本时,计算机视觉和其他算法生成的模型也表现更好。否则,偏差会潜入模型的性能。

不幸的是,如果一类图像或视频很难获得(除非您在合成数据创建或数据增强方面进行投资),则很难获得足够的数据来提高性能。

自监督学习减少或消除了为计算机视觉模型标记和注释数据的需要。同时减少了在计算机视觉情况下对增强和合成图像或视频创建的需求。

自我监督学习的好处

自监督学习对计算机视觉和其他基于 ML 和 AI 的项目、用例和模型有很多好处。

更具可扩展性: 对于较大的数据集,自监督学习更具可扩展性和管理性,因为这种方法不需要高质量的标记数据。即使图像或视频中的对象类别不像其他对象那样频繁,也不会影响结果,因为 SSL 可以处理大量非结构化数据。

改进模型结果: 自监督学习可以更好地表示数据的特征,从而提高计算机视觉模型的性能。不仅如此,SSL 方法还增强了模型的学习能力,而无需标记数据创建的结构。

增强的 AI 功能: 引入自监督学习来训练自然语言处理 (NLP) 模型。现在,它被用于基础模型,例如生成对抗网络 (GAN)、变分自编码器 (VAE)、基于转换器的大型语言模型 (LLM)、神经网络、多模态模型等。

在计算机视觉中,使用自监督学习方法可以更有效地执行图像分类、视频帧预测和其他任务。

在这里插入图片描述

自监督学习的局限性

同时,我们需要承认自监督学习存在一些局限性,例如:

需要大量的计算能力: 自监督学习需要强大的计算能力才能在大型数据集上训练模型。计算能力通常与神经网络或小型基础模型的规模相同。特别是因为模型在没有人工输入的情况下获取原始数据并对其进行标记。

准确性低: 人们很自然地期望自我监督学习不会像监督或其他方法那样产生准确的结果。如果没有以标签、注释和地面实况训练数据的形式为模型提供人工输入,初始准确率得分将很低。但是,有一些方法可以解决这个问题,我们将在下面探讨。

自我监督学习如何运作?

从基本层面上说,自监督学习是一种训练基于AI的模型的算法范式。当模型获得大量原始、几乎完全或完全未标记的数据,然后自行生成标签时,它就会起作用。

然而,这种说法有所简化,因为在这种训练方式下,可以应用多种SSL框架。让我们来看看其中最流行的七个,包括对比式和非对比式学习。

对比学习

对比学习 SSL 涉及训练模型以区分两个对比数据点或输入。这些对比点称为“锚点”,以正负格式提供。

正样本是与锚点属于同一分布的数据输入。相反,负样本与锚点的分布不同。

正样本是与锚点属于同一分布的数据输入。而负样本与锚点的分布不同。

Non-Contrastive Learning (NC-SSL) 非对比学习

另一方面,非对比自监督学习 (NC-SSL) 涉及仅使用非对比对(也称为正样本对)训练模型。而不是像对比学习那样的正面和负面样本。

对比预测编码 (CPC)

对比预测编码 (CPC) 最初是由 Google Deep Mind 的三位 AI 工程师向世界推出的,这是他们在 2019 年发布的论文。

CPC 是自然语言处理、计算机视觉和深度学习中一种流行的自监督学习方法。

CPC 也可用于计算机视觉,使用它来将预测编码与概率对比损失相结合。目的是训练一个模型来理解数据不同部分之间的表示。同时,CPC 可以更轻松地丢弃数据集中的低级噪声。

实例判别方法

实例判别方法将对比学习(例如 CPC、Contrastive 和 NC-SSL)应用于整个数据实例,例如数据集中的图像或一系列图像。

图像应随机选择。使用这种方法,一个图像以某种方式翻转(旋转、制作灰度等),作为正锚对,而一个完全不同的图像是负样本。目的是确保模型仍然理解,即使图像被翻转,它看到的是同一件事。

使用实例区分 SSL,应训练模型将马的灰度图像解释为正锚对的一部分,与牛的黑白图像不同。

在这里插入图片描述

基于能量的模型 (EBM SSL)

对于基于能量的模型 (EBM),这是一个使用数学模型计算两个输入之间的兼容性的问题。低能量输出表示高兼容性。虽然高能量输出表明,兼容性水平较低。

在计算机视觉中,使用 EBM SSL,向模型显示两张汽车图像应该会产生低能量输出。相比之下,将汽车与飞机进行比较应该会产生高能量输出。

对比群集分配

对比集群分配是实现自我监督学习的另一种方式。2020 年的一篇论文中发表了一种更具创新性的方法,介绍了一种称为 SwAV(在多个视图之间交换分配)的 ML 概念。

传统的对比集群作业涉及离线学习。模型需要在聚类分配和训练步骤之间交替,以便 ML 或 CV 模型学习理解不同的图像视图。

而使用 SwAV SSL 学习方法可以在线完成,从而更容易扩展到大量数据,同时受益于对比方法。

联合嵌入架构

自监督模型的另一种学习技术是联合嵌入架构。

联合嵌入架构涉及一个结构相同的双分支网络,其中为每个分支提供两个输入以计算单独的嵌入向量。

当两个源输入之间的“距离”很小时(例如,一个模型显示两个非常相似但略有不同的鸟在飞行中的图像)。然后可以调整潜在空间中的神经网络参数,以确保输入之间的空间缩小

在这里插入图片描述

计算机视觉自监督学习的用例

现在,让我们快速浏览一下自监督学习在计算机视觉中的许多实际应用中的四个。

医疗保健与医学成像 计算机视觉

在现实世界的用例中,自我监督学习的众多应用之一是在医疗保健领域。医学成像和注释是一个专业领域。准确性至关重要,尤其是当计算机视觉模型用于检测危及生命或限制生命的疾病时。

在计算机视觉中,DICOM、NIfTI 文件、X 射线、MRI 和 CT 扫描是用于训练算法模型的原材料。

在医疗领域,很难大规模获得准确标记的专有数据,部分原因是数据隐私和医疗保健法律(例如 HIPPA),还因为通常需要多名医生来注释这些数据。专业的医疗时间既宝贵又昂贵。很少有人有空闲时间对数据集中的大量图像或视频进行注释。

在这里插入图片描述
同时,计算机视觉在医疗保健领域非常有用,具有许多实际应用和用例。

应对上述挑战的一种解决方案是将自监督学习方法应用于医学成像数据集。举个例子:用于癌症检测的自监督学习。

Encord 与医疗专业人员和医疗保健数据科学家密切合作开发了我们的医学成像注释套件,为您提供强大的自动化图像注释套件,内置精确的 3D 注释、完全可审计的图像和无与伦比的效率。

从 2D 图像进行 3D 旋转

自监督计算机视觉学习的另一个实际应用是训练工厂中的机器人机器正确定位 3D 对象。自主和半自主机器人必须知道如何做到这一点,训练它们的一种方法是使用自监督计算机视觉模型使用图像和视频。

基于语义链接帧的视频运动预测

视频是序列中语义链接的帧序列。使用自监督学习模型更容易实现更高的准确性,因为对象通常从一个帧继续到下一个帧,至少在一系列帧上。

在预训练阶段可以应用各种参数,如特定物体运动的流畅性和重力的应用、距离、速度和时间。

在这里插入图片描述

机器人学:利用自我监督学习机制实现自主性

机器人不可能把可能遇到的所有情况都上传到硬件和软件中。要考虑的因素实在太多了。

一定程度的自主性是必不可少的,尤其是当机器人的运行地点距离控制中心太远时,例如美国宇航局休斯顿航天中心与火星车之间的通信。

即使在陆地环境中,机器人如果不具备实时、有时是即时决策的能力,充其量也是无效的,更糟糕的是会带来危险。因此,应用自我监督学习技术来确保机器人能够自主决策就显得尤为重要。

要点总结

自监督学习是在大量原始、未标记数据上训练 CV、AI、ML 或其他算法模型的有用方法。这为工程师、数据科学家和数据运营团队节省了大量的时间、金钱和资源。

另一方面,准备在预训练阶段使用我们在本文中概述的几种方法之一(例如,对比、非对比、CPC、EBL 等),以便基于 SSL 的模型可以产生更准确的结果。

否则,如果没有有助于训练模型的数据标记和注释的支持,您可能会面临准确性降低和训练过程花费更多时间的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

burpsuite 爆破

靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 账号字典:XXTK: 一些弱口令、fuzz字典 (gitee.com) 网盘链接:https://pan.baidu.com/s/1v5pAwaTwoeCnJgkUXf3iLQ?pwd=mllm 提取码:mllm --来自百度网盘超级会员V2的分享 一、暴力破解 - 基于…

Linux-端口、nmap命令、netstat命令

端口是设备与外界通讯交流的出入口,可分为物理端口和虚拟端口 物理端口实际存在可以看见,而虚拟端口是指计算机内部的端口,是不可见的,用来操作系统和外部交互使用。 IP地址不能锁定程序,所以可以通过端口&#xff0…

全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测

一、前言 抓包工具有很多,比如常用的抓包工具Httpwatch,通用的强大的抓包工具Wireshark.为什么使用fiddler?原因如下: 1.Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎…

线性代数——(期末突击)行列式(上)-行列式计算、行列式的性质

目录 行列式 行列式计算 逆序数 行列式的性质 转置 两行(列)互换 两行(列)对应相等 提公因子 两行(列)对应成比例 某行(列)为零 行列式分裂 行列式变换及三角行列式 行…

Selenium库和ChromeDriver谷歌驱动最新版安装

1.安装selenium库 使用pip安装第三方库selenium,速度较慢。 pip install selenium 使用国内清华源安装第三方库selenium,速度较快。 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple 2.安装谷歌浏览器驱动 驱动下载链接&#x…

低代码UI构件程序设计基础实训一

步骤一 低代码在线调试工具 网址 低代码在线调试工具 步骤二 D盘建一个文件夹,文件夹下建两个文件夹ico和js 网上找一些图片,后缀.png,编号从0开始,图片另存到ico文件夹下 下载(右键另存为)以下四个页面…

物流实时数仓:数仓搭建(DWS)二

系列文章目录 物流实时数仓:采集通道搭建 物流实时数仓:数仓搭建 物流实时数仓:数仓搭建(DIM) 物流实时数仓:数仓搭建(DWD)一 物流实时数仓:数仓搭建(DWD&am…

7nm项目之顶层规划——04 power routing and pushdown

1.设计数据导入(见01) 2.初始化 top floorplan with def 3.创建 block partition 4.调整 block floorplan (size/location/area/connection, manul work) 5.format floorplan size and location 6.create tracks 7.pin assignment 8.power routi…

<sa8650>sa8650 qcxser-之-QCX错误报告接口

<sa8650>sa8650 qcxser-之-QCX错误报告接口 1 前言2 错误报告设计3 报告错误的QCarCam APIs3.1 错误ID3.2 错误code3.3 错误源4 错误报告流1 前言 本章主要讲解QCX服务的错误报告接口,如何将qcxserver的错误诊断信息报告给Safety Monitor。 2 错误报告设计 图2-1显示了通…

Java实现阿里云OSS文件上传

1、OSS介绍 阿里云对象存储OSS(Object Storage Service)是一款云存储服务,通常用于图片、音视频、日志等海量文件的存储,并且数据以对象(Object)的形式存储在OSS的存储空间(Bucket &#xff09…

Centos7.9或Deebian12安装K3s和k9s详细流程

1、在线安装k3s 安装的版本为:v1.23.15k3s1 curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRRORcn INSTALL_K3S_VERSION"v1.23.15k3s1" sh - 2、安装完成,测试 kubectl get nodes正常输出即没…

使用tensorboard查看loss曲线

1.安装tensorboard pip install tensorboard 如果报错“no module named past”,执行下面的命令安装future pip install future2.在main.py中使用tensorboard绘制loss函数图像 # 导入 from torch.utils.tensorboard import SummaryWriterdef fit(self):for epoch in range(s…

Python之基本数据类型

目录 一、基本数据类型总结 二、基本数据类型 Number(数字) String(字符串) Bool(布尔类型) List(列表) Tuple(元组) Set(集合&#xff09…

初探ElasticSearch

1.什么是ElasticSearch? ElasticSearch简称ES,也成为弹性搜索,是基于Apache Lucene构建的开源搜索引擎。其实Lucene本身就是一款性能很好的开源搜索引擎工具包,但是Lucene的API相对复杂,而且掌握它需要很深厚的“内功…

Simpy:Python之离散时间序列仿真

Simpy:Python之离散时间序列仿真 文章目录 Simpy:Python之离散时间序列仿真简介基本使用语法简单案例在数据中心中的应用案例 简介 下载地址网站: https://pypi.org/project/simpy/ 有关教程网站: https://simpy.readthedocs.…

Vue 之 修饰符汇总

一、简介 在Vue中,修饰符是一种特殊的语法,用于修改指令或事件绑定的行为,它们以点号(.)的形式添加到指令或事件的后面,并可以改变其默认行为或添加额外的功能,如:禁止事件冒泡、数…

基于springboot的java读取文档内容(超简单)

读取一个word文档里面的内容,并取出来。 代码: SneakyThrowsGetMapping(value "/readWordDoc")ApiOperationSupport(order 1)ApiOperation(value "文档读取 ", notes "文档读取 ")public R ReadWordDoc () {System.o…

【深入浅出RocketMQ原理及实战】「云原生升级系列」打造新一代云原生“消息、事件、流“统一消息引擎的融合处理平台

打造新一代云原生"消息、事件、流"统一消息引擎的融合处理平台 云原生架构RocketMQ的云原生架构实现RocketMQ的云原生发展历程互联网时期的诞生无法支持云原生的能力 云原生阶段的升级云原生升级方向促进了Mesh以及多语言化发展可分合化的存算分离架构存储分离架构的…

复现PointNet(分割网络):Windows + PyTorch+代码

一、平台 Windows 10 GPU RTX 3090 CUDA 11.1 cudnn 8.9.6 Python 3.9 Torch 1.9.1cu111 所用的原始代码:https://github.com/fxia22/pointnet.pytorch​​​​​​​ 二、数据 shapenetcore_partanno_segmentation_benchmark_v0 三、代码 分享给有需要的…

数据分析工具PlotJuggler使用小技巧

一款优秀的开源的工具能事倍功倍。今天给大家推荐的工具主要是Davide Faconti开发。该工具是基于QT开发,支持静态文件和实时数据流画图分析。以下是该工具的官网链接https://github.com/facontidavide/PlotJuggler。本人旨在介绍使用心得。 1.支持静态文件和实时数…