自监督学习应用

news2024/11/19 19:41:02

1 自监督学习

自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。(也就是说自监督学习的监督信息不是人工标注的,而是算法在大规模无监督数据中自动构造监督信息,来进行监督学习或训练。因此,大多数时候,我们称之为无监督预训练方法或无监督学习方法,严格上讲,他应该叫自监督学习)

自监督学习的主要方法

基于上下文:由于数据本身的上下文信息,我们其实可以构造很多任务,比如在NLP领域中最重要

的算法Word2vec。Word2vec主要是利用语句的顺序,例如CBOW通过前后的词来预测中间的词,而Skip-Gram通过中间的词来预测前后的词。

        而在图像中,研究人员通过一种名为 Jigsaw(拼图)的方式来构造辅助任务。我们可以将一张图分成 9 个部分,然后通过预测这几个部分的相对位置来产生损失。比如我们输入这张图中的小猫的眼睛和右耳朵,期待让模型学习到猫的右耳朵是在脸部的右上方的,如果模型能很好的完成这个任务,那么我们就可以认为模型学习到的表征是具有语义信息的。

后续的工作人们又拓展了这种拼图的方式,设计了更加复杂的,或者说更难的任务。首先我们依然将图片分为 9 块,我们预先定义好 64 种排序方式。模型输入任意一种被打乱的序列,期待能够学习到这种序列的顺序属于哪个类,和上个工作相比,这个模型需要学习到更多的相对位置信息。这个工作带来的启发就是使用更强的监督信息,或者说辅助任务越难,最后的性能越好。

        除了这种拼图的模式,还有一种是抠图。想法其实也很简单粗暴,就是我们随机的将图片中的一部分删掉,然后利用剩余的部分来预测扣掉的部分,只有模型真正读懂了这张图所代表的含义,才能有效的进行补全。这个工作表明自监督学习任务不仅仅可以做表征学习,还能同时完成一些神奇的任务。

 

        而对于这种抠图的方式,其实和 nlp 中的 BERT的 MASK LM 训练方式有异曲同工之妙,BERT 在训练时也可以是看做随机扣掉一些词,然后来预测扣掉的词,从而让模型读懂句子。

BERT/Mask LM

        还有一种思路是通过图片的颜色信息,比如给模型输入图像的灰度图,来预测图片的色彩。只有模型可以理解图片中的语义信息才能得知哪些部分应该上怎样的颜色,比如天空是蓝色的,草地是绿色的,只有模型从海量的数据中学习到了这些语义概念,才能得知物体的具体颜色信息。同时这个模型在训练结束后就可以做这种图片上色的任务。

        

        这种基于预测颜色的生成模型带给了人们新的启发,其实这种灰度图和 ab 域的信息我们可以当做是一张图片的解耦表达,所以只要是解耦的特征,我们都可以通过这种方式互相监督的学习表征,著名的 Split-Brain Autoencoders 就在做这样一件事情。对于原始数据,首先分成两部分,然后通过一部分的信息来预测另一部分,最后再合成完成的数据。

        和传统编码器不同的是,这种预测的方式可以促使模型真正读懂数据的语义信息才能够实现,所以相当于间接地约单单束编码器不靠 pixel-wise 层面来训练,而要同时考虑更多的语义信息。

        最后我们要介绍的是根据类似数据增广的方式来寻找自监督上下文。ICLR 2018 [13]的工作是给定一张输入的图片,我们对其进行不同角度的旋转,模型的目的是预测该图片的旋转角度。这种朴素的想法最后带来的增益竟然是非常巨大的,所以数据增强对于自监督学习也是非常有益处的,我个人的想法是数据增强不仅带来了更多的数据,还增加了预训练模型的鲁棒性。

        自监督学习在预训练模型中的成功让研究人员觉得非常兴奋,同时也激发了更多的灵感。我们之前介绍的模型都是在专注如何寻找自监督信息,而自监督学习一定要脱离下游的具体任务吗?答案是否定的,越来越多的工作开始思考自监督学习和具体任务紧密结合的方法(Task Related Self-Supervised Learning)。

基于时序:

(1)基于帧的相似性,对于视频中每一帧,其实存在着特征相似的概念,简单来说,可以认视频中的相邻特征是相似的,而相隔较远的视频帧是不相似的,通过构建这种相似和不相似的样本来进行自监督约束。

(2)基于无监督追踪方法,首先在大量的无标签视频中进行无监督追踪,获取大量的物体追踪框。那么对于一个物体追踪框在不同帧的特征应该是相似的(positive),而对于不同物体的追踪框中的特征应该是不相似的(negative)。

(3)除了基于特征相似性外,视频的先后顺序也是一种自监督信息。

        之前介绍的方法大多是基于样本自身的信息,比如旋转、色彩、裁剪等。而样本间其实也是具有很多约束关系的,这里我们来介绍利用时序约束来进行自监督学习的方法。最能体现时序的数据类型就是视频了(video)。

        第一种思想是基于帧的相似性,对于视频中的每一帧,其实存在着特征相似的概念,简单来说我们可以认为视频中的相邻帧特征是相似的,而相隔较远的视频帧是不相似的,通过构建这种相似(position)和不相似(negative)的样本来进行自监督约束。

        还有一种想法是来自 @Xiaolong Wang 大佬 ICCV 2015 [18]的基于无监督追踪方法,首先在大量的无标签视频中进行无监督追踪,获取大量的物体追踪框。那么对于一个物体追踪框在不同帧的特征应该是相似的(positive),而对于不同物体的追踪框中的特征应该是不相(negative)。

        除了基于特征相似性外,视频的先后顺序也是一种自监督信息。比如ECCV 2016, Misra, I. [19] 等人提出基于顺序约束的方法,可以从视频中采样出正确的视频序列和不正确的视频序列,构造成正负样本对然后进行训练。简而言之,就是设计一个模型,来判断当前的视频序列是否是正确的顺序。

对话:
(1)基于顺序的约束可以用于对话系统中,ACL2019(Wu, Jiawei et al. “Self-Supervised Dialogue Learning.” ACL (2019).)提出的自监督对话系统就是基于这种思想。这篇文章主要是想解决对话系统中生成的话术连贯性的问题,期待机器生成的回复和人类交谈一样是符合之前的说话的风格、习惯等。从大量的历史预料中挖掘出顺序的序列(positive)和乱序的序列(negative),通过模型来预测是否符合正确的顺序来进行训练。训练完成后就拥有了一个可以判断连贯性的模型,从而可以嵌入到对话系统中,最后利用对抗训练的方式生成更加连贯的话术。

(2)BERT的Next Sentence Prediction也可以看作是基于顺序的约束,通过构造大量的上下文样本,目的是让模型理解两个句子之间的联系。这一任务的训练语料可以从语料库中抽取句子对包括两个句子A和B来进行生成,其中50%的概率B是A的下一个句子,50%的概率B是语料中的一个随机句子。该任务预测B是否是A的下一句。

3 基于对比

       第三类自监督学习的方法是基于对比约束的,它通过学习对两个事物的相似或不相似进行编码来构建表征,这类方法的性能目前来说是非常强的。

        其实第二部分所介绍的基于时序的方法已经涉及到了这种基于对比的约束,通过构建正样本(positive)和负样本(negative),然后度量正负样本的距离来实现自监督学习。

核心思想:

样本和正负样本之间的距离远远大于样本和负样本之间的距离:

        这里的x通常也称为[anchor]数据,为了优化anchor数据和其正负样本的关系,我们可以使用点积的方式构造距离函数,然后构造一个softmax分类器,以正确分类正样本和负样本。这应该鼓励相似性度量函数(点积)将较大的值分配给正例,将较小的值分配给负例。

        通常这个损失也被称为 InfoNCE ,后面的所有工作也基本是围绕这个损失进行的。

        CPC同样是一个基于对比约束的自监督框架,主要是可以应用于能够以有序序列表示的任何形式的数据:文本、语音、视频、甚至图象(图象可以被视为像素或块的序列)。

        CPC 主要是利用自回归的想法,对相隔多个时间步长的数据点之间共享的信息进行编码来学习表示,这个表示 c_t 可以代表融合了过去的信息,而正样本就是这段序列 t 时刻后的输入,负样本是从其他序列中随机采样出的样本。CPC的主要思想就是基于过去的信息预测的未来数据,通过采样的方式进行训练。

        数据增广对于自监督学习是有益的,不同数据增广方式的结合比单一增广更好。
同时作者公布了非常多的实验经验,比如自监督学习需要更大的 batch 和更长的训练时间。            自监督学习的“标注”通常来自于数据本身,其常规操作是通过各自的“auxiliary task”来提高学习表征(representation)的质量,从而提高下游任务的质量。

自监督的方法常用的情景或任务:为了解决数据集无标签或者标签较少质量低的问题。

 自我监督方法可以看作是一种具有监督形式的特殊形式的非监督学习方法,这里的监督是由自我监督任务而不是预设先验知识诱发的。与完全不受监督的设置相比,自监督学习使用的数据集本身的信息来构造伪标签。在表示学习方面,自我监督学习具有取代完全监督学习的巨大潜力。人类学习的本质告诉我们,大型注释数据集可能不是必需的,我们可以自发地从未标记地数据集中学习。更为现实的设置是使用少量带注释的数据进行自学习。这称为Few-shot Learning。

 所有的非监督学习方法,例如数据降维(PCA:在减少数据维度的同时最大化的保留原有数据的方差),数据拟合分类(GMM: 最大化高斯混合分布的似然), 本质上都是为了得到一个良好的数据表示并希望其能够生成(恢复)原始输入。这也正是目前很多的自监督学习方法赖以使用的监督信息。基本上所有的encoder-decoder模型都是以数据恢复为训练损失。
 

2自监督学习应用到自动驾驶方面

自监督学习应用到车载激光雷达点云。

存在问题:如何从点云中获得其他交通参与者的运动信息是一个重要课题,并且存在如下挑战:

  • 交通参与者的类别不一样,每个类别都表现出特定的运动行为;
  • 激光雷达点云的稀疏性导致两次激光雷达扫描的情况不能精确地被对应起来;
  • 需要在很短的时间内和有限的车载算力下完成计算。

传统做法:是通过识别场景中其它交通参与者,根据所观测到的历史信息,来预测交通场景会如何变化,从而实现预测。

存在不足:大多数识别模型都是为检测若干已知类别的物体而训练的。在实际情况中,经常会遇上从未出现过的物体类,因此这肯定不是长久之计。

其他做法:通过估计激光雷达点云每个点的3D运动来从点云中估计场景流,但这样做对计算的要求太高了,自动驾驶车又特别需要满足实时性,所以根本无法进行实际应用。

其三基于BEV(Bird’s Eye View)的方式,把激光雷达的点云画成一个个小网格,每个网格单元被称为体柱,点云的运动信息可以通过所有体柱的位移向量来描述,该位移向量描述了每个体柱在地面上的移动大小和方向。

这种表征方法成功简化了运动场景,反正只需要考虑在水平方向上的运动情况,而不用特别考虑垂直方向上的运动。这种方式的所有关键操作都可以通过2D卷积进行,计算速度非常快。但是,这种方式需要依靠大量带有标注的点云数据,但点云数据的标注成本比普通图像更高。一辆自动驾驶汽车每天会产生超过1TB的数据,但仅有不到5%的数据被利用,若能把其他数据也充分利用起来,在没有手工标注的数据上来进行学习,效率必将大幅提升。

用于自动驾驶的自监督“点云运动和学习”

https://arxiv.org/pdf/2104.08683.pdf

为了充分利用BEV中运动表征的优点,研究团队将点云组织成体柱(Pillar),并将与每个体柱相关的运动信息称为体柱运动(Pillar Motio)。假设连续两次扫描之间的体柱或物体的结构形状是不变的。然而,这在大多数情况下是不成立的,因为激光雷达的稀疏扫描,连续的两个点云缺乏精确的点与点的对应。

解决方案是利用从相机图像中提取的光流来提供跨传感器的自监督和正则化。如图2所示,这种设计形成了一个统一的学习框架,包括激光雷达和配对相机之间的交互:

(1) 点云有助于将自车运动(Ego-motion)导致的图像运动从光流中分解出来;

(2) 光流为点云中的体柱运动学习提供了辅助正则化;

(3) 反投影(Back-projected)光流形成的概率运动掩膜(Probabilistic Motion Masking)提升了点云结构的一致性。

注意,与相机相关的模块仅用于训练,在推理阶段不会被使用,因此,在运行时不会对相机相关的模块引入额外的计算。

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

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

相关文章

涨幅25%,2023全球电动车销量将飙升至2000万辆 | 百能云芯

近日,工研院在「眺望2024产业发展趋势研讨会」上发布消息,预测随着全球晶片短缺的逐渐缓解,以及俄乌地区供应链产能向其他国家的部分转移,全球汽车市场在疫情的影响下逐渐回暖。根据工研院的数据,2023年全球汽车销量预…

DSP_控制程序框架有感

本文仅代表个人观点,若有不同意见,请评论区讨论或私信留言。 中心思想: 基于DSP的控制程序可分为两个部分,① 对实时性要求高的部分,②对实时性要求不高的部分。 ① 对实时性要求高的程序,建议采用中断处理…

Ubuntu22.04本地部署PaddleSpeech实验代码(GPU版)

前言 之前做了一个Ubuntu18.04.6本地部署PaddleSpeech实验代码(CPU版)的相关项目,因为是CPU版的,合成/训练等方面的耗时真的是非常感人,有了之前的经验,又部署了一个GPU版的,说实话虽然时间用的…

CVE-2022-22963 Spring Cloud Function SpEL命令注入

一、简介 Spring Cloud Function 是基于 Spring Boot的函数计算框架。该项目致力于促进函数为主的开发单元,它抽象出所有传输细节和基础架构,并提供一个通用的模型,用于在各种平台上部署基于函数的软件。在Spring Cloud Function相关版本&am…

Pytest框架之fixture详解

本文详细讲解了Pytest框架之fixture,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 相关文章 pytest作为python语言的测试框架,它的fixture有2种实现方式。 一种是xunit-style&#xf…

OpenLayers实战,OpenLayers获取用户定位位置并高亮显示用户所在行政区划边界

专栏目录: OpenLayers实战进阶专栏目录 前言 本篇文章通过国内的省、自治区和直辖市的GeoJson数据作为行政区划边界数据,然后根据用户定位位置,通过OpenLayers计算得到用户所在行政区划,并使用OpenLayers高亮显示用户所在行政区划边界。 本章是综合应用场景,所以代码稍…

ESP32 ESP-IDF LVGL移植和Wokwi仿真

陈拓 2023/10/21-2023/10/25 1. ESP-IDF开发环境 ESP-IDF的LVGL移植包括2个组件: lvgllvgl_esp32_drivers 目前lvgl_esp32_drivers在ESP-IDF 5.0以上版本编译通不过,所以我们安装ESP-IDF 4.4.5。 从https://dl.espressif.cn/dl/esp-idf/下载 安装说明…

纳米软件分享:芯片电学测试及测试参数指标介绍

电学测试是芯片测试的一个重要环节,用来描述和评估芯片的电性能、稳定性和可靠性。芯片电学测试包括直流参数测试、交流参数测试和高速数字信号性能测试等。 什么是芯片电学测试? 芯片电学测试就是检测芯片、元件等电性能参数是否满足设计的要求。检测的项目有电压…

【uniapp】短信验证码输入框

需求是短信验证码需要格子输入框 如图 网上找了一个案例改吧改吧 直接上代码 结构 <template><view class"verify-code"><!-- 输入框 --><input id"input" :value"code" class"input" :focus"isFocus"…

Ubuntu安装Jitsi Meet详细教程

文章目录 Ubutu系统安装启用root账户切换Ubuntu源设置DNS 主机名和域名配置安装open JDK安装Nginx安装 Jitsi Meetjitsi本地测试使用一个奇怪的BUG Jist服务管理 Ubutu系统安装 官方推荐用Ubuntu&#xff0c;网上很多教程也都是基于Ubuntu的&#xff0c;所以选择这个系统。 其…

【Python Numpy】Ndarray属性

文章目录 前言一、NumPy数组的常用属性1.1 常用属性1.2 示例代码 总结 前言 NumPy&#xff08;Numerical Python&#xff09;是Python中用于科学计算的一个重要库&#xff0c;它提供了一个强大的多维数组对象&#xff08;ndarray&#xff09;以及一系列用于处理这些数组的函数…

从0到1:CTFer成长之路——死亡 Ping 命令

死亡 ping 命令 绕过探测 手动尝试 慢 脚本生成转义后的字符&#xff0c;后面拼接命令 import urllib.parsewith open(r"C:\Users\LEGION\Desktop\RCE.txt", "w", encoding"utf-8") as f:for i in range(0, 255):encoded_str urllib.parse…

短篇小说 《镜花水月》

最近脑中不知道为什么&#xff0c;一直构想着这样一个故事&#xff0c;心血来潮&#xff0c;还是想把它直接付诸实践。如果大家有些兴趣可以读一读&#xff0c;欢迎评论留言&#xff0c;发表自己的看法&#xff0c;大家也可以给一些建议或者自己设计一些比较好的情节或者点&…

leetcode第80题:删除有序数组中的重复项 II

题目描述 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 …

一种实用的边的存储结构--链式前向星

文章目录 前言前向星定义存储结构优缺点 链式前向星边的定义边的插入边的查找运行示例 总结 前言 我们对于图的存储方式常用的有邻接矩阵&#xff08;适用于稠密图&#xff09;&#xff0c;对于边的查询效率较低&#xff0c;也有邻接表&#xff0c;对于边的查询效率高&#xf…

警报:Citrix和VMware漏洞的PoC利用代码已发布

导语 近日&#xff0c;虚拟化服务提供商VMware向客户发出警报&#xff0c;称其Aria Operations for Logs中的一个已修补安全漏洞的PoC利用代码已经发布。这个高危漏洞&#xff08;CVE-2023-34051&#xff09;是一种绕过身份验证的情况&#xff0c;可能导致远程代码执行。本文将…

【备考网络工程师】如何备考2023年网络工程师之上午常见考点篇(上)

目录 写在前面涉及知识点一、香农定理与奈奎斯特定理问题1.1 香农定理1.2 尼奎斯特定理 二、E1与T1问题三、数据传输延迟问题3.1 对于电缆3.2 对于卫星 四、数字化技术PCM计算问题五、CSMA/CD以太帧最小帧长计算问题六、CSMA/CD考点汇总七、CSMA/CA考点汇总八、各协议注意事项总…

初步认识 Web Components 并实现一个按钮

目录 1.Web Components 基本概念 1.1 三个场景 1.2 是什么 2.使用 Custom Elements 实现一个按钮 2.1 概念介绍 2.1.1 Shadow DOM 2.1.2 Element.attachShadow() 2.1.3 在组件中 使用 Shadow DOM 基本步骤 2.1.4 attributeChangedCallback 2.1.5 get observedAttribu…

绝对路径与相对路径

目录 一、绝对路径 二、相对路径 三、举例 一、绝对路径 绝对路径是指从根目录开始的完整路径&#xff0c;包括所有父目录的路径&#xff0c;直到目标文件或者目录 所在的位置。 全文件名全路径文件名绝对路经完整的路径 例如:在windows系统中&#xff0c;绝对路径通常以…

nuxt脚手架

nuxt(vue)和next(react)都是服务端渲染的 安装 - NuxtJS | Nuxt.js 中文网 首先要安装 create-nuxt-app: npm install create-nuxt-app -g 然后&#xff1a;npx create-nuxt-app master 建议在cmd中操作&#xff0c;可以单选和多选 然后就各种单选和多选&#xff0c;多选按…