引言
2019 年,牛津大学提出了一种无监督,不依赖标签的聚类方法:Invariant Information Clustering (IIC),即根据给定数据对(Data Pair)之间的互信息(Mutual Information, MI)提供端到端的、无标签的、无监督的方式训练神经网络,使其能够直接输出类别标签,从而实现聚类。
原理方法
IIC 建立在一个基本想法上,将单条数据经过简单并且不涉及材料本身畸变的仿射变化后,在变化前后的数据对中,同一个物体的描述应该(或者说必须)是一致的,当然,这里不包括物体上具体的细节。如果定义一个函数映射,将数据映射到某个空间(比如类别),那么只要通过优化,使得同一数据对在映射空间的各自输出能够保持一致就行了。
问题思路
设 \(x, x^{\prime} \in \mathcal{X}\) 是一对数据对,服从分布 \(p(x,x^\prime)\), 即 \(x, x^{\prime} \sim p(x, x^{\prime})\),IIC 的目的是学习得到一个映射 \(\Phi: \mathcal{X} \rightarrow \mathcal{Y}\),能够保持 \(x, x^{\prime}\) 两者之间共性(如含有的同一个物体),而忽略特定的细节(如物体上的具体细节信息),其中 \(\mathcal{X}\) 是样本集合,\(\mathcal{Y} = \{1, \dots,C\}\) 是有限集合。用数学语言描述,\(\Phi\) 可以通过 最大化数据对在映射空间的互信息(MI) 得到,用公式表示为 \[\mathop{max}\limits_{\Phi} \ I(\Phi(x), \Phi(x^{\prime})) \] 通常来说,\(I(x)\) 中已经包含了熵(Entropy),可以避免模型退化(Degeneracy),可以认为,含有熵的模型不至于直接收缩到某一个点上。此处,\(\Phi\) 可以是一个神经网络,论文中使用“瓶颈(Bottleneck)”结构,可用于忽略特定的细节。
数学定义
互信息(MI)是信息论中的基本概念,与之相对的还有自信息(Self-Information)。而熵(Entropy)和相对熵(Relative Entropy, RE)是与之相关且不可或缺的重要基础概念之一。在使用之前,我们来简单回顾一下这些基础概念,参考另一篇文章 机器学习基础(一)概率论第六节(熵与 KL 散度)。
具体方式
论文考虑使用软聚类(soft clustering),因此将输出 \(\Phi(x) \in [0, 1]^C\) 表示成一个离散分布,即 \(p(z=c|x) = {\Phi}_c(x)\),于是一对变量 \(x, x^\prime\) 的输出结果 \(z, z^\prime\) 可以表示成一个联合分布: \[P(z=c, z^\prime=c^\prime|x, x^\prime) = {\Phi}_c(x) \cdot {\Phi}_c(x^\prime) \] 实际上,\(z, z^\prime\) 不是独立的,而且还是强相关的。在数据集(实际处理是 batch)上进行边缘化得到一个联合分布 \(P\), \(P\) 使用矩阵表示,大小为 \([C \times C]\),于是其中元素可以写成 \[\begin{equation} P_{cc^\prime} = \frac{1}{n}\sum_{i=1}^{n}\Phi(x_i)\cdot\Phi({x_i}^\prime)^T \label{matdef} \end{equation} \] 且一般来说将 \(P\) 用 \((P+P^T)/2\) 构造成一个对称矩阵。其中,\(P_c=P(z=c)\) 和 \(P_{c^\prime}=P(z^\prime=c^\prime)\) 能够直接通过矩阵中相应的行或列累加得到。最终,得到互信息(MI)的表达式: \[I(z,z^\prime) = I(P) = \sum_{c=1}^{C}\sum_{c^\prime=1}^{C}P_{cc^\prime} \cdot ln \ \frac{P_{cc^\prime}}{P_{c}P_{c^\prime}} \] 作为目标函数(Objective Function)。
图像聚类
在图像聚类中,考虑对采样 \(x\) 进行随机的扰动(比如平移、旋转,灰度映射等)变化得到 \(x^\prime\),记作 \(x^\prime=gx\),因此将以上 \(x^\prime\) 代替成随机扰动(变换)后的 \(gx\) 即可。
图像分割
在图像分割中,由于需要对每个像素都进行划分,所以要对图像进行分块(patch),并且要利用块之间的空间位置信息。于是,需要给目标函数(Objective Function)增加局部空间不变性(Local Spatial Invariance)。具体的,如果给定一张 RGB 图像 \(x\in \mathbb{R}^{3 \times H \times W}\), \(u \in \Omega = \{1, \ldots, H\} \times \{1, \ldots, W\}\) 表示一个像素位置,\(x_u\) 是以 \(u\) 为中心的一个块(patch)。假设现存在一个 \(t \in T \subset \mathbb{Z}^2\),使得 \(u+t\) 为 \(u\) 的领域,那么可以构成一对数据 \(\Phi(x_u), \Phi(x_{u+t})\),而它们可以直接从 \(\eqref{matdef}\) 所表示的矩阵中按列读取,因为自始至终都只用了一个神经网络映射 \(\Phi\)。
记 \(\Phi(x_u) = \Phi_u(x)\),那么它对应的另一个数据应为 \(\Phi_{g(u)}(gx)\),因为坐标也因为随机扰动已经变化了。如果以坐标变化前参考,那么可以写成 \(\Phi_{g(u)}(gx) = {\big [ g^{-1} \Phi(gx) \big ]}_u\)。因此,\(\Phi_u(x)\) 和 \({\big [ g^{-1} \Phi(gx) \big ]}_u\) 构成一对数据对,也就是说只要在 \(\Phi_u(gx)\) 的基础上再进行一次 \(g^{-1}\)逆变换,就可以构成原 \(\Phi_u(x)\) 的数据对。于是,现在给出图像分割的目标函数: \[\begin{equation} \begin{split} \frac{1}{|T|}\sum_{t \in T} I(\Phi_u(x);g^{-1}\Phi_u(gx)) &= \frac{1}{|T|}\sum_{t \in T} I(P_t) \\ &= \frac{1}{|T|}\sum_{t \in T} I(\frac{1}{n|G||\Omega|}\sum_{i=1}^{n}\sum_{g \in G}\sum_{u \in \Omega}\Phi_u(x_i) \cdot \big [g^{-1} \Phi(gx_i) \big ]^{T}_{u+t}) \end{split} \label{sodef} \end{equation} \] 其中,第一个求和符号表示对 \(i=1,\ldots,n\) 个图像(实际指得是 batch)进行求和,第二个求和符号表示对于任意的随机变化进行求和,第三个求和符号表示对每张图像中的块进行求和。论文原文中,把最后一个求和部分看成了 Convolution(为什么?)。然后根据最大化目标函数,求解最优的 \(\Phi\)。
总结
IIC 最大的优点之一应该就是避免了大量的数据标注问题,能够提供一个无监督的方式对图像进行语义级别的分割。作者很巧妙的使用了随机变换生成的数据对中两者的互信息(MI),似乎更像是一种“差分”的方式。其中,作者还提到该模型能够很好避免模型退化。论文的想法非常值得学习,对于不同分布的相似程度的评价以及映射函数,似乎还能有更好的优化,不知道增加一些惩罚项能否进一步增强模型能力,另外使用更强的映射转换模型(transformer)是否也能够进一步优化?
论文地址:https://arxiv.org/abs/1807.06653
代码地址:https://github.com/xu-ji/IIC