摘要
对于多视角学习,每一个视角都是有噪声并且不完整的,但是重要的信息却被所有的视角共享。
所有我们要学习一个强大的模型去学习视角间不变的信息,也就是最大化相同场景但是不同视角的共有信息。
我们发现对比损失比交叉预测损失更好,并且学习的视角越多,越能捕获到潜在场景的语义。
提出方法
预测学习
预测学习的目的就是从 v1 预测 v2, 依靠一个中间变量z, 但这会使得 v2 之间的像素互相独立(为什么互相独立?我也不大清楚),失去了学习结构的能力。
两个视角的对比学习
我们有一个 anchor 和来自另一个视角的 k 个 sample 例子,k 一般很大,实验中取16385或者是4096.
- 上述公式的实现
我们把 f 定为各自不同视角的映射,.
损失就可以定为
- 与互信息的关系
可以看到这个 h 和互信息成正比,并且这个对比损失为互信息提供了一个下界,
L越小,互信息越高,k越大(也就是我们从另一个视角sample的样本数),互信息也越高。
多个视角的对比学习
假设有 n 个视角,那么有两种情况:
1.固定一个视角,其他视角都和这一个视角对比,有 n-1 种情况。
(注:这里的 M 实际上就是 n).
2.视角之间两两组合,实际上有 种组合。
对比损失的实现
Memory bank:每一个迭代过后对所有数据的映射进行更新。但是太慢了。
我们采用的策略:每一个batch来了,我们就用这一个batch的数据乘以0.5加到以前的memory bank中,这样第 i 个迭代完了,memory中的数据有了第 i-1 个 batch 中的信息了。