Zhan, Yu-Wei, et al. “Polish: Adaptive online cross-modal hashing for class incremental data.” Proceedings of the ACM Web Conference 2024. 2024.
在大规模跨模态检索任务中(如从图片中检索相关文本,或从文本中检索匹配的图片),如何高效生成能够表达语义关系的哈希码是一个关键问题。这篇博客将详细介绍一篇发表在 WWW 会议,关于跨模态哈希学习的文章。其提出的 POLISH 方法,通过结合类别语义嵌入、Hadamard 矩阵优化和哈希码学习,解决了跨模态检索中的效率和扩展性问题。
文章目录
一、背景与问题
跨模态检索任务指的是在不同模态(如文本和图片)之间实现高效匹配。由于数据量巨大,直接存储高维特征并逐一计算相似性代价高昂,因此需要将数据映射到低维二进制哈希码,通过哈希码的 Hamming 距离 快速计算相似性。
然而,传统方法在生成哈希码时面临以下难点:
- 语义保持:如何保证生成的哈希码能够表达语义相似性?(同类别的数据哈希码应尽量接近,不同类别间应尽量远)。
- 类别扩展能力:当有新类别加入时,是否需要重新训练整个模型?
- 计算效率:如何在保证语义一致性的同时高效生成哈希码?
为了解决这些问题,POLISH 方法从类别的语义嵌入出发,通过结合 Hadamard 矩阵 和优化目标函数,提出了一种高效、灵活的跨模态哈希学习方法。
二、POLISH 方法简介
POLISH 方法的核心是:利用类别的语义嵌入,通过优化生成的哈希码,使得哈希码既能表达类别的语义关系,又满足平衡性和区分性要求。其主要包括以下四个步骤:
- 类别嵌入生成与优化:生成类别的语义嵌入,并利用 Hadamard 矩阵优化嵌入。
- 哈希码学习:通过优化损失函数生成哈希码。
- 类别扩展:加入新类别时,无需重新训练整体模型,仅需生成新类别的嵌入。
- 哈希检索:通过 Hamming 距离实现高效检索。
接下来,我们从技术细节层面深入剖析每个步骤。
三、方法详解
3.1 类别嵌入生成与优化
(1) 类别嵌入的生成
类别嵌入是通过预训练语言模型(如 BERT 或 Word2Vec)生成的高维向量。这些向量能够表达类别之间的语义关系,例如“猫”和“狗”的嵌入距离较近,而“猫”和“汽车”的嵌入距离较远。
(2) Hadamard 矩阵优化
虽然语言模型生成的类别嵌入保留了语义关系,但直接使用可能导致类别间的干扰。为此,POLISH 引入了 Hadamard 矩阵 来优化嵌入。
Hadamard 矩阵是一种正交矩阵,具有以下性质:
- 每一行与每一列都互相正交,能够减少类别间的冲突。
- 每个元素仅为 + 1 +1 +1 或 − 1 -1 −1,有助于生成平衡的二进制哈希码。
通过将类别嵌入 E E E 与 Hadamard 矩阵 H H H 相乘,获得优化后的类别嵌入:
E o p t i m i z e d = E × H E_{optimized} = E \times H Eoptimized=E×H
优化后的嵌入既保留了语义信息,又具有数学上的正交性和平衡性,适合用于后续的哈希码学习。
3.2 哈希码学习
(1) 哈希码生成的目标
哈希码学习的目标是通过输入样本特征(如图片或文本)生成一个固定长度的二进制向量(如
[
1
,
0
,
1
,
1
,
0
,
1
]
[1, 0, 1, 1, 0, 1]
[1,0,1,1,0,1])。为此,定义了一个从输入特征到哈希码的映射函数:
h
=
s
i
g
n
(
f
(
x
;
θ
)
)
h = sign(f(x; θ))
h=sign(f(x;θ))
其中:
- x x x 是输入样本的特征(如图片特征或文本特征)。
- f ( x ; θ ) f(x; θ) f(x;θ) 是一个可微的连续函数(如神经网络),通过优化学习参数 θ θ θ。
- s i g n ( ⋅ ) sign(·) sign(⋅) 是符号函数,将连续值二值化(正数映射为 1,负数映射为 0)。
(2) 优化损失函数
为了生成语义一致的哈希码,POLISH 定义了一个综合损失函数,包括以下部分:
-
平衡性损失:
控制生成的哈希码中 1 1 1 和 0 0 0 的比例接近,避免信息分布不均。
L b a l a n c e = ∑ i = 1 n ∣ 1 m ∑ j = 1 m h i j ∣ L_{balance} = \sum_{i=1}^n \left| \frac{1}{m} \sum_{j=1}^m h_{ij} \right| Lbalance=i=1∑n m1j=1∑mhij
其中, h i j h_{ij} hij 是第 i i i 个样本的第 j j j 位哈希码, m m m 是哈希码长度。 -
相似性损失:
保证同类别样本的哈希码之间的 Hamming 距离尽量小,不同类别样本的 Hamming 距离尽量大。
L s i m i l a r i t y = ∑ i , j S i j ⋅ ∣ ∣ h i − h j ∣ ∣ H L_{similarity} = \sum_{i,j} S_{ij} \cdot ||h_i - h_j||_H Lsimilarity=i,j∑Sij⋅∣∣hi−hj∣∣H
其中:- S i j S_{ij} Sij 表示样本 i i i 和样本 j j j 的语义相似性(如是否属于同一类别)。
- ∣ ∣ h i − h j ∣ ∣ H ||h_i - h_j||_H ∣∣hi−hj∣∣H 表示哈希码的 Hamming 距离。
-
类别嵌入约束:
保证生成的哈希码与类别嵌入一致,样本哈希码 h h h 应尽量接近其类别嵌入 E [ y ] E[y] E[y]。
L e m b e d = ∑ i = 1 n ∣ ∣ h i − E o p t i m i z e d [ y i ] ∣ ∣ 2 L_{embed} = \sum_{i=1}^n ||h_i - E_{optimized}[y_i]||^2 Lembed=i=1∑n∣∣hi−Eoptimized[yi]∣∣2
最终的损失函数为:
L
=
L
b
a
l
a
n
c
e
+
L
s
i
m
i
l
a
r
i
t
y
+
L
e
m
b
e
d
L = L_{balance} + L_{similarity} + L_{embed}
L=Lbalance+Lsimilarity+Lembed
通过最小化这个损失函数,映射函数 f ( x ; θ ) f(x; θ) f(x;θ) 被不断优化,最终生成符合语义关系的哈希码。
3.3 类别扩展
在实际场景中,可能会有新类别不断加入。POLISH 提供了一种高效的类别扩展机制:
- 生成新类别的语义嵌入:通过语言模型提取新类别的嵌入。
- Hadamard 优化:将新类别嵌入与已有嵌入结合,并利用 Hadamard 矩阵进行优化。
- 无需重新训练模型:只需更新类别嵌入即可,无需重新优化整个哈希码映射函数。
3.4 哈希检索
在完成哈希码生成后,检索过程非常高效:
- 将查询样本生成哈希码。
- 计算查询哈希码与数据集中所有哈希码的 Hamming 距离。
- 返回 Hamming 距离最小的样本作为检索结果。
由于 Hamming 距离的计算非常简单(基于二进制 XOR 操作),整个检索过程可以在大规模数据集上快速完成。
四、总结
POLISH 方法通过结合语义嵌入和 Hadamard 矩阵优化,提出了一种高效、灵活的跨模态哈希学习框架。其主要特点包括:
- 语义一致性:利用语言模型生成类别嵌入,保证哈希码能够表达语义关系。
- 数学优化:通过 Hadamard 矩阵增强类别嵌入的正交性和平衡性。
- 高效检索:生成紧凑的二进制哈希码,支持快速检索。
- 类别扩展性:无需重新训练模型即可支持新类别。
该方法在跨模态检索中展现了优异的性能,适用于大规模、多类别场景。

758

被折叠的 条评论
为什么被折叠?



