Representation Learning with Contrastive Predictive Coding

Den Oord A V, Li Y, Vinyals O, et al. Representation Learning with Contrastive Predictive Coding.[J]. arXiv: Learning, 2018.

Henaff O J, Srinivas A, De Fauw J, et al. Data-Efficient Image Recognition with Contrastive Predictive Coding[J]. arXiv: Computer Vision and Pattern Recognition, 2019.

@article{den oord2018representation,
title={Representation Learning with Contrastive Predictive Coding.},
author={Den Oord, Aaron Van and Li, Yazhe and Vinyals, Oriol},
journal={arXiv: Learning},
year={2018}}

@article{henaff2019data-efficient,
title={Data-Efficient Image Recognition with Contrastive Predictive Coding},
author={Henaff, Olivier J and Srinivas, Aravind and De Fauw, Jeffrey and Razavi, Ali and Doersch, Carl and Eslami, S M Ali and Den Oord, Aaron Van},
journal={arXiv: Computer Vision and Pattern Recognition},
year={2019}}

与其说是无监督, 不如用表示学习或者特征提取更为贴切. 感觉监督学习的一个瓶颈就是, 你直接告诉了神经网络它应该到达的终点, 那么它就会找一条最容易的路子去, 所以在训练中, 可以发现训练的精度很快就能达到100%, 而在测试集上的精度就差强人意了. 当然, 这错不在网络, 毕竟它已经尽可能地完成了我们交代给他的任务, 困难在于, 我们自己不知道该如何给这种兼顾泛化性的任务下达准确的定义(平移不变, 旋转不变等等只是泛化的冰山一角).
而表示学习的工作实际上就是比简单的分类损失等更具打磨的空间, 不同的先验知识可以融入其中. 这篇论文的观点就是, encoder提取的特征应当具有可预测性, 也就是说, 只有能够预测别的特征的才是好特征. 当然, 这个是对具有序(时域或者空间)的数据有意义, 对于图片可以认为构造这种数据, 个人认为这才是有趣的地方.

主要内容

从具有序的数据讲起

在这里插入图片描述

如上图, 在不同的时间点, 有数据 x t x_t xt, 其经过第一个encoder g e n c g_{\mathrm{enc}} genc得到隐变量(特征表示) z t z_t zt. 到此打住, 如果是以前, 那可能再来一个decoder, 然后希望解码后数据和原始数据能够吻合. 不过作者认为, 这种方式有点太过勉强了, 其实一个好的特征并不是既低维度(高能量密度)又能够藏住大部分的信息, 一个好的特征应该是抓住最最最主要的信息, 如果是用于分类, 那就是抓住最具有区分度的信息(虽然这个很难下准确的定义).
作者的做法是, 将 z i , i ≤ t z_i, i\le t zi,it作为输入, 构造一个回归模型 g a r g_{\mathrm{ar}} gar(比如用RNN), 得到一个实际上具有之前数据信息的一个特征表示 c t c_t ct. 作者希望利用 c t c_t ct来预测之后的 x t + 1 , … , x t + k , … x_{t+1},\ldots, x_{t+k},\ldots xt+1,,xt+k,, 或者 z t + 1 , … , z t + k , … z_{t+1},\ldots, z_{t+k},\ldots zt+1,,zt+k,, 自然最好的是有一个条件概率模型 p ( x t + k ∣ c t ) p(x_{t+k}|c_t) p(xt+kct), 然后最大化互信息
I ( x ; c ) = ∑ x , c p ( x , c ) log ⁡ p ( x ∣ c ) p ( x ) . (1) \tag{1} I(x;c)=\sum_{x,c} p(x,c)\log \frac{p(x|c)}{p(x)}. I(x;c)=x,cp(x,c)logp(x)p(xc).(1)

Contrastive Predictive Coding (CPC)

作者并没有打算构建条件概率模型(感觉这样就像VAE一样需要超多假设了), 只是用
f k ( x t + k , c t ) = exp ⁡ ( z t + k T W k c t ) , (3) \tag{3} f_k(x_{t+k}, c_t)=\exp(z_{t+k}^TW_kc_t), fk(xt+k,ct)=exp(zt+kTWkct),(3)
来衡量二者的关系, 可以把 W k c t W_kc_t Wkct看成是一个预测 z ^ t + k \hat{z}_{t+k} z^t+k.

接下来就要用到对比学习的概念了, 文中说是利用了负样本采样, 但是我用负样本采样的那个推导实在推不出来他的函数, 但是是有一点类似的(感觉只是套用了负采样这个思想?). 即从 p ( x t + k ∣ c t ) p(x_{t+k}|c_t) p(xt+kct)中采样正样本 x t + k x_{t+k} xt+k, 从一般的分布 p ( x ) p(x) p(x)中采样N-1个负样本 x j x_j xj, 然后最小化下式
L N = − E X [ log ⁡ f k ( x t + k , c t ) ∑ x j ∈ X f k ( x j , c t ) ] . (4) \tag{4} \mathcal{L}_N=- \mathbb{E}_X [\log \frac{f_k(x_{t+k},c_t)}{\sum_{x_j \in X} f_k(x_j,c_t)}]. LN=EX[logxjXfk(xj,ct)fk(xt+k,ct)].(4)
其中 X = { x 1 , … , x N } X=\{x_1,\ldots, x_N\} X={x1,,xN}(注, 这里 X X X是固定的, 已知的).

f k ( x i , c t ) ∑ x j ∈ X f k ( x j , c t ) \frac{f_k(x_i,c_t)}{\sum_{x_j \in X} f_k(x_j,c_t)} xjXfk(xj,ct)fk(xi,ct)看成是第 i i i个采样点是正样本的概率 p ^ i , i = 1 , … , N \hat{p}_i,i=1, \ldots,N p^i,i=1,,N, 则上面的式子实际上就是一个交叉熵
L N = − ∑ i = 1 N p i log ⁡ p ^ i , \mathcal{L}_N = -\sum_{i=1}^N p_i \log \hat{p}_i, LN=i=1Npilogp^i,
故令损失最小的概率为 p ^ i = p i : = p ( d = i ∣ X , c t ) \hat{p}_i=p_i:=p(d=i|X, c_t) p^i=pi:=p(d=iX,ct), 即正样本在第 i i i个位置的概率. 又
p ( d = i ∣ X , c t ) = p ( x i ∣ c t ) ∏ l ≠ i p ( x l ) ∑ j = 1 N p ( x j ∣ c t ) ∏ l ≠ j p ( x j ) = p ( x i ∣ c t ) p ( x i ) ∑ j = 1 N p ( x j ∣ c t ) p ( x j ) . \begin{array}{ll} p(d=i|X, c_t) & = \frac{p(x_i|c_t) \prod_{l\not= i} p(x_l)}{\sum_{j=1}^N p(x_j|c_t)\prod_{l\not= j}p(x_j)} \\ &= \frac{\frac{p(x_i|c_t)}{p(x_i)}}{\sum_{j=1}^N\frac{p(x_j|c_t)}{p(x_j)} }. \end{array} p(d=iX,ct)=j=1Np(xjct)l=jp(xj)p(xict)l=ip(xl)=j=1Np(xj)p(xjct)p(xi)p(xict).

也就是说, 此时
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).

图片构建序

在这里插入图片描述
如图所示, 一张256x256的图片, 均匀分成7x7张, 每张大小为64x64, 两者最多有50%的重叠部分. 从上到下, 从左往右, 依次可以对其排序, 用前几行的patches出来的 z z z来预测后面的 z z z.

疑问: 这个负样本的采样空间, 是一个图片所有的patches还是一个batch的所以的patches呢? 感觉是有讲究的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值