[论文笔记]Representation Learning with Contrastive Predictive Coding

引言

今天带来论文 Representation Learning with Contrastive Predictive Coding的笔记。

提出了一种通用的无监督学习方法从高维数据中提取有用表示,称为对比预测编码(Contrastive Predictive Coding,CPC)。使用了一种概率对比损失, 通过使用负采样使模型捕获潜在空间中的有用信息。

为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。

1. 总体介绍

从带标签数据中以端到端的方式学习高层表示是AI领域成功的应用之一,但仍存在许多挑战,例如数据效率、鲁棒性或泛化能力。无监督学习是通往鲁棒且通用表示学习的基石。

尽管无监督学习很重要,但它尚未取得类似于监督学习的突破。无监督学习中最常见的策略之一是预测未来的、缺失的或上下文信息。最近无监督学习的研究成果通过预测相邻词来学习单词表示。我们假设这些方法之所以有效,部分原因是预测相关值的上下文通常有条件依赖于相同的共享高级隐含信息。通过将此视为一个预测问题,我们自动推断出与表示学习相关的这些特征。

本篇工作提出以下三点:

  1. 将高维数据压缩到一个更紧凑的潜在嵌入空间中,在此空间中,条件预测更容易建模。
  2. 在这个潜在空间中使用强大的自回归模型来进行多步预测。
  3. 借鉴噪声对比估计来构建损失函数,与学习词嵌入的方法类似,使整个模型能端到端地训练。

得到的模型,CPC,可以应用于图像、语言、NLP等多种不同的数据模态。

2. 对比预测编码

2.1 动机和直觉

我们模型背后的主要直觉是学习表示,这些表示编码了高维信号不同部分之间潜在的共享信息。同时,它丢弃了更局部的低级信息和噪声。在时间序列和高维建模中,使用下一步预测的方法利用了信号的局部平滑性。当预测更远的未来时,共享信息的量会变得更低,模型需要推断更多全局结构。

预测高维数据的挑战之一是单峰损失函数,比如均方误差和交叉熵,并不十分有用,且通常需要强大的条件生成模型来重建数据中的每一个细节,这些模型的计算量很大,且在建模数据 x x x中的复杂关系时常常浪费能力,同时经常忽略上下文 c c c。例如,图像可能包含成千上万的比特信息,而高层隐变量(例如类别标签)所包含的信息则少得多(1024个类别只需10比特)。这表明直接建模 p ( x ∣ c ) p(x|c) p(xc)可能并不是提取 x x x c c c之间共享信息的最佳选择。

在预测未来信息时,我们将目标 x x x(未来)和上下文 c c c(现在)编码为紧凑的分布式向量表示,以最大程度地保留原始信号 x x x c c c 的互信息,定义为:
I ( x ; c ) = ∑ x , c p ( x , c ) log ⁡ p ( x ∣ c ) p ( x ) (1) I(x;c) = \sum_{x,c} p(x,c) \log \frac{p(x|c)}{p(x)} \tag 1 I(x;c)=x,cp(x,c)logp(x)p(xc)(1)
通过最大化编码表示之间的互信息,我们提取输入信号共有的隐含变量。

这个公式怎么来的,通过互信息定义可以写成:
I ( x ; c ) = ∑ x , c p ( x , c ) log ⁡ p ( x , c ) p ( x ) p ( c ) = ∑ x , c p ( x , c ) log ⁡ p ( x ∣ c ) p ( c ) p ( x ) p ( c ) I(x;c) = \sum_{x,c} p(x,c) \log \frac{p(x,c)}{p(x)p(c)} =\sum_{x,c} p(x,c) \log \frac{p(x|c)p(c)}{p(x)p(c)} I(x;c)=x,cp(x,c)logp(x)p(c)p(x,c)=x,cp(x,c)logp(x)p(c)p(xc)p(c)
消掉 p ( c ) p(c) p(c)即得到了公式(1)。

2.2 对比预测编码

image-20241228144750731

上图展示了对比预测编码模型的架构。首先,一个非线性编码器 g e n c g_{enc} genc将输入观测序列 x t x_t xt映射成一个潜在表示序列 z t = g e n c ( x t ) z_t=g_{enc}(x_t) zt=genc(xt)。接下来,一个自回归模型 g a r g_{ar} gar对潜在空间中的所有 z ≤ t z_{\leq t} zt进行总结,并生成一个上下文潜在表示 c t = g a r ( z ≤ t ) c_t=g_{ar}(z_{\leq t}) ct=gar(zt)

这里不直接用生成模型 p k ( x t + k ∣ c t ) p_k(x_{t+k}|c_t) pk(xt+kct)来预测未来的观测结果 x t + k x_{t+k} xt+k。相反,对密度比(density ratio)进行建模,该密度比保留了 x t + k x_{t+k} xt+k c t c_t ct之间的互信息(公式(1)),如下所示:
f k ( x t + k , c t ) ∝ p ( x t + k ∣ c t ) p ( x t + k ) (2) f_k(x_{t+k},c_t) \propto \frac{p(x_{t+k}|c_t)}{p(x_{t+k})} \tag 2 fk(xt+k,ct)p(xt+k)p(xt+kct)(2)
其中 ∝ \propto 表示成比例于,即乘以一个常数。密度比 f f f可以是非归一化的(不需要积分到1)。这里我们使用一个简单的对数双线性模型:
f k ( x t + 1 , c t ) = exp ⁡ ( z t + k T W k c t ) (3) f_k(x_{t+1},c_t) = \exp(z_{t+k}^T W_k c_t) \tag 3 fk(xt+1,ct)=exp(zt+kTWkct)(3)
也可以使用非线性网络。

通过使用密度比 f ( x t + k , c t ) f(x_{t+k},c_t) f(xt+k,ct)并使用编码器推断 z t + k z_{t+k} zt+k,减轻了模型对高维分布 x t x_t xt的建模负担。尽管我们无法直接评估 p ( x ) p(x) p(x) p ( x ∣ c ) p(x|c) p(xc),但我们可以使用来自这些分布的样本,从而允许我们使用基于将目标样本与随机采样的负样本进行比较的计数,例如噪声对比估计和重要性采样。

在提出的模型中, z t z_t zt c t c_t ct都可以作为下游任务的表示。如果需要来自过去的额外上下文,则可以使用自回归模型输出 c t c_t ct,比如语音识别,其中 z t z_t zt的感受野可能不足以捕获语音内容。在其他情况下,如果不需要额外的上下文, z t z_t zt可能更合适。如果下游任务需要对整个序列进行表示,比如分类任务,可以将 z t z_t zt c t c_t ct的表示在所有位置上进行池化。

任务类型的编码器和自回归模型都可以在本文提出的框架中使用。

2.3 InfoNCE损失和互信息估计

编码器和自回归模型都经过训练,以共同优化基于NCE的损失函数,我们将其称为InfoNCE。

给定一个包含 N N N个随机样本的集合 X = { x 1 , ⋯ , x N } X=\{x_1,\cdots,x_N\} X={x1,,xN},其中包含一个来自 p ( x t + k ∣ c t ) p(x_{t+k}|c_t) p(xt+kct)的正样本和 N − 1 N-1 N1个来自提议(proposal)分布 p ( x t + k ) p(x_{t+k}) p(xt+k)的负样本。我们希望使公式(2)的结果最大,可以写出对应的交叉熵损失如下:
L N = − ∑ X [ p ( x , c ) log ⁡ f k ( x t + k , c t ) ∑ x j ∈ X f k ( x j , c t ) ] = − E X [ log ⁡ f k ( x t + k , c t ) ∑ x j ∈ X f k ( x j , c t ) ] \begin{aligned} \mathcal L_\text{N} &= -\sum_X \left[ p(x,c) \log \frac{f_k(x_{t+k},c_t)}{\sum_{x_j \in X} f_k(x_j,c_t) } \right] \\ &=-\Bbb E_X \left[ \log \frac{f_k(x_{t+k},c_t)}{\sum_{x_j \in X} f_k(x_j,c_t) }\right] \end{aligned} LN=X[p(x,c)logxjXfk(xj,ct)fk(xt+k,ct)]=EX[logxjXfk(xj,ct)fk(xt+k,ct)]
优化此损失将导致 f k ( x t + k , c t ) f_k(x_{t+k},c_t) fk(xt+k,ct)估计公式(2)中的密度比。下面给出证明。

公式(4)中的损失是将正样本正确分类的交叉熵损失,其中 f k ∑ X f k \frac{f_k}{\sum_X f_k} Xfkfk是模型的预测结果。将此损失的最佳概率记为 p ( d = i ∣ X , c t ) p(d=i|X,c_t) p(d=iX,ct),其中 [ d = i ] [d=i] [d=i]表示样本 x i x_i xi是正样本。从条件分布 p ( x t + k ∣ c t ) p(x_{t+k}|c_t) p(xt+kct)而不是提议分布 p ( x t + k ) p(x_{t+k}) p(xt+k)中抽取样本 x i x_i xi的概率可以推导如下:
p ( d = i ∣ X , c t ) = p ( x i ∣ c t ) = p ( x i ∣ c t ) ∏ l ≠ i p ( x l ) ∑ j = 1 N p ( x j ∣ c t ) ∏ l ≠ j p ( x l ) = p ( x i ∣ c t ) p ( x i ) p ( x i ) ∏ l ≠ i p ( x l ) ∑ j = 1 N p ( x j ∣ c t ) p ( x j ) p ( x j ) ∏ l ≠ j p ( x l ) = p ( x i ∣ c t ) p ( x i ) p ( X ) ∑ j = 1 N p ( x j ∣ c t ) p ( x j ) p ( X ) = p ( x i ∣ c t ) p ( x i ) ∑ j = 1 N p ( x j ∣ c t ) p ( x j ) (5) \begin{aligned} p(d=i|X,c_t) &= p(x_i|c_t) \\ &= \frac{ p(x_i|c_t)\prod_{l \neq i} p(x_l) }{\sum_{j=1}^N p(x_j|c_t) \prod_{l \neq j} p(x_l) } \\ &= \frac{ \frac{p(x_i|c_t)}{p(x_i)} p(x_i) \prod_{l \neq i} p(x_l) }{\sum_{j=1}^N \frac{p(x_j|c_t)}{p(x_j)} p(x_j) \prod_{l \neq j} p(x_l) } \\ &= \frac{ \frac{p(x_i|c_t)}{p(x_i)} p(X) }{\sum_{j=1}^N \frac{p(x_j|c_t)}{p(x_j)} p(X) } \\ &= \frac{ \frac{p(x_i|c_t)}{p(x_i)}}{\sum_{j=1}^N \frac{p(x_j|c_t)}{p(x_j)}} \\ \end{aligned} \tag 5 p(d=iX,ct)=p(xict)=j=1Np(xjct)l=jp(xl)p(xict)l=ip(xl)=j=1Np(xj)p(xjct)p(xj)l=jp(xl)p(xi)p(xict)p(xi)l=ip(xl)=j=1Np(xj)p(xjct)p(X)p(xi)p(xict)p(X)=j=1Np(xj)p(xjct)p(xi)p(xict)(5)
来解释下这个式子,这里假设 x i x_i xi是正样本,因此是从 p ( x t + k ∣ c t ) p(x_{t+k}|c_t) p(xt+kct)采样出来的,而其他 l ≠ i l\neq i l=i是从 p ( x t + k ) p(x_{t+k}) p(xt+k)所采样出来的。这个式子表示给定上下文 c t c_t ct和数据 X X X x i x_i xi是正样本的概率是多少。

我们看上式中第二个等式,分子表示 x i x_i xi是正样本的概率乘以其他 x l x_l xl( l ≠ i l\neq i l=i)是负样本的概率;分母表示正样本可能为 X X X中任何一个样本的概率之和。

我们第三个式子是构建整个样本的联合概率分布 p ( X ) p(X) p(X),它是一个常量。我们可以把它约掉得到最后一个等式。

可以发现分子和分母都简化为公式(2)中的密度比。公式(4)中 f ( x t + k , c t ) f(x_{t+k},c_t) f(xt+k,ct)的最优值与 p ( x t + k ∣ c t ) p ( x t + k ) \frac{p(x_{t+k}|c_t)}{p(x_{t+k})} p(xt+k)p(xt+kct)成正比,与负样本的数量 N − 1 N-1 N1的选择无关。

我们将这个最优值代回公式(4)并将 X X X分割为正样本和负样本 X neg X_\text{neg} Xneg,得到:
L N opt = − E X log ⁡ [ p ( x t + k ∣ c t ) p ( x t + k ) p ( x t + k ∣ c t ) p ( x t + k ) + ∑ x j ∈ X neg p ( x j ∣ c t ) p ( x j ) ] = E X log ⁡ [ 1 + p ( x t + k ) p ( x t + k ∣ c t ) ∑ x j ∈ X neg p ( x j ∣ c t ) p ( x j ) ] ≈ E X log ⁡ [ 1 + p ( x t + k ) p ( x t + k ∣ c t ) ( N − 1 ) ] = E X log ⁡ [ p ( x t + k ∣ c t ) + ( N − 1 ) p ( x t + k ) p ( x t + k ∣ c t ) ] ≥ E X log ⁡ [ p ( x t + k ) p ( x t + k ∣ c t ) N ] = E X log ⁡ [ p ( x t + k ) p ( x t + k ∣ c t ) ] + log ⁡ N = − I ( x t + k , c t ) + log ⁡ ( N ) \begin{aligned} \mathcal L_\text N^\text{opt} &= -\Bbb E_X \log \left[ \frac{\frac{p(x_{t+k}|c_t)}{p(x_{t+k})}}{\frac{p(x_{t+k}|c_t)}{p(x_{t+k})} + \sum_{x_j \in X_\text{neg}}\frac{p(x_j|c_t)}{p(x_j)} } \right] \\ &= \Bbb E_X \log \left[ 1 + \frac{p(x_{t+k})}{p(x_{t+k}|c_t)} \sum_{x_j \in X_\text{neg}}\frac{p(x_j|c_t)}{p(x_j)}\right] \\ &\approx \Bbb E_X \log \left[ 1 + \frac{p(x_{t+k})}{p(x_{t+k}|c_t)} (N-1) \right] \\ &= \Bbb E_X \log \left[ \frac{p(x_{t+k}|c_t) + (N-1)p(x_{t+k})}{p(x_{t+k}|c_t)} \right] \\ &\geq \Bbb E_X \log \left[ \frac{p(x_{t+k})}{p(x_{t+k}|c_t)} N\right] \\ &= \Bbb E_X \log \left[ \frac{p(x_{t+k})}{p(x_{t+k}|c_t)} \right] + \log N \\ &= -I(x_{t+k},c_t) + \log (N) \end{aligned} LNopt=EXlog p(xt+k)p(xt+kct)+xjXnegp(xj)p(xjct)p(xt+k)p(xt+kct) =EXlog 1+p(xt+kct)p(xt+k)xjXnegp(xj)p(xjct) EXlog[1+p(xt+kct)p(xt+k)(N1)]=EXlog[p(xt+kct)p(xt+kct)+(N1)p(xt+k)]EXlog[p(xt+kct)p(xt+k)N]=EXlog[p(xt+kct)p(xt+k)]+logN=I(xt+k,ct)+log(N)
因此 I ( x t + k , c t ) ≥ log ⁡ ( N ) − L N opt I(x_{t+k},c_t) \geq \log (N) -\mathcal L_\text N^\text{opt} I(xt+k,ct)log(N)LNopt。我们通过这种方式评估 c t c_t ct x t + k x_{t+k} xt+k之间的互信息,最小化InfoNCE损失 L N \mathcal L_\text N LN最大化了互信息的下界,随着 N N N的增大,它也变得更加紧密。上式是怎么来的,讲一下个人的浅见,如有不对,欢迎指出。

第三个等式(约等于)是怎么来的,假设 p ( x j ∣ c t ) ≈ p ( x j ) p(x_j|c_t) \approx p(x_j) p(xjct)p(xj)

第五个等式因为 p ( x t + k ∣ c t ) ≥ p ( x t + k ) p(x_{t+k}|c_t) \geq p(x_{t+k}) p(xt+kct)p(xt+k)

总结

⭐ InfoNCE中的Info指的是互信息,目标是在学习过程中最大化互信息。InfoNCE在给定一个正样本和一组互样本的情况下,最大化正样本和一组负样本得分之间的对比,让模型能更好的学习数据的表示。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka 消费者专题

目录 消费者消费者组消费方式消费规则独立消费主题代码示例(极简)代码示例(独立消费分区) offset自动提交代码示例(自动提交)手动提交代码示例(同步)代码示例(异步&#…

【踩坑指南2.0 2025最新】Scala中如何在命令行传入参数以运行主函数

这个地方基本没有任何文档记录,在学习的过程中屡屡碰壁,因此记录一下这部分的内容,懒得看可以直接跳到总结看结论。 踩坑步骤 首先来看看书上让我们怎么写: //main.scala object Start {def main(args:Array[String]) {try {v…

数据分析思维(七):分析方法——群组分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》,本文内容就是提取…

CSS 之 position 定位属性详解

CSS系列文章目录 CSS 之 display 布局属性详解 CSS 之 position 定位属性详解一文搞懂flex布局 【弹性盒布局】 文章目录 CSS系列文章目录一、前言二、静态定位:position:static;二、相对定位:position:relative三、绝对定位:pos…

麒麟信安云在长沙某银行的应用入选“云建设与应用领航计划(2024)”,打造湖湘金融云化升级优质范本

12月26日,2024云计算产业和标准应用大会在北京成功召开。大会汇集政产学研用各方专家学者,共同探讨云计算产业发展方向和未来机遇,展示云计算标准化工作重要成果。 会上,云建设与应用领航计划(2024)建云用…

微信小程序Uniapp

使用命令行创建项目(vuets) npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project然后用HBX打开项目 再安装依赖 npm i 再运行开发版本,生成dist目录 pnpm dev:mp-weixin 注意要设置APPid 再用微信小程序打开

汇编环境搭建

学习视频 将MASM所在目录 指定为C盘

计算机网络--路由表的更新

一、方法 【计算机网络习题-RIP路由表更新-哔哩哔哩】 二、举个例子 例1 例2

热备份路由HSRP及配置案例

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 一,HSRP的相关概念二,…

今日头条ip属地根据什么显示?不准确怎么办

在今日头条这样的社交媒体平台上,用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而,不少用户发现自己的IP属地显示与实际位置不符,这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据,并提供解决IP属…

倍思氮化镓充电器分享:Super GaN伸缩线快充35W

快节奏的时代,在旅游、办公等场景下,一款高效、便捷的充电器可以让我们的生活更便捷、高效。今天就给大家推荐一款倍思氮化镓充电器——Super GaN伸缩线快充35W。它具备多重亮点,可以满足我们在许多场景下的充电需求,成为我们的得力助手。 倍思氮化镓Super GaN伸缩线快充35W的亮…

云架构Web端的工业MES系统设计之区分工业过程

云架构Web端的工业MES系统设计之区分工业过程 在当今数字化浪潮席卷全球的背景下,制造业作为国家经济发展的重要支柱产业,正面临着前所未有的机遇与挑战。市场需求的快速变化、客户个性化定制要求的日益提高以及全球竞争的愈发激烈,都促使制造企业必须寻求更加高效、智能的生产…

嵌入式linux中socket控制与实现

一、概述 1、首先网络,一看到这个词,我们就会想到IP地址和端口号,那IP地址和端口各有什么作用呢? (1)IP地址如身份证一样,是标识的电脑的,一台电脑只有一个IP地址。 (2)端口提供了一种访问通道,服务器一般都是通过知名端口号来识别某个服务。例如,对于每个TCP/IP实…

VScode SSH 错误:Got bad result from install script 解決

之前vscode好好的,某天突然连接报错如下 尝试1. 服务器没有断开,ssh可以正常连接 2. 用管理员权限运行vscode,无效 3. 删除服务器上的~/.vscode-server 文件夹,无效 试过很多后,原来很可能是前一天anaconda卸载导致注册表项 步…

GPT分区 使用parted标准分区划分,以及相邻分区扩容

parted 是一个功能强大的命令行工具,用于创建和管理磁盘分区表和分区。它支持多种分区表类型,如 MBR(msdos)、GPT(GUID Partition Table)等,并且可以处理大容量磁盘。parted 提供了一个交互式界…

关系分类(RC)模型和关系抽取(RE)模型的区别

目标不同 关系分类模型:对给定的实体对在给定句子中预测其关系类型。两阶段(RC) 关系抽取模型:从句子中识别出所有潜在实体对,并为其预测关系类型。一阶段(NERRE) 训练/预测阶段输入输出数据不…

VSCode编辑+GCC for ARM交叉编译工具链+CMake构建+OpenOCD调试(基于STM32的标准库/HAL库)

一、CMake安装 进入CMake官网的下载地址Get the Software,根据系统安装对应的Binary distributions。 或者在CMake——国内镜像获取二进制镜像安装包。 或者访问GitHub的xPack项目xPack CMake v3.28.6-1,下载即可。 记得添加用户/系统的环境变量&#…

【数据结构】链表(2):双向链表和双向循环链表

双向链表(Doubly Linked List) 定义: 每个节点包含三个部分: 数据域。前驱指针域(指向前一个节点)。后继指针域(指向下一个节点)。 支持从任意节点向前或向后遍历。 #define dat…

RK3588+麒麟国产系统+FPGA+AI在电力和轨道交通视觉与采集系统的应用

工业视觉识别系统厂家提供的功能主要包括: 这些厂家通过先进的视觉识别技术,实现图像的采集、处理与分析。系统能够自动化地完成质量检测、物料分拣、设备监控等任务,显著提升生产效率和产品质量。同时,系统具备高度的灵活性和可扩…

3 抢红包系统

我们还是按照我们分析问题的方法论开展 一 场景分析 我们分析的是集体活动的抢红包,比如春晚,大型活动红包,需要在网页操作的抢红包 抢红包的问题也是多个人抢资源的问题,可以和秒杀进行比对。但是也有很多不同的地方。 用户打…