【论文阅读】Self-supervised Learning: Generative or Contrastive

Abstract

研究了在计算机视觉、自然语言处理和图形学习中用于表示的新的自监督学习方法。全面回顾了现有的实证方法,并根据其目的将其归纳为三大类:生成性、对比性和生成性对比(对抗性)。进一步收集了关于自我监督学习的相关理论分析,以对自我监督学习为什么有效提供更深入的思考。最后,简要讨论了自我监督学习的开放问题和未来方向。

Introduction

在这里插入图片描述
自监督学习可以看作无监督学习的一个分支,因为不涉及手工label,狭义地说,无监督学习专注于检测特定的数据模式,如聚类、社区发现或异常检测,而自监督学习旨在恢复,这仍然处于监督环境的范式中。
有监督学习是数据驱动型的,严重依赖昂贵的手工标记、虚假相关性和对抗性攻击。我们希望神经网络能用更少的标签、更少的样本和更少的试验来学习更多。自注意力话大量的注意力在数据有效性和生成能力。在2020年AAAI的受邀演讲中,图灵奖得主Yann LeCun将自我监督学习描述为“机器为任何观察到的部分预测其输入的任何部分”。
自监督学习的特征可以概括为:

  1. 通过使用半自动的过程从数据本身获得label
  2. 从数据的其他部分预测这一部分

在这里插入图片描述

上图是这个综述文章的分类,生成性、对比性和生成性对比(对抗性);以及每一个类别下的典型的方法。

自监督学习的动机

为了解决基本的OOD(泛化能力差,简单的多层感知器泛化能力非常差(总是假设分布外(OOD)样本呈线性关系))和生成的问题。
自我监督学习的成功最关键的一点是,它找到了一种方法来利用大数据时代可用的大量未标记数据。
自监督学习可以分为三大类:

  1. 生成式:训练一个encoder去编码输入x到明确的向量z,和一个解码器去从z重建x。(eg:the cloze test, graph generation)
  2. 对比式:训练一个encoder去编码输入到一个明确的向量z,去衡量相似性。(eg:mutual information maximizetion.instance discrimination)
  3. 生成对比式(对抗式):训练一个encoder-decoder去省城fakesamples 和一个鉴别器去区分真实样本和生成样本。(eg:GAN)

在这里插入图片描述
这三个类别不同在于架构和目标函数的不同。
不同点:

  1. 对于潜在分布z,在声称是和对比式方法中,z是明确的经常被应用于下游任务,而GAN中,z是隐式建模的。
  2. 对于鉴别器。这个生成的方式没有鉴别器,然而GAN和对比网络有。对比式的网络相对来说鉴别器有更少的参数。 (e.g., a multi-layer perceptron with 2-3 layers) than GAN (e.g., a standard ResNet [53])
    一张自监督学习综述的图
    在这里插入图片描述

生成式的自监督学习

AR

在计算机视觉中,PixelRNN和PixelCNN,总体思路是利用自回归访华逐像素的对图像进行建模。对于2D图像,自回归模型只能更具特定方向来分解改了,所以在CNN架构中采用了掩模滤波器。基于PixelCNN, WaveNet[130]——一种原始音频生成模型被提出。为了处理长期的时间依赖性,作者开发了扩展的因果卷积来改善接受野。此外,门控残差块和跳过连接被用来增强更好的表达能力。
自回归模型的优点是可以很好地对上下文依赖性进行建模。然而,AR模型的一个缺点是,每个位置的令牌只能从一个方向访问其上下文。

Flow-based Model

基于流的模型的目标是从数据中估计复杂的高维密度函数p(x)。

AE

灵活。AE由一个编码器网络h = f e n c ( x ) f_{enc}(x) fenc(x)和一个解码器网络x’ = f d e c ( x ) f_{dec}(x) fdec(x)(h)组成。AE的目标是使x和x’尽可能相似(如通过均方误差)。可以证明线性自编码器与PCA方法相对应。
除了基础的AE,还有CPM,Denoising AE Model,Variational AE Model。
在这里插入图片描述
VQ-VAE的体系结构。与VAE相比,原始的隐藏分布被量化的矢量字典所取代。此外,先前的分布被预先训练的PixelCNN取代,该PixelCNN对图像的分层特征进行建模。

Hybird Fenerative Models

包括结合AR和AE的模型、结合AE和Flow-based Model。

Pros and Cons

优点:不假设下游任务的情况下,重建原始图像分布的能力。现有的生成任务严重依赖生成式自监督学习。
缺点

  1. 生成子监督学习在一些分类情境下,相比于对比学习有很少的竞争力。因为对比学习的目标函数天然地符合分类学习的目标。
  2. 生成式模型逐点的特性使它有一些内在的缺点:敏感性和保守性分布,低级抽象的目标不适合一高级抽象目标的分类任务。
    作为一种相反的方法,生成对比式自我监督学习放弃了逐点目标。它转向更健壮的分布式匹配目标,并更好地处理数据流形中的高级抽象挑战。

对比自监督学习

分为两类:上下文-实例对比、实例-实例对比。

上下文-实例对比

注重于对局部特征和全局上下文语义的对比。
例如:Predict Relative Position
注重于学习局部部分之间的相对位置。全局的上下位作为一个隐式的需求。
在这里插入图片描述
Maximize Mutual Information
MI专注于学习局部部分和全局乡下问之间的直接的归属关系,局部位置之间的关系被忽略了。
在这里插入图片描述

实例-实例之间的对比

度量学习的一个重要重点是在提高负采样效率的同时执行硬正采样。它们可能在基于MI的模型的成功中发挥着更关键的作用。
作为替代,实例-实例对比学习抛弃了MI,直接研究不同样本的实例级局部表示之间的关系。对于广泛的分类任务,实例级表示比上下文级表示更为重要。

例如:Cluster Discrimination
Instance Discrimination(实例判别)
在这里插入图片描述
第一种是端到端的范式,有两个编码器,两个编码器都进行梯度更新,依赖于大的batchsize提供更多的负样本。第二个是有memory bank的方式,有一个编码器,只对这一个编码器进行梯度更新,负样本从memory bank中提取,每次都更新memory bank中随机位置的特征,特征一致性不好,每一个batchsize,模型都会更新,但是memory bank只更新一部分。正样本和负样本进行对比的时候,正样本是当前的encoder产生的,负样本不知道是什么时候的encoder产生的。第三个Moco使用动量编码器,在第一个基础上把右边的编码器改成动量编码器,并且采用队列形式的字典。把对比学习当作动态的字典查询问题。

在这里插入图片描述
SIMLR采用了多种数据增强和一个proj在最后加一个非线性层,获得了比Moco高的效果。
在这里插入图片描述

BYOL不用负样本,获得了很好的效果。

半监督自我训练的自我监督对比预训练

Chen等人[20]的SimCLR v2支持了上述结论,表明只有10%的原始ImageNet标签,通过联合预训练和自我训练,ResNet-50可以超过监督的。他们提出了一个三步框架:

  1. 像SimCLR v1一样进行自我监督的预训练,并进行一些小的架构修改和更深的ResNet.
  2. 仅使用1%或10%的原始ImageNet标签微调最后几层。
  3. 使用微调后的网络作为教师模型,在未标记的数据上产生标签,以训练较小的学生ResNet-50。知识蒸馏

优点和缺点

优点:对比学习没有解码器,因此对比学习是轻量级的,在下游鉴别任务中表现很好。
存在的问题

  1. 对比学习在NLP领域没有取得令人信服的结果。现在大多数在BERT上进行微调。。很少有算法被提出在预训练阶段应用对比学习。由于大多数语言理解任务都是分类的,因此对比语言预训练方法应该比目前的生成语言模型更好。
  2. 采样有效性。负抽样对于大多数对比学习是必须的,但这个过程通常是棘手的,有偏见的,耗时的。不清楚负样本在对比学习中的作用。
  3. 数据增强,数据增强能提高对比学习的性能。但它为什么以及如何起作用的理论仍然相当模糊。这阻碍了它在其他领域的应用,比如NLP和图学习,这些领域的数据是离散和抽象的。

生成对比学习

总之,对抗性方法吸收了生成法和对比法的优点,同时也存在一些缺点。在我们需要适应隐式分布的情况下,这是一个更好的选择。

使用完整输入

通过部分输入恢复

图像着色、图像修复、超分辨率

预训练语言模型

图学习

领域适应和多模态表示

优点和缺点

优点:生成-对比(对抗性)自监督学习在图像生成、转换和处理方面特别成功
缺点

  1. 在NLP和图领域应用受限。
  2. 容易坍塌
  3. 不是用于特征提取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows压缩包的MySQL安装方式

1.下载压缩包 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.35-winx64.zip 2.解压压缩包(建议将解压到非C盘,路径不要出现特殊符号) 3.在MySQL主目录下,创建my.ini空文件(先创建一个txt文件,进…

记一次 Redis 数据库迁移

笔者通过一个 Redis 数据库迁移的例子,介绍了迁移脚本的执行思路。 作者:马文斌,MySQL/Redis 爱好者~ 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文约 500 字,预计阅…

jmeter--3.使用提取器进行接口关联

目录 1. 正则表达式提取器 1.1 提取单个数据 1.2 名词解释 1.3 提取多个数据 2. 边界值提取器 2.2 名词解释 3. JSON提取器 3.1 Json语法 3.2 名词解释 3.3 如果有多组数据,同正则方式引用数据 1. 正则表达式提取器 示例数据:{"access_to…

flask框架基本使用

一、使用pycharm创建项目 1.创建项目 2.调整默认终端 3.打开虚拟终端 打开终端可以看出使用的是p1的虚拟机终端了 4.pyCharm小技巧 在flask种输入一个完整并且存在的函数名称或者类明, 然后 Alt 回车,pycharm可以自动导包,不用在手动在代…

Vue面试之组件通信的方式总结(下篇)

Vue面试之组件通信的方式总结 $refprovide&injectprovideinject EventBus事件总线vuex 最近在整理一些前端面试中经常被问到的问题,分为vue相关、react相关、js相关、react相关等等专题,可持续关注后续内容,会不断进行整理~ 在Vue框架中&…

利用Wireshark分析IP协议

实验.利用Wireshark分析IP协议 一.实验目的 1.掌握Wireshark软件简单的过滤语法 2.掌握IP数据报的组成格式 3.掌握IP分片的计算方法 4.学会利用Wireshark抓包分析IP协议 二.实验环境 1.Wireshark软件 2.Windows 计算机 三.实验预备知识 1.IP…

vcruntime140_1.dll无法继续执行代码怎么办?6个修复方法分享

找不到vcruntime1401.dll”。这个错误提示通常意味着我们的计算机缺少了一个重要的动态链接库文件。本文将介绍vcruntime1401.dll是什么文件、它的作用以及当电脑丢失该文件时可能产生的影响,并提供6个解决方法来解决这个问题。 一、vcruntime1401.dll是什么文件&a…

Pytorch基础:数据读取与预处理——调用PyTorch官方数据集

数据读取与预处理——调用PyTorch官方数据集 1. 从网络端下载 FashionMNIST 数据集到本地2. 数据集可视化 1. 从网络端下载 FashionMNIST 数据集到本地 (base) PS C:\Users\孙明阳> conda activate yang (yang) PS C:\Users\孙明阳> python Python 3.11.5 | packaged by…

RocketMQ源码阅读-Producer发消息

RocketMQ源码阅读-Producer发消息 1. 从单元测试入手2. 启动过程3. 同步消息发送过程4. 异步消息发送过程5. 小结 Producer是消息的生产者。 Producer和Consummer对Rocket来说都是Client,Server是NameServer。 客户端在源码中是一个单独的Model,目录为ro…

Nginx——基础配置

和大多数软件一样,Nginx也有自己的配置文件,但它又有很多与众不同的地方,本帖就来揭开Nginx基础配置的面纱。 1、Nginx指令和指令块 了解指令和指令块有助于大家了解配置的上下文,下面是一个配置模板示例: 在这个配…

JavaScript删除数组中指定元素的5种方法

文章目录 目录 文章目录 前言 一、数组是什么? 二、讲解数组 总结 前言 在JavaScript开发中,处理数组是一项非常常见的任务。有时候我们需要从数组中删除特定的元素,以便对数组进行进一步操作或者满足特定的需求。幸运的是,JavaS…

《BackTrader量化交易图解》第10章:Trade 交易操作

文章目录 10 Trade 交易操作10.1 量化回测分析流程10.2 Cerebro 类模块10.3 案例:Trade 交易10.4 实盘交易机器隐性规则10.5 Stake 交易数额和 Trade 交易执行价格 10 Trade 交易操作 10.1 量化回测分析流程 从本章开始讲解 BackTrader 的实盘操作。前面的章节讲过…

redis系列:01 数据类型及操作

redis的数据类型有哪些 string,list,set,sorted_set,hash 操作 sting: set name maliao get name exists name expire name 5 ttl name del name setex name 10 maliao 设置key和过期时间 setnx name maliao 当key不存在时才添加list: lpush letter a lpush le…

二极管选型怎么选?常用参数要熟练~

同学们大家好,今天我们继续学习杨欣的《电子设计从零开始》,这本书从基本原理出发,知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例,可以说是全面系统地介绍了电子设计所需的知识…

【LeetCode】206. 反转链表(简单)——代码随想录算法训练营Day01

题目链接:206. 反转链表 题目描述 206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入&#xff1…

公司寄快递教程

公司寄快递用哪个更划算?这个问题有最优解吗?恐怕没有......很简单,回答这个问题之前,我们先来看看公司寄快递的背景。 一、大背景 所谓的大背景是由国内快递行业的发展现状所决定的。众所周知,这十年来,国…

Centos安装Datax

Centos7安装DataX 一、DataX简介二、DataX的数据源支持三、安装DataX1、下载DataX2、解压3、检验是否安装成功4、使用 四、实践案例1、环境信息2、编写同步的配置文件(user_info.json)3、执行同步4、验证同步结果 一、DataX简介 DataX 是阿里云 DataWorks数据集成 的开源版本&a…

Minitab的单因子方差分析的结果

单因子方差分析概述 当有一个类别因子和一个连续响应并且想要确定两个或多个组的总体均值是否存在差异时,可使用 单因子方差分析。如果经检验,发现至少有一组存在差异,请使用单因子方差分析中的比较对话框来标识存在显著差异的组对。 例如&…

C++ 之LeetCode刷题记录(九)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅,多学多练,尽力而为。 先易后难,先刷简单的。 58. 最后一个单词的长度 给你一个字符串 s,由若干…

代码随想录第第五十七天—回文子串,最长回文子序列

leetcode 647. 回文子串 题目链接:回文子串 版本一:动态规划 dp数组及下标的含义 dp[i][j]:区间范围[i, j] (左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。确定递推公式…