当前位置: 首页 > news >正文

【论文阅读笔记】 Representation Learning with Contrastive Predictive Coding

Representation Learning with Contrastive Predictive Coding

摘要

  • 这段文字是论文的摘要,作者讨论了监督学习在许多应用中取得的巨大进展,然而无监督学习并没有得到如此广泛的应用,仍然是人工智能中一个重要且具有挑战性的任务。在这项工作中,作者提出了一种通用的无监督学习方法,用于从高维数据中提取有用的表示,被称为“对比预测编码”(Contrastive Predictive Coding)。

  • 该模型的关键思想是通过使用强大的自回归模型在潜在空间中预测未来,从而学习这些表示。作者使用了一种概率对比损失,通过负采样使潜在空间捕获对预测未来样本最有用的信息。而大多数先前的工作都集中在评估特定模态的表示上,作者展示了他们的方法能够学习到在四个不同领域取得强大性能的有用表示,包括语音、图像、文本以及在3D环境中的强化学习。

Introduction

  • 这段文字的主要思想是,通过使用分层可微模型,我们可以在一个端到端的框架中从标记数据中学习到高级别的表示,而无需手动指定特征。这种方法在现实世界的多个应用中取得了显著的进展,但仍然面临一些挑战,例如数据效率、鲁棒性和泛化能力等方面的问题。这表明尽管已经取得了成功,但在人工智能领域仍然需要进一步的研究和创新,以克服这些挑战并推动领域的发展

  • 为了更好地适应各种任务,表示学习需要通过无监督学习获得一些不那么专门化的特征。这可以提高表示的泛化能力,使其在不同领域和任务中都能表现良好。通过无监督学习,模型可以更好地捕捉数据中的共性和潜在结构,从而产生更具通用性的特征表示。这对于构建更鲁棒和通用的人工智能系统至关重要

  • 这段文字强调了尽管无监督学习的重要性,但迄今为止尚未出现类似于监督学习的突破:从原始观测中建模高层次表示仍然是困难的。此外,什么是理想的表示形式并不总是明确的,以及是否可能在没有额外监督或专门针对特定数据模态的情况下学习这样的表示形式也是不确定的。

  • 尽管监督学习取得了显著的进展,但无监督学习在建模高层次表示方面仍然面临挑战。从原始观测中学习到有意义且可传递的表示形式是一个复杂的问题,且尚未实现类似于监督学习领域的显著突破。此外,关于理想的表示形式是什么的问题也没有清晰的答案,以及是否可能在没有额外监督或专门化到特定数据模态的情况下学习这样的表示形式仍然是未解之谜。

  • 这段文字介绍了一种常见的无监督学习策略,即预测未来、缺失或上下文信息。这种预测编码的思想[5, 6]是信号处理中用于数据压缩的最古老的技术之一。在神经科学中,预测编码理论表明大脑在各个抽象层次上预测观察结果[7, 8]。最近的无监督学习工作成功地利用了这些思想,通过预测相邻单词来学习单词表示[9]。对于图像,预测从灰度图像中的颜色或图像块的相对位置也被证明是有用的[10, 11]。作者提出的假设是,这些方法在一定程度上是成功的,部分原因是我们预测相关值的上下文往往在条件上依赖于相同的共享高级潜在信息。通过将这视为一个预测问题,我们自动地推断出这些特征对于表示学习是感兴趣的。

  • 在这篇论文中,我们提出了以下方法:首先,我们将高维数据压缩成一个更紧凑的潜在嵌入空间,这样条件预测就更容易建模。其次,我们在这个潜在空间中使用强大的自回归模型,以预测未来多个时间步。最后,我们依赖于噪声对比估计[12]作为损失函数,类似于在自然语言模型中学习单词嵌入所使用的方式,使整个模型可以端到端地进行训练。我们将得到的模型 Contrastive Predictive Coding (CPC) 应用于广泛不同的数据模态,包括图像、语音、自然语言和强化学习,并展示了相同的机制在每个领域学到了有趣的高层信息,胜过了其他方法

2 Contrastive Predicting Coding

  • 首先通过提出动机和解释方法的直觉来引导读者。接下来,介绍了 Contrastive Predictive Coding (CPC) 的架构。之后,解释了基于噪声对比估计的损失函数。最后,对与 CPC 相关的研究进行了讨论。

2.1 Motivation and Intuitions

  • 这段文字解释了论文模型背后的主要直觉。该模型的主要目的是学习表示,这些表示编码了(高维)信号不同部分之间的共享信息。同时,它舍弃了更本地的低级信息和噪声。在时间序列和高维建模中,利用下一步预测的方法可以利用信号的局部平滑性。然而,当预测更远的未来时,共享信息的量变得更低,模型需要推断更全局的结构。这些跨足多个时间步的“慢特征”[13]通常更加有趣(例如语音中的音素和语调,图像中的对象,或书籍中的故事线)。

简而言之,该模型的直觉是通过学习对信号不同部分之间的共享信息进行编码,从而捕获信号中的高级、全局结构。这使得模型能够在处理时间序列和高维信号时更好地理解慢变化的特征,从而提高其对复杂数据的表达能力

  • 这段文字探讨了在预测高维数据时面临的挑战之一。作者指出,对于高维数据,像均方误差和交叉熵这样的单模损失并不是很有用。通常需要强大的条件生成模型来重构数据中的每一个细节。然而,这些模型在计算上很昂贵,并且浪费计算能力来建模数据 x 中的复杂关系,通常忽略上下文 c。例如,图像可能包含数千位的信息,而高级潜在变量(例如类别标签)包含的信息要少得多(对于 1,024 个类别只有 10 位信息)。这表明直接建模 p(x|c) 可能不是在提取 x 和 c 之间的共享信息方面最优的方法。在预测未来信息时,作者相反地将目标 x(未来)和上下文 c(现在)编码成紧凑的分布式向量表示(通过非线性学习映射),以最大程度地保留原始信号 x 和 c 之间的互信息,定义为

2.2 Contrastive Predictive Coding

  • 非线性编码器 (Non-linear Encoder - genc): 首先,一个非线性编码器 genc 将输入序列的观测 xt 映射到潜在表示序列 zt = genc(xt)。这里的潜在表示可能具有较低的时间分辨率。

  • 自回归模型 (Autoregressive Model - gar): 接下来,一个自回归模型 gar 对潜在表示序列 z≤t 进行总结,并生成上下文潜在表示 ct = gar(z≤t)。这个上下文表示将包含关于序列过去的信息,为模型提供了一种处理时间动态的方式

  • 自回归模型 (Autoregressive Model - gar): 接下来,一个自回归模型 gar 对潜在表示序列 z≤t 进行总结,并生成上下文潜在表示 ct = gar(z≤t)。这个上下文表示将包含关于序列过去的信息,为模型提供了一种处理时间动态的方式
    在这里插入图片描述

  • 这段文字表明,与其直接使用生成模型 pk(xt+k|ct) 预测未来观测 xt+k,作者选择建模一个密度比率,该密度比率保留了 xt+k 和 ct 之间的互信息(参见方程1)。具体细节将在接下来的子节中进一步讨论。

  • 这个选择的思路是通过建模密度比率来间接地捕捉 xt+k 和 ct 之间的关系,而不是直接对未来观测进行生成性建模。密度比率的建模可能有助于更有效地学习共享信息,以及在无监督学习任务中更好地推断序列的结构。接下来的子节可能会提供关于如何计算密度比率以及为什么这是一种有效的方法的更多详细信息

  • 通过引入密度比率并且使用编码器推断潜在表示,避免模型对高维数据分布直接进行建模的问题。这样的方法可以使得模型利用采样技术

  • 这段文字说明在提出的模型中,zt 和 ct 中的任何一个都可以用作下游任务的表示。如果来自过去的额外上下文有用,可以使用自回归模型输出 ct。一个例子是语音识别,其中 zt 的感受野可能不包含足够的信息来捕捉语音内容。在其他情况下,如果不需要额外的上下文,可能使用 zt 会更好。如果下游任务需要整个序列的一个表示,例如图像分类,可以在所有位置上对 zt 或 ct 的表示进行池化。

  • 最后,注意在提出的框架中可以使用任何类型的编码器和自回归模型。为了简化,作者选择了标准的架构,例如用于编码器的带有 ResNet 块的步幅卷积层,以及用于自回归模型的 GRUs [17]。更近期的自回归建模进展,如带有掩码卷积结构的架构[18, 19]或自注意力网络[20],可能有助于进一步提高结果。这强调了该框架的灵活性,可以根据任务需求选择适当的编码器和自回归模型结构。

2.3 InfoNCE Loss and Mutual Information Estimation

  • 编码器和自回归模型都经过联合训练,以最大程度地优化基于噪声对比估计(NCE)的损失,我们将其称为 InfoNCE。给定一个包含来自 p(xt+k|ct) 的一个正样本和 N-1 个来自“提议”分布 p(xt+k) 的负样本的 N 个随机样本的集合 X = {x1, . . . xN},我们进行优化:

  • 在这个优化过程中,目标是最大化正样本的概率,同时最小化负样本的概率。这种训练方法基于噪声对比估计的理念,通过引入负样本,模型被迫学习区分正样本和负样本,从而更好地捕捉数据中的结构和共享信息

  • Equation 4中的损失是分类正样本的交叉熵,其中 fk_p_X 是模型的预测。让我们将这个损失的最优概率表示为 p(d = i|X, ct),其中 [d = i] 是指示符,表示样本 xi 是“正样本”。样本 xi 是从条件分布 p(xt+k|ct) 而不是提议分布 p(xt+k) 中抽取的概率可以推导如下:

2.4 Related Work

  • CPC(Contrastive Predictive Coding)是一种新的方法,它将预测未来观测(预测编码)与概率对比损失(Equation 4)结合起来。这使得我们能够提取慢特征,即在长时间范围内最大化观测之间的互信息。对比损失和预测编码以前分别以不同的方式被使用,我们现在将讨论它们的用途。

  • 预测编码 (Predictive Coding): 预测编码是一种思想,它建议通过预测输入数据的未来状态来学习有关数据的表示。这种方法基于对观测数据的未来状态进行建模,从而使模型能够捕捉数据中的关系和结构。在 CPC 中,预测编码的思想被应用于学习有用的表示。

  • 概率对比损失 (Probabilistic Contrastive Loss): 概率对比损失是一种损失函数,用于训练模型以区分正样本和负样本。在 CPC 中,作者使用概率对比损失来优化模型,以使模型更好地理解观测数据中的共享信息。

  • 将这两种思想结合在一起,CPC 通过预测编码的方式学习潜在表示,并通过概率对比损失进行优化,从而使模型能够在长时间范围内捕捉数据的慢特征。这种方法的结合提供了一种有效的方式来学习有用的表示,尤其是在无监督学习任务中。

  • 对比损失函数在过去被许多作者广泛使用。例如,[21, 22, 23] 提出的技术是基于三元损失,采用最大间隔方法来区分正例和负例。更近期的工作包括 Time Contrastive Networks [24],该方法提出最小化同一场景多个视点的嵌入之间的距离,同时最大化从不同时间步提取的嵌入之间的距离。在 Time Contrastive Learning [25] 中,对比损失用于预测多变量时间序列的段标识作为提取特征和执行非线性 ICA 的一种方式。

  • 这些先前的工作表明,对比损失函数是一种强大的方法,用于学习数据中的表示并区分正例和负例。不同的对比损失函数可以在不同的任务和数据领域中发挥作用,这也突显了其灵活性和通用性。在 CPC 中,对比损失被用于预测未来观测,以最大化共享信息的提取,从而使模型更好地理解数据中的结构

4 Conclusion

  • 在这篇论文中,我们介绍了Contrastive Predictive Coding(CPC),这是一个用于提取紧凑潜在表示以编码对未来观测的预测的框架。CPC结合了自回归建模和噪声对比估计,结合了预测编码的直觉,以无监督的方式学习抽象表示。我们在多个领域进行了这些表示的测试:音频、图像、自然语言和强化学习,并在作为独立特征使用时取得了强大或最新技术水平的性能。训练模型的简单性和低计算需求,以及在与主要损失结合使用时在具有挑战性的强化学习领域取得的令人鼓舞的结果,都是朝着通用适用于更多数据模态的有用无监督学习的发展的积极进展。

相关文章:

【论文阅读笔记】 Representation Learning with Contrastive Predictive Coding

Representation Learning with Contrastive Predictive Coding 摘要 这段文字是论文的摘要,作者讨论了监督学习在许多应用中取得的巨大进展,然而无监督学习并没有得到如此广泛的应用,仍然是人工智能中一个重要且具有挑战性的任务。在这项工作…...

CNN——LeNet

1.LeNet概述 LeNet是Yann LeCun于1988年提出的用于手写体数字识别的网络结构,它是最早发布的卷积神经网络之一,可以说LeNet是深度CNN网络的基石。 当时,LeNet取得了与支持向量机(support vector machines)性能相…...

分类模型评估方法

1.数据集划分 1.1 为什么要划分数据集? 思考:我们有以下场景: 将所有的数据都作为训练数据,训练出一个模型直接上线预测 每当得到一个新的数据,则计算新数据到训练数据的距离,预测得到新数据的类别 存在问题&…...

RabbitMQ高级

文章目录 一.消息可靠性1.生产者消息确认 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如何解决数百万消息堆积,无法及时…...

SonarQube 漏洞扫描

SonarQube 漏洞扫描 一、部署服务 1.1 docker方式部署 #安装docker curl -L download.beyourself.org.cn/shell-project/os/get-docker-latest.sh | sh yum install -y docker-compose #进去输入:set paste可以保证不穿行 [rootlocalhost sonar]# vim docker-compose.yml v…...

Web前端篇——ElementUI的Backtop 不显示问题

在使用ElementUI的Backtop回到顶部组件时&#xff0c;单独复制这一行代码 <el-backtop :right"100" :bottom"100" /> 发现页面在向下滚动时&#xff0c;并未出现Backtop组件。 可从以下3个方向进行分析&#xff1a; 指定target属性&#xff0c;且…...

MySQL 管理工具

1、MySQL 管理 系统数据库 a. mysql 命令 语法&#xff1a;mysql [options] [database] -u,--username 指定用户名-p,--password[name] 指定密码-h, --hostname 指定服务器IP或域名-P, --portport 指定连接端-e,--executename 执行SQL语句并退出 mysql -h192.168.200.202 -…...

LeetCode 33 搜索旋转排序数组

题目描述 搜索旋转排序数组 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], ..., num…...

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测 目录 分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于SVM-RFE-LSTM的特征…...

JetBrains Rider使用总结

简介&#xff1a; JetBrains Rider 诞生于2016年&#xff0c;一款适配于游戏开发人员&#xff0c;是JetBrains旗下一款非常年轻的跨平台 .NET IDE。目前支持包括.NET 桌面应用、服务和库、Unity 和 Unreal Engine 游戏、Xamarin 、ASP.NET 和 ASP.NET Core web 等多种应用程序…...

C# Emgu.CV4.8.0读取rtsp流录制mp4可分段保存

【官方框架地址】 https://github.com/emgucv/emgucv 【算法介绍】 EMGU CV&#xff08;Emgu Computer Vision&#xff09;是一个开源的、基于.NET框架的计算机视觉库&#xff0c;它提供了对OpenCV&#xff08;开源计算机视觉库&#xff09;的封装。EMGU CV使得在.NET应用程序…...

java碳排放数据信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web碳排放数据信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环 境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为…...

K8S陈述式资源管理(1)

命令行: kubectl命令行工具 优点: 90%以上的场景都可以满足对资源的增&#xff0c;删&#xff0c;查比较方便&#xff0c;对改不是很友好 缺点:命令比较冗长&#xff0c;复杂&#xff0c;难记声明式 声明式&#xff1a;K8S当中的yaml文件来实现资源管理 GUI&#xff1a;图形…...

STL map容器与pair类模板(解决扫雷问题)

CSTL之Map容器 - 数据结构教程 - C语言网 (dotcpp.com)https://www.dotcpp.com/course/118CSTL之Pair类模板 - 数据结构教程 - C语言网 (dotcpp.com)https://www.dotcpp.com/course/119 刷到一个扫雷的题目&#xff0c;之前没有玩怎么过扫雷&#xff0c;于是我就去玩了玩…...

【React系列】Portals、Fragment

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) Portals 某些情况下&#xff0c;我们希望渲染的内容独立于父组件&#xff0c;甚至是独立于当前挂载到的DOM元素中&am…...

ByteTrack算法流程的简单示例

ByteTrack ByteTrack算法是将t帧检测出来的检测框集合 D t {\mathcal{D}_{t}} Dt​ 和t-1帧预测轨迹集合 T ~ t − 1 {\tilde{T}_{t-1}} T~t−1​ 进行匹配关联得到t帧的轨迹集合 T t {T_{t}} Tt​。 首先使用检测器检测t帧的图像得到检测框集合 D t {\mathcal{D}_{t}} …...

免费的GPT4来了,你还不知道吗?

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…...

win10报错“zlib.dll文件丢失,软件无法启动”,修复方法,亲测有效

zlib.dll文件是一个由Zlib创建的动态链接库文件&#xff0c;它是用于Windows操作系统的数据压缩和解压缩的软件。Zlib是一个广泛使用的软件库&#xff0c;广泛应用在许多不同类型的软件中&#xff0c;包括游戏、浏览器和操作系统。 zlib.dll的主要作用是提供数据压缩和解压缩的…...

MFC中如何使用CListCtrl可以编辑,并添加鼠标右键及双击事件。

要在MFC中使用CListCtrl来实现编辑功能&#xff0c;可以按照以下步骤进行操作&#xff1a; 在对话框资源中添加CListCtrl控件&#xff0c;并设置合适的属性。在对话框类的头文件中添加成员变量来管理CListCtrl控件&#xff0c;例如&#xff1a; CListCtrl m_listCtrl; 3. 在O…...

[每周一更]-(第81期):PS抠图流程(扭扭曲曲的身份证修正)

应朋友之急&#xff0c;整理下思路&#xff0c;分享一下~~ 分两步走&#xff1a;先用磁性套索工具圈出要处理的图&#xff1b;然后使用透视剪裁工具&#xff0c;将扭曲的图片拉平即可&#xff1b;(macbook pro) 做事有规则&#xff0c;才能更高效;用什么工具&#xff0c;先列举…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...