使用监督学习训练图像聚类模型
大多数机器学习模型使用监督学习,这意味着它们是在标注数据上训练的,而获取标注数据成本高昂且耗时。无监督学习的主要方法是聚类,即根据显著特征将数据点分组。每个聚类代表某个类别,例如同一个人的照片或同一物种的动物照片。
为了确定聚类之间的边界,聚类算法通常依赖启发式方法,例如聚类中心之间的阈值距离或聚类分布的形状。在一篇提交至国际计算机视觉大会的论文中,我们提出从数据中学习如何绘制边界。
我们首先使用图表示视觉数据,然后使用图神经网络生成图节点的向量表示。到目前为止,我们遵循了先前的工作。然而,我们不依赖启发式方法,而是使用标注数据来学习如何聚类向量,并关键地决定这些聚类的细粒度程度。我们将这些标注数据称为元训练数据,因为目标是学习通用聚类技术,而不是特定的分类模型。
我们特别提出了一种层次图神经网络,它通过在图的节点之间添加边来创建聚类,然后在聚类之间添加边以创建更大的聚类,如此迭代,直到确定不再需要添加边为止。
方法概述
在我们的论文中,我们研究了训练模型以聚类与元训练数据相似但类别不重叠的视觉数据的情况。例如,元训练数据可能是电影明星的面部,而目标应用是聚类政治家、运动员或其他公众人物的面部。
我们过程的第一步是使用元训练数据构建监督分类器:如果元训练数据是电影明星的面部,分类器会用电影明星的名字标记输入图像。分类器是一个编码器-解码器模型:编码器生成输入的固定长度向量表示(特征向量),解码器使用该向量预测标签。然而,一旦训练了分类器,我们在后续过程中仅使用编码器。
特征向量定义了多维空间中的点。基于向量的位置,我们构建一个图,其中每个节点代表一张图像,每个图像在特征空间中的k个最近邻在图中连接到它(与它共享边)。该图将作为聚类模型的输入,聚类模型也是一个编码器-解码器模型。编码器是图神经网络,基于节点的特征向量及其连接节点的特征向量生成图中每个节点的向量表示。我们称之为节点嵌入。
聚类模型
我们采用层次方法进行聚类。基于节点嵌入,聚类模型预测节点之间的边。一个聚类被定义为一组节点,其中每个节点至少与组中的一个其他节点共享一条边,且没有节点与组外的任何节点共享边。
请注意,聚类模型的目标不仅仅是复制最近邻图,而是链接代表相同数据类型的节点。最近邻链接对于预测聚类链接是有用的,但它们并不完全相同。
在第一次处理数据后,我们将每个聚类聚合成一个代表性的“超节点”,并重复整个过程。也就是说,我们在每个超节点与其k个最近邻之间创建边,将生成的图通过相同的图神经网络,并基于超节点嵌入预测边。我们重复此过程,直到聚类模型预测节点之间没有边。
我们在两个不同的目标上训练聚类模型。一是正确预测节点之间的链接,其中正确的链接是在元训练数据中挑选出两个相同数据类型的代表(例如,同一演员的两张照片)。我们还训练模型正确预测给定图邻域中特定数据类型的密度。也就是说,对于每个节点,模型应预测附近相同数据类型邻居的比例。
过去关于聚类的研究表明,考虑数据密度可以提高结果。然而,以前链接预测和数据密度预测是由单独的模型处理的。通过使用单个模型联合预测两者,我们显著提高了计算效率。我们相信这种结合也有助于提高准确性。
我们方法的另一个新颖之处在于,由于我们的分层处理方案,我们在整个输入图上优化聚类。先前的方法会首先将图划分为子图,然后在子图内执行推理。这阻止了自然的并行化(运行时高效),并限制了图中信息流动的有效性。全图范围处理是我们模型效率提高的另一个原因。
在实验中,我们考虑了两组不同的元训练数据。一组由人类面部特写组成,另一组由特定动物物种的图像组成。我们在两个其他数据集上测试了在人类面部上训练的模型,这些数据集的类别与元训练集的类别零重叠或重叠非常少——0%和不到2%。我们在先前未见过的物种数据集上测试了在动物物种上训练的模型。在两个模型和三个测试集上,我们相对于先前基于图神经网络的聚类模型和无监督聚类方法的平均改进分别为49%和47%。
在正在进行的工作中,我们正在研究训练更通用聚类模型的可能性,该模型在推理时的性能将更可跨不同数据类型转移——例如,准确聚类面部和动物物种。
致谢:Tianjun Xiao, Yongxin Wang, Yuanjun Xiong, Wei Xia, David Wipf, Zhang Zheng, Stefano Soatto