论文笔记: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

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值