Representation Learning With Contrastive Predictive Coding梳理

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

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

主要贡献

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

对于输入样本$xt线g{enc}zt=g{enc}(xt)tz{t’},t’<t(e.g.GRU)g{ar}c_tc_t(W_k$进行映射)得到后面几个时刻的潜在表示序列的映射(预测值)$z’{t+1}z’{t+2}z’{t+3}…x{t+1}x{t+2}x{t+3}…g{enc}$得到的潜在表示序列(真实值)做损失函数,达到收敛。最后利用ct完成下游任务。

衡量xc的相关性

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

I(x;c)=x,cp(x,c)logp(x|c)p(x)

但是由于不方便计算(可见MINE.md),作者采用一个正比于的函数来代替,即:

fk(xt+k,ct)p(xt+k|ct)p(xt+k)

然后这个$fk(x{t+k}, c_t)$函数的具体计算表达式为:

fk(xt+k,ct)=exp(zt+kTWkct)

我觉得应该才开看,第一步是$Wk^Tz{t+k}z{t+k}c_tW_k^Tz{t+k}ct(W_k^Tz{t+k})^T$$ctz^T{t+k}W_kc_t$;第三步做指数运算。

衡量互信息

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

I(xt+k;ct)log(N)LN

其中为:

LN=EX[logfk(xt+k,ct)xjXfk(xj,ct)]

可见最小化即可完成最大化互信息量的下界。

其中, 指的是正在选用信号的片段(正样本),而指的是我们可以随便从其他的声音信号里选择一个片段(负样本)。这就是对比的体现。

反向梯度传播即可完成整个算法。

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


Powered By Valine
v1.5.2