论文笔记:Representation Learning with Contrastive Predictive Coding

对于无监督学习来说,互信息是一个非常重要的指标,它衡量了两个随机变量之间的相关性。在无监督学习中,利用对互信息的优化,通常我们能够得到更加好的特征表示。

要做什么

特征抽取是无监督学习的重要部分,旨在对大量的无标注数据样本进行训练,最后能够得到一个编码器E,将每一个样本 x x x编码为一个好的向量表示 z z z,那么如何衡量这个表示是否好呢?自编码器(AutoEncoder)告诉我们, 希望编码出的向量能够重构原始样本。因此我们在加入一个解码器D, 将重构的 x ′ x' x x x xMse loss
在这里插入图片描述
但是这样的想法真的好吗?答案是不见得,比如下面的例子:
在这里插入图片描述
尽管我们已经见过很多次钞票长什么样子,但我们很少能一模一样的画出钞票;虽然我们画不出栩栩如生的钞票,但我们依旧可以轻易地辨别出钞票。因此钞票在我们大脑中的表示,并不需要我们能够生成完整的钞票,而只需要我们能够进行辨别。基于此,我们可以认为,在人的认知学习中:一个样本的好的表示应该是能够从大量数据中辨别出该样本,而不是能够直接生成改样本

互信息的优化

那别如何去学习到一个足够辨别该样本的表示呢?没错,就是最大化互信息。这里先引入一些记号,令 X X X表示所有样本集合, x x x表示其中一个样本。 Z Z Z表示所有编码向量的集合, z z z表示其中一个编码向量。 X X X Z Z Z的互信息表示为:
I ( X , Z ) = ∑ x ∈ X , z ∈ Z p ( x , z ) l o g p ( x ∣ z ) p ( x ) = H ( X ) − H ( X ∣ Z ) I(X,Z)=\sum_{x \in X, z \in Z}p(x, z) log \frac{p(x|z)}{p(x)}=H(X) - H(X|Z) I(X,Z)=xX,zZp(x,z)logp(x)p(xz)=H(X)H(XZ)
最大化原始数据 X X X和其表示 Z Z Z的互信息 I ( X , Z ) I(X,Z) I(X,Z), 如果 X X X是固定的,比如图谱的像素,那么就等价与最小化条件熵 H ( X ∣ Z ) H(X | Z) H(XZ), 也就是说,条件熵越小,也就表示,给定一个表示 z z z, 其对应的样本 x x x的不确定性越低,也就是说, z z z能够很好地从大量样本 X X X中辨别 x x x

对比预测编码(CPC)

本文提出地对比预测编码(CPC)架构如下:
在这里插入图片描述
以语音为例,首先通过一个编码器 g e n c g_{enc} genc将语音信号 x t x_t xt编码为潜在表示 z t z_t zt, 然后通过一个 g a r g_{ar} gar总结所有 z ≤ t z_{\le t} zt得到 c t c_t ct( c t c_t ct融合了 t t t时间前的所有信息), 然后通过一个 W k W_k Wk映射为 W k c t W_kc_t Wkct, 最终我们希望能够通过 W k c t W_kc_t Wkct识别出 x t + k x_{t+k} xt+k。因为 W k W_k Wk是对时间步的映射,被所有 C C C共享,因此如果能够从 W k c t W_kc_t Wkct中识别 x t + k x_{t+k} xt+k,那么便说明 c t c_t ct是一个好的表示。得到了每一个 x t x_t xt的编码表示 c t c_t ct后,如果需要得到样本的表示,对他们进行一个pooling就可以了。

结合上文对互信息最大化的讲解,那么CPC的目标就变成了最大化 X X X C C C的互信息 I ( X , C ) I(X,C) I(X,C):
I ( X , C ) = ∑ x ∈ X , z ∈ C p ( x , c ) l o g p ( x ∣ c ) p ( x ) I(X,C)=\sum_{x \in X, z \in C}p(x, c) log \frac{p(x|c)}{p(x)} I(X,C)=xX,zCp(x,c)logp(x)p(xc)
也就是原文中的式(1)。

对互信息的估计

文章的初心是希望最大化互信息,但是在实现时,是通过优化InfoNCE对互信息的下界进行优化,从而间接最大化互信息。

定义InfoNCE为:
在这里插入图片描述
其中 X X X是所有可能的采样集合,含有 N N N个样本 { x 1 , x 2 , . . . , x N } \{x_1, x_2, ..., x_N\} {x1,x2,...,xN}, 其中含有一个对应 c t c_t ct的正样本 x t + k x_{t+k} xt+k N − 1 N-1 N1个负样本。
其中 f k ( x t + k , c t ) = e x p ( z t + k T W k c t ) f_k(x_{t+k}, c_t)=exp(z_{t+k}^TW_kc_t) fk(xt+k,ct)=exp(zt+kTWkct),建模了Density Ratio, 即: f k ( x t + k , c t ) ∝ p ( x t + k ∣ c t ) p ( x t + k ) f_k(x_{t+k}, c_t) \propto \frac{p(x_{t+k} | c_t)}{p(x_{t+k})} fk(xt+k,ct)p(xt+k)p(xt+kct)
关于 f k ( x t + k , c t ) f_k(x_{t+k}, c_t) fk(xt+k,ct)为什么要用一个指数簇函数表示,我们待会儿再讲,这里先证明为什么 f k ( x t + k , c t ) f_k(x_{t+k}, c_t) fk(xt+k,ct)建模了Density Ratio。

L N \mathcal{L}_N LN其实就是代表了交叉熵损失, f k ∑ X f k \frac{f_k}{\sum_Xf_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是正例,即 i = t + k i=t+k i=t+k。而:
在这里插入图片描述
因此: f k ( x t + k , c t ) = t p ( x t + k ∣ c t ) p ( x t + k ) ∝ p ( x t + k ∣ c t ) p ( x t + k ) f_k(x_{t+k}, c_t) = t \frac{p(x_{t+k} | c_t)}{p(x_{t+k})}\propto \frac{p(x_{t+k} | c_t)}{p(x_{t+k})} fk(xt+k,ct)=tp(xt+k)p(xt+kct)p(xt+k)p(xt+kct)

那为什么 f k ( x t + k , c t ) f_k(x_{t+k}, c_t) fk(xt+k,ct)为什么要用一个指数簇函数表示呢?对 t p ( x t + k ∣ c t ) p ( x t + k ) = e x p ( z t + k T W k c t ) t \frac{p(x_{t+k} | c_t)}{p(x_{t+k})}=exp(z_{t+k}^TW_kc_t) tp(xt+k)p(xt+kct)=exp(zt+kTWkct)两边取 l o g log log, 有: l o g t p ( x t + k ∣ c t ) p ( x t + k ) = z t + k T W k c t logt\frac{p(x_{t+k} | c_t)}{p(x_{t+k})} = z_{t+k}^TW_kc_t logtp(xt+k)p(xt+kct)=zt+kTWkct, t t t是一个放缩倍数,因此加入了 e x p exp exp后, z t + k T W k c t z_{t+k}^TW_kc_t zt+kTWkct其实就是拟合的 x t + k x_{t+k} xt+k c t c_t ct的点互信息

到这里, L N \mathcal{L}_N LN的意义就呼之欲出了:直观来说,对于每一次采样,它就是尽量让正样本对之间的点互信息尽量大。而在所有数据中,大部分的点互信息 l o g p ( x ∣ c ) p ( x ) log\frac{p(x|c)}{p(x)} logp(x)p(xc)大,可以想象 I ( X , C ) I(X,C) I(X,C)也会大。

文章在附录中也证明了,优化 L N \mathcal{L}_N LN, 其实就是在对 I ( X , C ) I(X,C) I(X,C)的下界进行优化:
在这里插入图片描述
在这里插入图片描述

疑问

1、为什么要通过优化互信息的下界来优化互信息?而不像[1]中一样直接优化互信息本身呢?

2、关于传统的有监督分类中,最后的logit要接一个softmax而不接其他的归一化层,是不是最后通过softmax后,其实就是在最大化点互信息

参考文献:

[1] 苏剑林. (2018, Oct 02). 《深度学习的互信息:无监督提取特征 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/6024

动态贝叶斯网络 (Dynamic Bayesian Networks, DBN) 是一种用于建模动态系统的概率图模型。它是贝叶斯网络的扩展,可以对系统中随时间变化的变量进行建模和推断。 动态贝叶斯网络的表示建立在随时间变化的变量之间的因果关系中。它由节点和边组成,节点表示随时间变化的变量,边表示节点之间的因果关系。节点之间的连接关系可以被视为一个时间序列模型,其中每个时间步都包含一组随机变量。这种表示方法使得动态贝叶斯网络能够捕捉到系统中变量之间的动态演化。 动态贝叶斯网络可用于推断系统在给定观测值下的状态。推断是通过给定一些观测值,计算系统在给定时间步的状态的后验概率分布来进行的。这一推断过程通常基于贝叶斯定理和动态贝叶斯网络的因果关系。 动态贝叶斯网络还可以用于学习系统中的参数和结构。参数学习是指给定观测数据集,估计网络中节点之间的参数的过程。常用的方法包括最大似然估计和期望最大化算法。结构学习是指给定观测数据集,估计网络中节点之间连接关系的过程。常用的方法包括基于启发式搜索的方法和贝叶斯模型平均。 总之,动态贝叶斯网络是一种用于建模动态系统的概率图模型,它可以表示变量之间的因果关系,进行推断和学习。它在众多领域中拥有广泛的应用,如机器人学、生物学和金融学等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值