Advertisement

Representation Learning with Contrastive Predictive Coding 论文阅读笔记

阅读量:

前言

该研究由DeepMind于2019年发表,并在无监督学习领域具有重要地位。该方法通过Contrastive Predictive Coding技术实现对文本、声音信号等序列数据的表示学习。

CPC 模型架构

首先我们先来看一下论文里的这张cpc模型架构图。

在这里插入图片描述

对于一组序列数据x,经过编码器g_enc处理后,每个位置xt都会被编码成表征zt。这些特征随后作为输入传递给自回归模型g_ar。该模型在时间t的位置上生成表征ct,其中ct包含了从初始状态到当前时间步的所有信息。

到目前为止,并未展现出显著的独特性。真正值得探索的方向仍有许多。
就目前所观察到的情况而言,在现有的模型架构中一种直观的想法是使用t时刻为止学习到的序列表征ct来预测后续序列的数据。
然而并未直接对p(x|c)进行建模。
因为在一篇论文中提出了一种高层次特征提取的方法旨在捕捉包含更多全局信息如文中所述所谓的'slow feature'假设将此特征定义为c
然而由于这种高层次特征直接用于高维数据预测面临着巨大的复杂性因此研究者们转而引入了一种新的优化策略
这种新策略的核心目标在于最大化未来时刻的数据x(future)与其对应当前时刻特征c(present)之间的互信息(mutual information)

在这里插入图片描述

这实际上是非常直观的;真实的相邻点之间必定存在高度的信息重叠;c的引入对于x不确定性的降低具有显著的影响

Denstiy Ratio

基于上述分析,作者定义了一个密度比 用来描述互信息。

在这里插入图片描述

在原文中,作者采用了log-bilinear models 作为工具来进行density ratio的参数化处理。

在这里插入图片描述

让我们详细分析这个数学表达式:其中变量zt+k代表xt+k经过编码器处理后的特征表示;而变量ct则是在step t层次上的高层次特征描述。其中中间层参数矩阵W_k被模型所学习;值得注意的是,在此过程中每个时间间隔k都被赋予了一个独特的参数权重矩阵。

相对简单而言,在编码器接收的特征zt+k与ct之间的乘积值越大时,则会导出更高的相似度和更高的互信息值;因此,在这种情况下所述的概率密度比将与互信息呈正比关系

InfoNCE Loss

我们已深入讨论了论文的核心部分,并对损失函数的定义进行了详细阐述。在原论文中提出的具体损失函数形式为何具有这样的结构这一问题

在这里插入图片描述

直觉理解

为了更好地理解这一概念,请考虑以下分析:最小化损失函数实际上意味着我们需要最大化分子部分。这个分子到底代表什么?它其实就是我们在前面定义的用于衡量xt+k(future)ct(present) 之间的互信息密度比。因此,在模型优化过程中我们的目标就是希望真实的数据对(future 和 present)能够拥有更高的互信息水平,并尽量降低虚假数据对(future 和 present)之间的互信息水平。需要注意的是这一描述并不完全准确 因为这里的density ratio并不完全等价于互信息

在对比学习中,我们首先阐述了一些关键概念。其中,ct代表的是一个锚点(Anchor);xt+k被视为一个正例样本(Positive Sample);而xj则被定义为一个负例样本(Negative Sample)。假设有一个批量大小为N的数据集X,在该集合中包含一个正例和N-1个负例。通过下文所示的示意图,我们可以更直观地理解这一概念。

在这里插入图片描述

严谨推导

在深入探讨上述损失函数之前,请允许我们进行一次详细的理论推导以阐明其实质意义。在此基础上,请您耐心配合我们将这一概念纳入到整体框架之中。为了便于后续分析,请先将这一公式暂时搁置一旁,并着重思考我们的优化目标:最大化单个正例样本的概率值p(idx=i|X,ct) 。这一概率值可进一步分解为如下的等式形式:

在这里插入图片描述

分子部分对应的是idx=i这一项属于真实正类,并且是从条件概率分布p(x|c) 中抽取;而其他则来自无条件概率分布p(x) 的负类抽样。分母则是所有可能情况之和,在计算过程中考虑了所有的N个可能类别;具体来说,在计算过程中考虑了所有的N个可能类别中的每一个都是正类的情况与剩下的全部为反类的情况之间的关系。第二个公式需要一个巧妙的方法:当给定观测数据X时;这些独立事件同时发生的联合概率是一个固定的常数;因此在第一个公式右侧分子部分中涉及的所有非目标类别的联合后验概率可以通过将该常数值除以目标类别在自身条件下的边缘概率来获得;同样地;分母部分中的非目标类别联合后验概率也可以通过同样的方法进行转化;这样我们就得到了第二个公式的结果

当我们深入研究第二个等式时,我们会发现其分子分母实际上是我们之前所讨论的互信息表达式的体现。具体来说,我们将P(xi | ct) / P(xi) 替换为 P(x_{t+k} | ct) / P(x_{t+k}), 然后通过density ratio相关的表达式进行进一步转换,从而得到了我们在CPC损失函数中看到的那个对数内的表达式。通过最大化条件概率P(idx = i | X, ct) ,我们可以有效减少CPC损失函数值。

写在最后

到此为止CPC的核心内容已经基本介绍完毕。关于证明最小化损失函数等价于最大化正例样本xt+k与其对应的上下文ct之间的互信息这一问题我们暂不展开讨论有兴趣的读者可以参考原文附录中的相关内容了解详细推导过程。综上所述CPC主要采用了对比学习的思想将最大化正例样本与锚定表征之间互信息作为模型优化的目标并采用无监督的方式对模型进行训练最终实现从数据中提取高阶特征以满足下游任务的需求

参考

Representation-Based Learning with Predictive Coding Enhanced by Contrasts]
Contrastive Self-Supervised Learning Approach: A Comprehensive Review

全部评论 (0)

还没有任何评论哟~