arxiv:https://arxiv.org/abs/1906.00910
code:https://github.com/Philip-Bachman/amdim-public
1 Introduction
这篇文章是对 DIM 进行的一个扩展研究(主要是Local DIM),主要是在 DIM 的基础上引入了 mutiple views ,也就是最大化一个共享 context 中不同视图(views)之间互信息(Across Views)。
什么是 mutiple views 呢?例如,我们观察一个事物的时候,可以从不同的时空位置,也可以使用不同的方法去观察或描述(如触觉、听觉、视觉),那么这样对这个事物观察得到的视图(view)也是不同的。而如果要学习一个 representation 来描述这个事物,往往是需要综合考虑多个视图的,然后才能更好的进行 predict。例如,现在有一堆饼干,假设我们的最终任务预测另一块饼干尝起来的味道如何,那么我们在学习这堆饼干的 representation 时,不仅仅需要饼干的外观这一个视图,还需要综合考虑“从各个角度看起来的外观”、“闻起来气味如何”、“烘焙的时候声音是什么样的”等多个视图和其最终尝起来的味道之间的关系。
而应用在图片上面(如ImageNet数据集),我们可以通过对图片重复的应用数据增强来产生不同的视图。在 CPC 中实际也有这个思想,不过它产生多个视图的方法是通过将图像重复的分割为“过去”和“未来”的块,并且对应一个固定的自回归序列。
这种方法的关键思想就是最大化从同一个共享上下文的不同视图提取的 features 的互信息,可以迫使网络学习到广泛影响共享上下文的高级因素(例如某些对象的存在或某些事件的发生)的信息。
这篇文章在 Local DIM 的基础上,主要进行以下几点扩展:
- 从图像的独立增强副本(independently-augmented copies)中提取特征,而不是原始图像。
- 最大化多尺度特征(mutiple feature scales)间的互信息,而不仅仅是局部和整体之间。
- 使用了更强大的 encoder。
- 提出了一种基于混合的 representation (mixture-based representation)
2 Method
2.1 Local DIM
首先再简单回顾一下 Local DIM,即最大化 encoder 最后输出的 global feature(representation) f 1 ( x ) f_1(x) f1(x) 和中间层的 feature map { f 7 ( x ) i j : ∀ i , j } \{f_7(x)_{i j} : \forall i,j\} {f7(x)ij:∀i,j} 之间的互信息。这里 f f f 的下标表示维度,如 f 1 f_1 f1 表示最终输出的是一维向量,而 f 7 f_7 f7 表示输出的是 7 × 7 7×7 7×7 的 feature map;而下标 i , j i,j i,j则表示在 local feature map 中某一图像块的索引位置。而两者的互信息实际上衡量的就是:在已知 f 1 ( x ) f_1(x) f1(x) 的情况对 f 7 ( x ) i j f_7(x)_{i j} f7(x)ij 的预测,比未知 f 1 ( x ) f_1(x) f1(x) 时对其的预测要好多少。
我们可以通过以下步骤在正样本对上构造联合分布
p
(
f
1
(
x
)
,
f
7
(
x
)
i
j
)
p(f_1(x),f_7(x)_{i j})
p(f1(x),f7(x)ij):
(1)从输入原始图像中取样
x
∼
D
x \sim D
x∼D
(2)取样空间索引
i
∼
u
(
i
)
i \sim u(i)
i∼u(i) 和
j
∼
u
(
j
)
j \sim u(j)
j∼u(j)
(3)计算特征
f
1
(
x
)
f_1(x)
f1(x) 和
f
7
(
x
)
i
j
f_7(x)_{i j }
f7(x)ij
当我们得到边缘分布 p ( f 1 ( x ) ) , p ( f 7 ( x ) i j ) p(f_1(x)),p(f_7(x)_{i j}) p(f1(x)),p(f7(x)ij)(负样本对) 和联合分布 p ( f 1 ( x ) , f 7 ( x ) i j ) p(f_1(x),f_7(x)_{i j}) p(f1(x),f7(x)ij) (正样本对)时,Local DIM 就是找到一个编码器 f f f 能够最大化正样本对( p ( f 1 ( x ) , f 7 ( x ) i j ) p(f_1(x),f_7(x)_{i j}) p(f1(x),f7(x)ij))的互信息 I ( f 1 ( x ) ; f 7 ( x ) i j ) I(f_1(x);f_7(x)_{i j}) I(f1(x);f7(x)ij)
在 AMDIM 中,作者根据逻辑上的作用来重新命名 global feature 和 local feature (在 DIM 中,是根据他们所处 encoder 中的位置):
- 将对数据进行编码的特征,称为 antecedent features(global features)
- 将要预测的特征,称为 consequent features(local features)
3.2 Noise-Contrastive Estimation
在 Local DIM 中,最终尝试了多种估计器,而最好的结果是使用了基于 NCE 的互信息边界,即 CPC 中提到的的 InfoNCE。
因此,我们可以通过最小化以下损失来最大化互信息的 NCE 下限:
E
(
f
1
(
x
)
,
f
7
(
x
)
i
,
j
)
[
E
N
7
[
L
Φ
(
f
1
(
x
)
,
f
7
(
x
)
i
j
,
N
7
)
]
]
(1)
\underset{\left(f_{1}(x), f_{7}(x)_{i, j}\right)}{\mathbb{E}}\left[\underset{N_{7}}{\mathbb{E}}\left[\mathcal{L}_{\Phi}\left(f_{1}(x), f_{7}(x)_{i j}, N_{7}\right)\right]\right] \tag 1
(f1(x),f7(x)i,j)E[N7E[LΦ(f1(x),f7(x)ij,N7)]](1)
上式中,正样本对
(
f
1
(
x
)
,
f
7
(
x
)
i
j
)
(f_1(x),f_7(x)_{i j})
(f1(x),f7(x)ij) 取样自联合分布
p
(
f
1
(
x
)
,
f
7
(
x
)
i
j
)
p(f_1(x),f_7(x)_{i j})
p(f1(x),f7(x)ij);
N
7
N_7
N7 表示一组负样本的集合,由从干扰项的边缘分布
p
(
f
7
(
x
)
i
j
)
p(f_7(x)_{i j})
p(f7(x)ij) 中独立取样(在Local DIM也就是指不同的图片);而
L
Φ
\mathcal{L}_{\Phi}
LΦ 则是标准的 log-softmax,
Φ
(
f
1
,
f
7
)
{\Phi}(f_1,f_7)
Φ(f1,f7) 表示一个分数,该分数越高,则
(
f
1
,
f
7
)
(f_1,f_7)
(f1,f7) 是正样本对的概率越大。
可以写出 L ϕ \mathcal{L}_{\phi} Lϕ 如下:
L Φ ( f 1 , f 7 , N 7 ) = − log exp ( Φ ( f 1 , f 7 ) ) ∑ f ~ 7 ∈ N 7 ∪ { f 7 } exp ( Φ ( f 1 , f ~ 7 ) ) (2) \mathcal{L}_{\Phi}\left(f_{1}, f_{7}, N_{7}\right)=-\log \frac{\exp \left(\Phi\left(f_{1}, f_{7}\right)\right)}{\sum_{\tilde{f}_{7} \in N_{7} ∪\left\{f_{7}\right\}} \exp \left(\Phi\left(f_{1}, \tilde{f}_{7}\right)\right)} \tag 2 LΦ(f1,f7,N7)=−log∑f~7∈N7∪{f7}exp(Φ(f1,f~7))exp(Φ(f1,f7))(2)
3.3. Efficeient NCE Computation
(这一部分看不太懂)
当我们对许多正样本对使用很大的负样本集合 N 7 N_7 N7 的话(例如 ∣ N 7 ∣ ≫ 10000 |N_7| \gg 10000 ∣N7∣≫10000),我们可以使用一个简单的点乘运算来匹配分数 Φ \Phi Φ,从而有效的计算等式1中的下限:
Φ
(
f
1
(
x
)
,
f
7
(
x
)
i
j
)
≜
ϕ
1
(
f
1
(
x
)
)
⊤
ϕ
7
(
f
7
(
x
)
i
j
)
(3)
\Phi\left(f_{1}(x), f_{7}(x)_{i j}\right) \triangleq \phi_{1}\left(f_{1}(x)\right)^{\top} \phi_{7}\left(f_{7}(x)_{i j}\right) \tag 3
Φ(f1(x),f7(x)ij)≜ϕ1(f1(x))⊤ϕ7(f7(x)ij)(3)
函数
ϕ
1
\phi_{1}
ϕ1 和
ϕ
7
\phi_{7}
ϕ7 非线性的将输入变换的其它向量空间。
3.4 Data Augmentation
AMDIM 对 DIM 的一个改进就是从数据增强的图像中提取特征,用
A
(
x
)
A(x)
A(x) 表示对初始图像
x
x
x 进行随机数据增强后的分布,因此构建增强后的联合分布
p
A
(
f
1
(
x
1
)
,
f
7
(
x
2
)
i
j
)
p_A(f_1(x^1),f_7(x^2)_{i j})
pA(f1(x1),f7(x2)ij) 的步骤如下:
(1)从输入原始图像中取样
x
∼
D
x \sim D
x∼D
(2)随机进行两种数据增强,从数据增强后的分布分别进行取样
x
1
∼
A
(
x
)
x^1 \sim A(x)
x1∼A(x) 和
x
2
∼
A
(
x
)
x^2 \sim A(x)
x2∼A(x)
(3)取样空间索引
i
∼
u
(
i
)
i \sim u(i)
i∼u(i) 和
j
∼
u
(
j
)
j \sim u(j)
j∼u(j)
(4)计算特征
f
1
(
x
1
)
f_1(x^1)
f1(x1) 和
f
7
(
x
2
)
i
j
f_7(x^2)_{i j}
f7(x2)ij
文章中采用的数据增强方法有:随机剪裁、颜色空间的随机抖动、随机转换为灰度,并且在计算 x 1 x^1 x1 和 x 2 x^2 x2 之前进行随机水平翻转。
因此,现在我们有联合分布
p
A
(
f
1
(
x
1
)
,
f
7
(
x
2
)
)
p_A(f_1(x^1),f_7(x^2))
pA(f1(x1),f7(x2)),并定义边缘分布
p
A
(
f
1
(
x
1
)
)
p_A(f_1(x^1))
pA(f1(x1)) 和
p
A
(
f
7
(
x
2
)
i
j
)
p_A(f_7(x^2)_{i j})
pA(f7(x2)ij),可以重写等式1来包括跨数据增强的预测:
E
(
f
1
(
x
1
)
,
f
7
(
x
2
)
i
j
)
[
E
N
7
[
L
Φ
(
f
1
(
x
1
)
,
f
7
(
x
2
)
i
j
,
N
7
)
]
]
(4)
\underset{\left(f_{1}\left(x^{1}\right), f_{7}\left(x^{2}\right)_{i j}\right)}{\mathbb{E}}\left[\underset{N_{7}}{\mathbb{E}}\left[\mathcal{L}_{\Phi}\left(f_{1}\left(x^{1}\right), f_{7}\left(x^{2}\right)_{i j}, N_{7}\right)\right]\right] \tag 4
(f1(x1),f7(x2)ij)E[N7E[LΦ(f1(x1),f7(x2)ij,N7)]](4)
负样本集合
N
7
N_7
N7 现在从边缘分布
p
A
(
f
7
(
x
2
)
i
j
)
p_A(f_7(x^2)_{i j})
pA(f7(x2)ij) 中取样,
L
Φ
\mathcal{L}_{\Phi}
LΦ 没有变化,其示意图如下:
3.5 Multiscale Mutual Information
另一个对于 DIM 的扩展就是 AMDIM 最大化多个尺度特征之间的互信息。
前面我们一直考虑的都只是 encoder 最后的输出的一维向量 f 1 ( x ) f_1(x) f1(x) 和 中间某一层 7×7 的 feature map 中 ( i , j ) (i,j) (i,j) 位置的图像块 f 7 ( x ) i j f_7(x)_{i j} f7(x)ij 之间的互信息,而作者在这里提出:我们可以考虑最大化 任意两个层的输出的 feature map 中,任意两个位置的图像块块之间的互信息。例如, f 5 ( x ) k l f_5(x)_{k l} f5(x)kl 来自 5×5 维的 feature map 中位置 ( k , l ) (k,l) (k,l) 的块。
因此,我们可以在前面的基础上,构造出任意层任意位置的两个块之间的联合分布,如: p A ( f 5 ( x 1 ) i j , f 7 ( x 2 ) k l ) 、 p A ( f 5 ( x 1 ) i j , f 5 ( x 2 ) k l ) 、 p A ( f 1 ( x 1 ) i j , f 5 ( x 2 ) k l ) p_A(f_5(x^1)_{i j},f_7(x^2)_{k l})、p_A(f_5(x^1)_{i j},f_5(x^2)_{k l})、p_A(f_1(x^1)_{i j},f_5(x^2)_{k l}) pA(f5(x1)ij,f7(x2)kl)、pA(f5(x1)ij,f5(x2)kl)、pA(f1(x1)ij,f5(x2)kl) 等。
我们可以进一步定义(4)式中的损失:
E
(
f
n
(
x
1
)
i
j
,
f
m
(
x
2
)
k
l
)
[
E
N
m
[
L
Φ
(
f
n
(
x
1
)
i
j
,
f
m
(
x
2
)
k
l
,
N
m
)
]
]
(5)
\underset{\left(f_{n}\left(x^{1}\right)_{i j}, f_{m}\left(x^{2}\right)_{k l}\right)}{\mathbb{E}}\left[\underset{N_{m}}{\mathbb{E}}\left[\mathcal{L}_{\Phi}\left(f_{n}\left(x^{1}\right)_{i j}, f_{m}\left(x^{2}\right)_{k l}, N_{m}\right)\right]\right] \tag 5
(fn(x1)ij,fm(x2)kl)E[NmE[LΦ(fn(x1)ij,fm(x2)kl,Nm)]](5)
上式的
N
m
N_m
Nm 表示最上面
m
×
m
m×m
m×m 层的边缘分布
p
A
(
f
m
(
x
2
)
i
j
)
p_A(f_m(x^2)_{i j})
pA(fm(x2)ij) 中一组独立的负样本集合。
在文章中的实验里,作者最大化了 1-to-5、1-to-7、5-to-5 之间的互信息,并对每个正样本对中两个特征的样本位置进行统一采样。
因此,我们再结合数据增强和多尺度之后,得到了 Augmented Multiscale Deep InfoMax(AMDIM)的示意图如下:
3.6 Encoder
编码器主要基于 ResNet 并针对 DIM 做了一些修改,主要是以下两点:
- 控制感受野(receptive field):正样本对中的感受野重叠太多时,任务将变得很容易,模型的性能会变得很差。
- 通过避免 padding 来保持特征分布平稳。
这一部分具体可以参考代码:https://github.com/Philip-Bachman/amdim-public
作者在论文中该出了输入为 128 × 128 时的 Encoder 结构,如下:
- Conv2d(input dim, output dim, kernel width, stride, padding)
- ResBlock(input dim, output dim, kernel width, stride, ndepth)
- 参数 ndf 和 nrkhs 决定了嵌入函数 ϕ n ( f n ) \phi_n(f_n) ϕn(fn) 的编码器的特征维度和输出维度。
- ϕ 7 ( f 7 ) \phi_7(f_7) ϕ7(f7) 和 ϕ 5 ( f 5 ) \phi_5(f_5) ϕ5(f5) 时通过卷积应用一个小的 MLP 来计算的。
3.7 Mixture-Based Representations
现在进一步扩展 AMDIM 来使用基于混合的特征。
对于每一个 antecedent feature f 1 f_1 f1,我们用一个函数 m k m_k mk 计算一组 mixture features { f 1 1 , … , f 1 k } \{f_1^1,\dots,f_1^k\} {f11,…,f1k},即 m k ( f 1 ) = { f 1 1 , … , f 1 k } m_k(f_1)=\{f_1^1,\dots,f_1^k\} mk(f1)={f11,…,f1k}。函数 m k m_k mk 可以使用一个具有单个 ReLU 隐层的全连接网络以及一个 f 1 f_1 f1 和每个 mixture feature f 1 i f_1^i f1i 之间的残差连接 来表示。
当使用 mixture features 时,最大化目标如下:
maximize
f
,
q
E
(
x
1
,
x
2
)
[
1
n
c
∑
i
=
1
n
c
∑
j
=
1
k
(
q
(
f
1
j
(
x
1
)
∣
f
7
i
(
x
2
)
)
s
n
c
e
(
f
1
j
(
x
1
)
,
f
7
i
(
x
2
)
)
+
α
H
(
q
)
)
]
(6)
\underset{f, q}{\operatorname{maximize}} \underset{\left(x^{1}, x^{2}\right)}{\mathbb{E}}\left[\frac{1}{n_{c}} \sum_{i=1}^{n_{c}} \sum_{j=1}^{k}\left(q\left(f_{1}^{j}\left(x^{1}\right) \mid f_{7}^{i}\left(x^{2}\right)\right) s_{n c e}\left(f_{1}^{j}\left(x^{1}\right), f_{7}^{i}\left(x^{2}\right)\right)+\alpha H(q)\right)\right] \tag 6
f,qmaximize(x1,x2)E[nc1i=1∑ncj=1∑k(q(f1j(x1)∣f7i(x2))snce(f1j(x1),f7i(x2))+αH(q))](6)
对于每个数据增强后的样本对
(
x
1
,
x
2
)
(x^1,x^2)
(x1,x2),我们提取
k
k
k 个 mixture features
{
f
1
1
(
x
1
)
,
…
,
f
1
k
(
x
1
)
}
\{f_1^1(x^1),\dots,f_1^k(x^1)\}
{f11(x1),…,f1k(x1)} 和
n
c
n_c
nc 个 consequent features
{
f
7
1
(
x
2
)
,
…
,
f
7
n
c
(
x
2
)
}
\{f_7^1(x^2),\dots,f_7^{n_c}(x^2)\}
{f71(x2),…,f7nc(x2)}。
s
n
c
e
(
f
1
j
(
x
1
)
,
f
7
i
(
x
2
)
)
s_{nce}(f_1^j(x^1),f_7^i(x^2))
snce(f1j(x1),f7i(x2)) 表示
f
1
j
(
x
1
)
f_1^j(x^1)
f1j(x1) 和
f
7
i
(
x
2
)
f_7^i(x^2)
f7i(x2) 之间的 NCE score(3.3节中的计算方法),这个分数给出了公式2中互信息边界的 log-softmax 项,并且我们添加了一个熵最大化项
α
H
(
q
)
\alpha H(q)
αH(q)
实际上,给出通过 k k k 个 mixture features { f 1 1 , … , f 1 k } \{f_1^1,\dots,f_1^k\} {f11,…,f1k} 分配给 consequent feature f 7 i f_7^i f7i 的 k k k 个分数 { s n c e ( f 1 1 , f 7 i ) , … , s n c e ( f 1 k , f 7 i ) } \{s_{nce}(f_1^1,f_7^i),\dots,s_{nce}(f_1^k,f_7^i)\} {snce(f11,f7i),…,snce(f1k,f7i)},我们可以计算 q q q 的最优分布如下:
q
(
f
1
j
∣
f
7
i
)
=
exp
(
τ
s
n
c
e
(
f
1
j
,
f
7
i
)
)
∑
j
′
exp
(
τ
s
n
c
e
(
f
1
j
′
,
f
7
i
)
)
(7)
q\left(f_{1}^{j} \mid f_{7}^{i}\right)=\frac{\exp \left(\tau s_{n c e}\left(f_{1}^{j}, f_{7}^{i}\right)\right)}{\sum_{j^{\prime}} \exp \left(\tau s_{n c e}\left(f_{1}^{j^{\prime}}, f_{7}^{i}\right)\right)} \tag 7
q(f1j∣f7i)=∑j′exp(τsnce(f1j′,f7i))exp(τsnce(f1j,f7i))(7)
其中,
τ
\tau
τ 是一个 temperature parameter,用来控制
q
q
q 的熵,等式7利用了强化学习的思想。给出分数
s
n
c
e
(
f
1
j
,
f
7
i
)
s_{nce}(f_1^j,f_7^i)
snce(f1j,f7i),我们可以使用最大分数的指标定义
q
q
q。但是当
q
q
q 取决于随机分数时,这种选择在期望值上会过分乐观,因为它将偏向于由随机性推高的分数(来自对负样本的取样)。我们不是取一个最大值,而是通过增加熵最大化项
α
H
(
x
)
\alpha H(x)
αH(x) 来鼓励
q
q
q 不那么贪婪。对于公式6中的任何
α
\alpha
α 值,公式7中都存在一个对应的
τ
\tau
τ 值,因此使用公式7计算
q
q
q 可以提供选购对于公式6最佳的
q
q
q。在Soft Q Learning的背景下,这直接与最优玻尔兹曼型策略的制定有关。实际上,我们将
τ
\tau
τ 视为超参数。