《SCRATCH: A Scalable Discrete Matrix Factorization Hashing for Cross-Modal Retrieval》(2018 ACM)
这篇文章提出了一种新的跨模态检索方法:SCRATCH。这是一种有监督的哈希方法,主要是针对损失函数和迭代优化的环节进行改进,以期减少构造哈希码过程中产生的量化误差,得到更高的精确度。
SCRATCH方法首先用CMF(集合矩阵分解)技术将原始特征映射到公共核空间中。对于每一种模态的数据,都有这样一个目标函数:
X代表第t种模态的数据,U和V两个矩阵的乘积则是投影到公共子空间之后的特征。
在原始空间中,一个实例的不同表现形式共享相同的语义标签。因此,可以从“把映射后的特征回归到类别标签当中”的角度出发,来确保对于同一实例的不同表现形式而言,所学习到的特征和类别标签具有一致性。目标函数如下:
其中L是ground-truth标签矩阵,G是投影矩阵。
从原始特征生成二进制码的过程中,又涉及到以下目标函数:
其中B表示哈希码,R是一个正交旋转矩阵,它可以使优化问题在训练的过程中保持离散,并且可以直接生成离散的二进制码,由此可以避免像已有的一些松弛方法中产生的比较大的量化误差,从而提高精确度。
此外,为了保证同一实例的不同模态的数据可以映射得到相同的潜在语义表示,构造了这样一个目标函数:
最后,将上述四个损失函数通过四个参数合并成一个目标函数:
SCRATCH方法在优化部分也提出了改进。以往的部分方法采用了离散循环坐标下降法来保持离散约束并逐位解决优化问题,但逐位优化的方案非常耗时。因此SCRATCH方发采用交替优化算法,先给B,R,U,V,G和P分别随机地赋予一个初始值,然后通过下面六个公式逐个优化每一个参数(优化某一个参数时,固定其他参数不变)。
在实验部分,文章将提出的SCRATCH方法和已有的8种最先进的哈希方法分别在Wiki、MIRFlickr-25k和NUS-WIDE三个大型数据集上进行了比较,评估指标采用了MAP精度值、TOP-N曲线和PR曲线。下面是在Wiki上的实验结果:
其余两个数据集上的实验结果与wiki相似。
从实验结果中可以看出,提出的SCRATCH方法始终是优于另外八种哈希方法的。不仅如此,SCRATCH在码长为8bit的情况下,精度仍远远高于除DCH之外的所有方法,这体现了SCRATCH方法在节省空间上的巨大优势。
另外,从TOP-N曲线中可以发现,在N值较小的情况下,SCRATCH的性能比其他方法要好得多。这也就是说,当N值较小时,SCRATCH可以返回更多的相关样本。这对于跨模态检索而言是一个很重要的优势。
文章中还对时间复杂度进行了相关的实验和分析:
这是在MIRFlikr-25k上的实验结果。可以看出,随着码长的增加,SCRATCH的训练时间并不会显著增加,检索效率远远优于除CMFH以外的所有方法。这里,由于CMFH是一种无监督的方法,所以它比SCRATCH更快。但是根据前面的表格来看,它的检索精度远不如SCRATCH。因此从整体考虑,SCRATCH效率最高,且可以从小规模数据集扩展到大型数据集上。
总结
如文章所述,SCRATCH是一种浅层哈希方法,且在已有的浅层方法中效果十分出色。如果能够将文章中提出的方法应用到深层跨模态检索模型当中,想必能获得更加优良的性能。
不过话说回来,这篇文章的重点在于介绍他们独特的损失函数和优化方案,至于具体应用在哪里、用浅层还是深层模型等等就看具体问题和需求了。