前言
这是DeepMind在2019年发的一篇paper,也是无监督学习领域非常经典的一篇论文。它介绍了一种叫做Contrastive Predictive Coding的技术用于对序列形式的数据(e.g. 文本,声音信号等等)进行表征(representation)学习。
CPC 模型架构
首先我们先来看一下论文里的这张cpc模型架构图。
对于一组序列数据x,先通过一个编码器g_enc对序列的每个位置xt进行编码,转化为表征zt。然后这系列表征作为输入,传入一个自回归模型g_ar。该自回归模型在t时刻的输出为表征ct,其中包含了序列到t时刻为止的信息。
到目前为止,光从模型的架构上来看,并没有什么特别之处。不过真正有趣的地方才刚刚开始。首先,基于上述的模型架构,非常直觉的,我们可能会想到用t时刻为止模型学到的序列表征ct来预测之后的序列数据。但是谷歌的大佬们并没有这么做,他们并不是直接对p(x|c)进行建模。因为在篇paper中,他们希望模型学到的是一种high-level的表征,包含更多全局的信息,即文中提到的‘slow feature’,他们希望c就是这样的特征,但是用这种high-level的表征去预测高维数据是非常困难的。因此这里他们采用了另一种模型优化