(CPC)Representation Learning with Contrastive Predictive Coding

Representation Learning with Contrastive Predictive Coding

一种通用的无监督学习方法——对比预测编码。通过自回归模型预测潜在空间(高维空间)的未来,以学习高级表征。在训练阶段不涉及具体下游任务。

原文
参考:https://zhuanlan.zhihu.com/p/129076690

主要贡献

  1. 将高维数据压缩到更加紧密的潜在嵌入空间,这个空间中条件预测更容易建模。
  2. 在这个潜在空间中使用强大的自回归模型来做多步未来预测。
  3. 损失函数依靠噪声对比估计,这是与自然语言模型中用于学习词嵌入类似的方式,需要整个模型以端到端的形式进行训练。将最终的模型(对比预测编码,CPC)用在了很多不同的数据模态中,包括图像、语音、自然语言和强化学习,结果表明同样的机制在每一个领域中都学到了有趣的高级表征,而且优于其他方法。

image-20210908124633513

对于输入样本 x t x_t xt,有一个非线性编码器 g e n c g_{enc} genc将其映射为潜在表示序列 z t = g e n c ( x t ) z_t=g_{enc}(x_t) zt=genc(xt);对于 t t t时刻之前的所有 z t ′ , t ′ < t z_{t'},t'<t zt,t<t有一个自回归模型(e.g. GRU) g a r g_{ar} gar推断得到当前时刻的 c t c_t ct,利用对当前时刻的推测 c t c_t ct,推断(用一个矩阵 W k W_k Wk进行映射)得到后面几个时刻的潜在表示序列的映射**(预测值) z t + 1 ′ z'_{t+1} zt+1 z t + 2 ′ z'_{t+2} zt+2 z t + 3 ′ . . . z'_{t+3}... zt+3...;将真实的 x t + 1 x_{t+1} xt+1 x t + 2 x_{t+2} xt+2 x t + 3 . . . x_{t+3}... xt+3...通过 g e n c g_{enc} genc得到的潜在表示序列(真实值)**做损失函数,达到收敛。最后利用 c t c_t ct完成下游任务。

衡量 x x x c c c的相关性

互信息可以很好的衡量相关性:

I ( x ; c ) = ∑ x , c p ( x , c ) l o g p ( x ∣ c ) p ( x ) I(x;c)=\sum\limits_{x,c}p(x,c)log\frac{p(x|c)}{p(x)} I(x;c)=x,cp(x,c)logp(x)p(xc)

但是由于不方便计算(可见MINE.md),作者采用一个正比于 p ( x ∣ c ) p ( x ) \frac{p(x|c)}{p(x)} p(x)p(xc)的函数 f k ( x , c ) f_k(x,c) fk(x,c)来代替,即:

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 ) = e x p ( z t + k T W k c t ) f_k(x_{t+k}, c_t)=exp(z^T_{t+k}W_kc_t) fk(xt+k,ct)=exp(zt+kTWkct)

我觉得应该才开看,第一步是 W k T z t + k W_k^Tz_{t+k} WkTzt+k,用一个Linear层将 z t + k z_{t+k} zt+k映射到与 c t c_t ct同Size;第二步做 W k T z t + k W_k^Tz_{t+k} WkTzt+k c t c_t ct的内积,即 ( W k T z t + k ) T (W_k^Tz_{t+k})^T (WkTzt+k)T c t c_t ct,展开为 z t + k T W k c t z^T_{t+k}W_kc_t zt+kTWkct;第三步做指数运算。

衡量互信息

经过一系列证明,可以得到:

I ( x t + k ; c t ) ≥ l o g ( N ) − L N I(x_{t+k};c_t)\geq log(N)-\mathcal{L}_N I(xt+k;ct)log(N)LN

其中 L N \mathcal{L}_N LN为:

L N = − E X [ l o g f k ( x t + k , c t ) ∑ x j ∈ X f k ( x j , c t ) ] \mathcal{L}_N=-\mathop{\mathbb{E}}\limits_{X}[log\frac{f_k(x_{t+k}, c_t)}{\sum_{x_j\in X}f_k(x_j,c_t)}] LN=XE[logxjXfk(xj,ct)fk(xt+k,ct)]

可见最小化 L N \mathcal{L}_N LN即可完成最大化互信息量的下界。

其中, p ( x t + k , c t ) p(x_{t+k},c_t) p(xt+k,ct) 指的是正在选用信号的片段 x t x_t xt(正样本),而 p ( x j ) p(x_j) p(xj)指的是我们可以随便从其他的声音信号里选择一个片段(负样本)。这就是对比的体现。

L N \mathcal{L}_N LN反向梯度传播即可完成整个算法。

文章中还涉及了对图像、自然语言、语音的不同形式的信号的建模,有需要可以查看原文。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值