“基于汉明子空间学习的部分哈希码的更新”论文梗概,以便自己对该论文做相关回顾
摘要
这篇论文主要是应对哈希码的更新,由于当前大量社交数据的哈希在线更新变得非常耗时,而提出的一种加快哈希更新方法,叫汉明子空间学习(Hamming Subspace Learning)HSL。HSL的主要动机是通过选择具有代表性的哈希方法,从高维汉明空间中生成低维的汉明子空间,通过使用HSL,希望能提高所有样本更新二进制码的速度。这个汉明子空间主要是基于贪心选择策略(greedy selection strategy)和分布式保存汉明学习子空间(the Distribution Preserving Hamming Subspace learning)来设计的一个新颖的损失函数。
关键词:汉明子空间、哈希码更新、二进制编码
介绍
虽然哈希技术在许多方面做的很成功,但在更新上的花销依然存在一个很大的问题。
依赖数据的哈希(DDH)众所周知在检索效果上要比数据独立哈希的效果好。然而,对于流媒体数据,哈希模型。然而,对于流数据,应修改DDH的哈希模型以适应新的即将到来的数据的分布,这被称为在线更新。哈希方法的在线更新包含两个部分:1、哈希方法更新,2、重新生成所有样本的二进制码。前一部分的时间主要涉及新来的数据的数量和一些在线的哈希模型,已经提出减少在培训时间。大量的样本容量和高维的特征已经警示我们要减小更新二进制码的时间。
我们希望更新很少的哈希方法和位数,而不是全部,这样将在在线更新的过程中减小时间的花销。我们将使用汉明子空间学习技术(Hamming Subspace Learning :HSL)技术实现局部哈希更新(Partial Hash Update)。这个技术的基本方法就是从高维的汉明空间生成一个汉明信息子空间,如下图所示:
为了表现HSL,我们使用一个贪婪汉明子空间学习框架,使用一个决策孙淑函数来选择优化哈希方法。基于这个框架,提出了分布式保留汉明子空间学习(DHSL:Distribution preserving Hamming Subspace Learning),可被视为HSL技术的一种有效特殊情况。DHSL使用优化方法子集和位初始化,来使用新来的样本更新它们。
此外,我们光差到HSL能作为哈希方法的有效部分。在哈希模型中,HSL能从预训练多候选方法中选择一个数字来优化哈希方法。基于这个动机,提出了一个基于哈希方法的汉明子空间(H2S),而且它的性能也能从优化分析和实验结果中体现出来。
这篇文章的主要贡献:1、首次提出了对于提高更新哈希码速度的部分哈希更新的方法;2、要部分更新,提出了一个简单的框架来学习一个汉明子空间,基于这个框架,我们提出了分布式保存汉明子空间的学习方法;3、基于DHSL,提出了一个叫H2S的哈希方法。
近期工作
符号
B
B
B:矩阵
B
i
B_i
Bi:矩阵的行
B
(
j
)
B_{(j)}
B(j):矩阵的列
B
i
j
B_{ij}
Bij:矩阵位置
x
x
x:向量
x
i
x_i
xi:向量的元素
X
=
{
x
i
}
i
=
1
n
∈
R
n
×
M
X=\{x_i\}_{i=1}^n\in R^{n×M}
X={xi}i=1n∈Rn×M:表示在输入特征空间的训练样本
B
h
=
{
b
i
h
}
i
=
1
n
∈
{
−
1
,
1
}
n
×
D
B^h=\{b_i^h\}_{i=1}^n\in \{-1,1\}^{n×D}
Bh={bih}i=1n∈{−1,1}n×D:表示在汉明空间中的样本二进制码
B
l
=
{
b
i
l
}
i
=
1
n
∈
{
−
1
,
1
}
n
×
D
B^l=\{b_i^l\}_{i=1}^n\in \{-1,1\}^{n×D}
Bl={bil}i=1n∈{−1,1}n×D:是低维二进制码
M
M
M:样本原始特征的维数
D
D
D:高维二进制码的长度
d
d
d:低维二进制码的长度
∥
⋅
∥
\|\centerdot\|
∥⋅∥:F范数
s
g
n
(
⋅
)
sgn(\centerdot)
sgn(⋅):元素符号函数
d
i
a
g
(
⋅
)
diag(\centerdot)
diag(⋅):对角矩阵运算符
部分哈希码更新
如图所示
哈希码的更新分为两个部分:1、哈希方法更新;2、二进制码的更新。
T
f
T_f
Tf表示更新哈希方法的时间、
T
b
T_b
Tb二进制位数、
对于一些在线哈希方法,
T
f
T_f
Tf只和流数据的数量有关,并且这些方法经常关注保存时间
T
f
T_f
Tf.
然而,样本空间的数量
n
n
n会随着新进来的样本数量增加,因此,当数据维度超过百万时,
T
b
T_b
Tb会很耗时,实验中发现,更新二进制码的花销是很昂贵的,为了减少
T
b
T_b
Tb的时间,我们希望能选择部分哈希方法和位数,当新的样本输入时,汉明子空间学习并且更新它们,如下图可知,当我们使用一般的哈希方法将会节省一般的时间
基于这个动机,列出了更新流程的主要步骤:
1、计算HSL的选择器
s
s
s
2、通过在线更新更新选择方法
3、通过更新方法更新选择位数
对于更新方法,我们应用一些学习方法来提出HSL框架,比如,在线学习(online learning),增量学习(incremental learning),提供了更多扩展更新选择位。
A. 通过汉明子空间学习的部分更新(Partial Update with Hamming Subspace Learning(HSL))
一个在汉明子空间上学习的简单贪婪哈希函数的选择方法:
b
i
h
=
h
(
x
i
)
=
s
g
n
(
W
h
T
x
i
)
b_i^h = h(x_i) = sgn(W^{hT}x_i)
bih=h(xi)=sgn(WhTxi),
其中:
W
h
∈
R
M
×
D
W^h\in R^{M×D}
Wh∈RM×D是映射
{
w
i
}
i
=
1
D
\{w_i\}_{i=1}^D
{wi}i=1D的矩阵范式,学习汉明子空间的目标是生成映射:
W
l
=
W
h
d
i
a
g
(
s
)
W^l=W^h diag(s)
Wl=Whdiag(s),其中
s
∈
{
0
,
1
}
1
×
D
s\in\{0,1\}^{1×D}
s∈{0,1}1×D是一个向量选择器。
L
(
⋅
)
L(\centerdot)
L(⋅):损失函数
min
s
L
(
s
g
n
(
W
l
T
X
)
)
,
s
∈
{
0
,
1
}
1
×
D
\min_s L(sgn(W^{lT}X)),s\in \{0,1\}^{1×D}
minsL(sgn(WlTX)),s∈{0,1}1×D:汉明子空间学习
其中:
L
(
s
g
n
(
W
l
T
X
)
)
=
L
(
s
g
n
(
(
W
h
d
i
a
g
(
s
)
)
T
X
)
)
=
L
(
d
i
a
g
(
s
)
s
g
n
(
W
h
T
X
)
)
=
L
(
d
i
a
g
(
s
)
B
h
)
.
L(sgn(W^{lT}X)) = L(sgn((W^h diag(s))^T X))\\ =L(diag(s)sgn(W^{hT}X))\\ = L(diag(s)B^h).
L(sgn(WlTX))=L(sgn((Whdiag(s))TX))=L(diag(s)sgn(WhTX))=L(diag(s)Bh).
因此,为了解决上述目的函数,我们提出了一个简单的贪婪汉明子空间学习方法来计算
s
s
s。简略概括如下:
1、给一个低维度汉明子空间的维度
d
d
d且令集合
s
(
0
)
s^{(0)}
s(0)为零矩阵;
2、设
s
k
s_k
sk,是的
L
(
d
i
a
g
(
s
)
B
h
)
L(diag(s)B^h)
L(diag(s)Bh)最小化,令
s
(
0
)
s^{(0)}
s(0)初始值为1
∂
L
(
d
i
a
g
(
s
(
t
−
1
)
)
B
h
)
∂
s
k
\frac{\partial L(diag(s^{(t-1)})B^h)}{\partial s_k}
∂sk∂L(diag(s(t−1))Bh):代表每一个元素
s
s
s的分数。在每一次迭代里,我们选择最高得分的那个,这个简单的算法能简单的扩展,并且能使用一些损失函数。
B.分布式HSL存储
对于HSL,提出了一个分布式保存的损失函数,动机是选择能够在汉明空间下保存分布式数据的哈希函数。
HSL的哈希
实验结果
结论
ps:欢迎小伙伴们访问我的个人主页,并与我交流哦!