前言
如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
MIPS 问题即在一个向量集合
S
\mathcal{S}
S 中,找到一个与查询向量
q
q
q 内积最大的向量
z
z
z,即:
z
=
arg
max
x
∈
S
x
⊤
q
.
z=\mathop{\arg \max}\limits _{x \in \mathcal{S}} x^\top q.
z=x∈Sargmaxx⊤q.
这是一个非常困难的问题,本文罗列了部分与其相关的资料。
Background
首先介绍一下局部敏感哈希 (Locality Sensitive Hashing, LSH),其是一个函数族,其中的函数能使相似的元素经过映射后,有较高的碰撞概率,具体定义如下:
- A family
H
\mathcal{H}
H is called
(
S
0
,
c
S
0
,
p
1
,
p
2
)
\left(S_0, c S_0, p_1, p_2\right)
(S0,cS0,p1,p2)-sensitive if, for any two point
x
,
y
∈
R
D
x, y \in \mathbb{R}^D
x,y∈RD,
h
h
h chosen uniformly from
H
\mathcal{H}
H satisfies the following:
- if Sim ( x , y ) ≥ S 0 \operatorname{Sim}(x, y) \geq S_0 Sim(x,y)≥S0 then Pr H ( h ( x ) = h ( y ) ) ≥ p 1 \operatorname{Pr}_{\mathcal{H}}(h(x)=h(y)) \geq p_1 PrH(h(x)=h(y))≥p1;
- if Sim ( x , y ) ≤ c S 0 \operatorname{Sim}(x, y) \leq c S_0 Sim(x,y)≤cS0 then Pr H ( h ( x ) = h ( y ) ) ≤ p 2 \operatorname{Pr}_{\mathcal{H}}(h(x)=h(y)) \leq p_2 PrH(h(x)=h(y))≤p2.
其中 Sim ( x , y ) \operatorname{Sim}(x,y) Sim(x,y) 为两个点的相似度,当 p 1 > p 2 p_1>p_2 p1>p2 且 c < 1 c<1 c<1 时, h ∈ H h\in \mathcal{H} h∈H 可以做到高效的基于 Sim ( ⋅ , ⋅ ) \operatorname{Sim}(\cdot, \cdot) Sim(⋅,⋅) 度量的近似近邻查搜。
简单说就是,LSH 是一种哈希技术,其可以在某些 Sim ( ⋅ , ⋅ ) \operatorname{Sim}(\cdot, \cdot) Sim(⋅,⋅) 度量上为查询向量 x x x 实现高效的查搜,例如:
- [SGG04 - Mayur Datar] 实现了 L p ( p ∈ ( 0 , 2 ] ) L_p \ (p\in (0,2]) Lp (p∈(0,2]) 距离下的高效查搜;
- [STOC02 - Moses S. Charikar] 实现了余弦相似度下的高效查搜。
L2LSH
L2LSH 是 LSH 基于欧式距离的一种实现,具体如下:
SRP
SRP (signed random projections) 是 LSH 基于余弦相似度的一种实现,具体如下:
- 生成随机向量 a a a,其中 a i ∼ N ( 0 , 1 ) a_i\sim \mathcal{N}(0,1) ai∼N(0,1);
- 采用如下哈希函数:
h S i g n ( x ) = s i g n ( a ⊤ x ) = { 1 if a ⊤ x ≥ 0 0 if a ⊤ x < 0 , h^{Sign}(x)=sign(a^\top x)= \begin{cases}1 & \text { if } a^\top x \geq 0 \\ 0 & \text { if } a^\top x<0\end{cases}, hSign(x)=sign(a⊤x)={10 if a⊤x≥0 if a⊤x<0, - 对应下述碰撞概率(
1
−
cos
−
1
(
z
)
1-\cos^{-1}(z)
1−cos−1(z) 关于
z
∈
[
−
1
,
1
]
z\in [-1,1]
z∈[−1,1] 单调递增):
P r ( h S i g n ( x ) = h S i g n ( y ) ) = 1 − 1 π cos − 1 ( x T y ∥ x ∥ ∥ y ∥ ) . Pr\left(h^{Sign}(x) = h^{Sign}(y)\right)=1-\frac{1}{\pi} \cos ^{-1}\left(\frac{x^T y}{\|x\|\|y\|}\right). Pr(hSign(x)=hSign(y))=1−π1cos−1(∥x∥∥y∥xTy).
NIPS14 - ALSH
此篇文章首先证明了「LSH 系列无法求解 MIPS」,随后对 LSH 进行扩展,得到 ALSH (Asymmetric Locality Sensitive Hashing),其定义为:
- A family
H
\mathcal{H}
H, along with the two vector functions
Q
:
R
D
↦
R
D
′
Q: \mathbb{R}^D \mapsto \mathbb{R}^{D^{\prime}}
Q:RD↦RD′ (Query Transformation) and
P
:
R
D
↦
R
D
′
P: \mathbb{R}^D \mapsto \mathbb{R}^{D^{\prime}}
P:RD↦RD′ (Preprocessing Transformation), is called
(
S
0
,
c
S
0
,
p
1
,
p
2
)
\left(S_0, c S_0, p_1, p_2\right)
(S0,cS0,p1,p2)-sensitive if, for a given
c
c
c-NN instance with query
q
q
q and any
x
x
x in the collection
S
\mathcal{S}
S, the hash function
h
h
h chosen uniformly from
H
\mathcal{H}
H satisfies the following:
- if Sim ( q , x ) ≥ S 0 \operatorname{Sim}(q, x) \geq S_0 Sim(q,x)≥S0 then Pr H ( h ( Q ( q ) ) ) = h ( P ( x ) ) ) ≥ p 1 \left.\operatorname{Pr}_{\mathcal{H}}(h(Q(q)))=h(P(x))\right) \geq p_1 PrH(h(Q(q)))=h(P(x)))≥p1;
- if Sim ( q , x ) ≤ c S 0 \operatorname{Sim}(q, x) \leq c S_0 Sim(q,x)≤cS0 then Pr H ( h ( Q ( q ) ) = h ( P ( x ) ) ) ≤ p 2 \operatorname{Pr}_{\mathcal{H}}(h(Q(q))=h(P(x))) \leq p_2 PrH(h(Q(q))=h(P(x)))≤p2.
之后该篇文章指出若 H \mathcal{H} H 满足上述性质,则对于查询 q q q,其可以做到:
- 若 S \mathcal{S} S 中存在 x x x 满足 Sim ( x , q ) ≥ S 0 \operatorname{Sim}(x,q)\geq S_0 Sim(x,q)≥S0,则可以高概率找到满足 Sim ( x , q ) ≥ c S 0 \operatorname{Sim}(x,q)\geq cS_0 Sim(x,q)≥cS0 的 x x x;
- 其中每次查询所需时间为 O ( n ρ log n ) O(n^\rho \log n) O(nρlogn),总的空间复杂度为 O ( n 1 + ρ ) O(n^{1+\rho}) O(n1+ρ), ρ = log p 1 / log p 2 \rho=\log p_1 / \log p_2 ρ=logp1/logp2.
随后,基于 ALSH 的定义,此篇文章将内积度量转化为了欧式距离的度量,具体如下:
- 将
S
\mathcal{S}
S 中的
x
x
x 通过下述转换,实现
∥
x
i
∥
2
≤
U
<
1
\|x_i\|_2\leq U<1
∥xi∥2≤U<1:
S ( x ) = U M × x ; M = max x i ∈ S ∥ x i ∥ 2 ; S(x)=\frac{U}{M} \times x ; \quad M=\max _{x_i \in \mathcal{S}}\left\|x_i\right\|_2; S(x)=MU×x;M=xi∈Smax∥xi∥2; - 随后令 ∥ q ∥ 2 = 1 \|q\|_2=1 ∥q∥2=1,由于 q q q 是查询向量,因此该假设也可通过转换实现;
- 最后通过下述操作,将 q ⊤ x q^\top x q⊤x 转化为了 ∥ Q ( q ) − P ( x ) ∥ \|Q(q)-P(x)\| ∥Q(q)−P(x)∥,由此可通过之前的 L2LSH 进行查搜。
通过转换,MIPS 问题可以通过 L2LSH 进行解决,具体的理论保障如下:
在 worst case 下,每次查询时间复杂度为
O
(
n
ρ
log
n
)
O(n^\rho \log n)
O(nρlogn),
ρ
\rho
ρ 定义如下:
ρ
=
log
F
r
(
1
+
m
/
4
−
2
S
0
+
U
2
m
+
1
)
log
F
r
(
1
+
m
/
4
−
2
c
S
0
)
.
\rho=\frac{\log F_r\left(\sqrt{1+m / 4-2 S_0+U^{2^{m+1}}}\right)}{\log F_r\left(\sqrt{\left.1+m / 4-2 c S_0\right)}\right.}.
ρ=logFr(1+m/4−2cS0)logFr(1+m/4−2S0+U2m+1).
其中 U , m , r , S 0 , c U,m,r,S_0,c U,m,r,S0,c 为超参,在实践中,一般设置 m = 3 , U = 0.83 , r = 2.5 m=3,U=0.83,r=2.5 m=3,U=0.83,r=2.5 或者令 S 0 = 0.9 U or 0.8 U S_0=0.9U \text{ or } 0.8U S0=0.9U or 0.8U,然后对 m , U , r m,U,r m,U,r 进行网格搜索,目标是最小化 ρ \rho ρ。
arXiv14 - Sign-ALSH
ALSH 通过对查询 q q q 和 S \mathcal{S} S 中元素 x x x 采用不同的变换,实现了内积到欧式距离的转换,该篇文章采用同样的思路,但通过不同的变换形式,得到了 Sign-ALSH,实现内积到余弦相似度的转换。此篇文章从实验方面指出 Sign-ALSH 比 ALSH 更有效。
Sign-ALSH 的具体步骤如下:
- 类似于 ALSH 中的方式,令 ∥ q ∥ 2 = 1 , ∥ x i ∥ 2 ≤ U < 1 , ∀ x i ∈ S \|q\|_2=1, \|x_i\|_2\leq U<1,\forall x_i\in \mathcal{S} ∥q∥2=1,∥xi∥2≤U<1,∀xi∈S,
- 定义两个向量映射函数,
P
:
R
D
↦
R
D
+
m
P: \mathbb{R}^D \mapsto \mathbb{R}^{D+m}
P:RD↦RD+m 与
Q
:
R
D
↦
R
D
+
m
Q: \mathbb{R}^D \mapsto \mathbb{R}^{D+m}
Q:RD↦RD+m:
P ( x ) = [ x ; 1 / 2 − ∥ x ∥ 2 2 ; 1 / 2 − ∥ x ∥ 2 4 ; … ; 1 / 2 − ∥ x ∥ 2 2 m ] , Q ( x ) = [ x ; 0 ; 0 ; … ; 0 ] , \begin{aligned} & P(x)=\left[x ; 1 / 2-\|x\|_2^2 ; 1 / 2-\|x\|_2^4 ; \ldots ; 1 / 2-\|x\|_2^{2^m}\right], \\ & Q(x)=[x ; 0 ; 0 ; \ldots ; 0], \end{aligned} P(x)=[x;1/2−∥x∥22;1/2−∥x∥24;…;1/2−∥x∥22m],Q(x)=[x;0;0;…;0], - 根据上述映射,可以得到下述等式:
Q ( q ) T P ( x i ) ∥ Q ( q ) ∥ 2 ∥ P ( x i ) ∥ 2 = q T x i m / 4 + ∥ x i ∥ 2 2 m + 1 , \frac{Q(q)^T P\left(x_i\right)}{\|Q(q)\|_2\left\|P\left(x_i\right)\right\|_2}=\frac{q^T x_i}{\sqrt{m / 4+\left\|x_i\right\|_2^{2^{m+1}}}}, ∥Q(q)∥2∥P(xi)∥2Q(q)TP(xi)=m/4+∥xi∥22m+1qTxi, - 由于
∥
x
i
∥
2
m
+
1
→
0
\|x_i\|^{2^{m+1}}\rightarrow 0
∥xi∥2m+1→0,可得到下述近似结果,完成内积到余弦相似度的转换:
arg max x ∈ S q T x ≃ arg max x ∈ S Q ( q ) T P ( x i ) ∥ Q ( q ) ∥ 2 ∥ P ( x i ) ∥ 2 . \mathop{\arg \max}\limits_{x \in \mathcal{S}} q^T x \simeq \mathop{\arg \max}\limits_{x \in \mathcal{S}} \frac{Q(q)^T P\left(x_i\right)}{\|Q(q)\|_2\left\|P\left(x_i\right)\right\|_2}. x∈SargmaxqTx≃x∈Sargmax∥Q(q)∥2∥P(xi)∥2Q(q)TP(xi).
对应的理论保障如下:
文中推荐超参为
(
m
,
U
)
=
(
2
,
0.75
)
(m,U)=(2,0.75)
(m,U)=(2,0.75) 或
(
m
,
U
)
=
(
3
,
0.85
)
(m,U)=(3,0.85)
(m,U)=(3,0.85)。在实践中,可以生成
L
L
L 个哈希表,每个哈希表中使用
K
K
K 组随机投影的哈希函数,将原始维度降为
K
K
K 维,若
K
K
K 维均相同,则实现匹配,再将
L
L
L 个哈希表中所有匹配上的元素集合在一起。此处的
K
K
K 越大,识别的准确率越高,
L
L
L 越大,识别的召回率越高。
ICCV15 - AIBC
上述两种哈希方法均与数据集无关,即属于 data-independent methods,而本文将给出一种 data-dependent methods,整体思想是根据训练集,学习一种非对称的映射方式。
假设有两组数据, A = [ a 1 , a 2 , . . . , a n ] \mathbf{A}=[\mathbf{a}_1,\mathbf{a}_2,...,\mathbf{a}_n] A=[a1,a2,...,an] 与 X = [ x 1 , x 2 , . . . , x m ] \mathbf{X}=[\mathbf{x}_1,\mathbf{x}_2,...,\mathbf{x}_m] X=[x1,x2,...,xm],其中 a i ∈ R d × 1 \mathbf{a}_i\in \mathbb{R}^{d\times 1} ai∈Rd×1, x i ∈ R d × 1 \mathbf{x}_i\in \mathbb{R}^{d\times 1} xi∈Rd×1。另外,有相似度矩阵 S ∈ R n × m \mathbf{S}\in \mathbb{R}^{n\times m} S∈Rn×m,其中 S i j \mathbf{S}_{ij} Sij 表示 a i \mathbf{a}_i ai 和 x j \mathbf{x}_j xj 之间的相似度。
目标是学出哈希映射
h
(
x
)
=
sgn
(
W
⊤
x
)
h(\mathbf{x})=\operatorname{sgn}(\mathbf{W}^\top \mathbf{x})
h(x)=sgn(W⊤x) 和
z
(
x
)
=
sgn
(
R
⊤
x
)
z(\mathbf{x})=\operatorname{sgn}(\mathbf{R}^\top \mathbf{x})
z(x)=sgn(R⊤x),可以将原始输入映射成二进制码,其中
W
,
R
∈
R
d
×
r
\mathbf{W},\mathbf{R}\in \mathbb{R}^{d\times r}
W,R∈Rd×r,具体优化过程如下:
min
W
,
R
∥
sgn
(
W
⊤
A
)
⊤
sgn
(
R
⊤
X
)
−
S
∥
2
.
\min _{\mathbf{W}, \mathbf{R}}\left\|\operatorname{sgn}\left(\mathbf{W}^{\top} \mathbf{A}\right)^{\top} \operatorname{sgn}\left(\mathbf{R}^{\top} \mathbf{X}\right)-\mathbf{S}\right\|^2.
W,Rmin
sgn(W⊤A)⊤sgn(R⊤X)−S
2.
上述优化问题难以求解,因为本文采用了交替优化,即固定
R
\mathbf{R}
R 求
W
\mathbf{W}
W,或固定
W
\mathbf{W}
W 求
R
\mathbf{R}
R,以前者为例(后者同理),令
sgn
(
R
⊤
X
)
=
Z
\operatorname{sgn}\left(\mathbf{R}^{\top} \mathbf{X}\right)=\mathbf{Z}
sgn(R⊤X)=Z,得到:
min
W
∥
sgn
(
W
⊤
A
)
⊤
Z
−
S
∥
2
.
\min _{\mathbf{W}}\left\|\operatorname{sgn}\left(\mathbf{W}^{\top} \mathbf{A}\right)^{\top} \mathbf{Z}-\mathbf{S}\right\|^2.
Wmin
sgn(W⊤A)⊤Z−S
2.
该问题依然难以求解,因此引入矩阵
B
\mathbf{B}
B,上述问题转化为:
min
B
,
W
∥
B
⊤
Z
−
S
∥
2
+
λ
∥
B
−
W
⊤
A
∥
2
s.t.
B
∈
{
−
1
,
1
}
r
×
n
\begin{aligned} & \min _{\mathbf{B}, \mathbf{W}}\left\|\mathbf{B}^{\top} \mathbf{Z}-\mathbf{S}\right\|^2+\lambda\left\|\mathbf{B}-\mathbf{W}^{\top} \mathbf{A}\right\|^2 \\ & \text { s.t. } \quad \mathbf{B} \in\{-1,1\}^{r \times n} \end{aligned}
B,Wmin
B⊤Z−S
2+λ
B−W⊤A
2 s.t. B∈{−1,1}r×n
问题依然难以求解,继续采用交替优化,固定
B
\mathbf{B}
B,
W
=
(
A
A
⊤
)
−
1
A
B
⊤
\mathbf{W}=\left(\mathbf{A A}^{\top}\right)^{-1} \mathbf{A} \mathbf{B}^{\top}
W=(AA⊤)−1AB⊤;固定
W
\mathbf{W}
W,优化问题为:
min
B
∥
B
⊤
Z
∥
2
−
2
trace
(
B
⊤
D
)
s.t.
B
∈
{
−
1
,
1
}
r
×
n
\begin{aligned} & \min _{\mathbf{B}}\left\|\mathbf{B}^{\top} \mathbf{Z}\right\|^2-2 \operatorname{trace}\left(\mathbf{B}^{\top} \mathbf{D}\right) \\ & \text { s.t. } \quad \mathbf{B} \in\{-1,1\}^{r \times n} \end{aligned}
Bmin
B⊤Z
2−2trace(B⊤D) s.t. B∈{−1,1}r×n
其中 D = Z S ⊤ + λ W ⊤ A \mathbf{D}=\mathbf{Z} \mathbf{S}^{\top}+\lambda \mathbf{W}^{\top} \mathbf{A} D=ZS⊤+λW⊤A。此时问题仍然无法直接求解,因此继续交替优化,每次求解 B \mathbf{B} B 中一行,固定其它 r − 1 r-1 r−1 行,此时问题可以高效求解。
该篇文章整体思路如上所示,具体细节可参照原文。
ICML16 - Learning and Inference via MIPS
本文指出了一种较 Sign-ALSH 更为简单的构造,即 Simple-LSH [ICML15 - Behnam Neyshabur],同样假设向量集合中的
x
x
x 满足
∥
x
∥
2
≤
1
\|x\|^2\leq 1
∥x∥2≤1,查询向量
q
q
q 满足
∥
q
∥
=
1
\|q\|=1
∥q∥=1,令
P
(
x
)
=
(
x
,
1
−
∥
x
∥
2
)
P(x)=(x,\sqrt{1-\|x\|^2})
P(x)=(x,1−∥x∥2),
Q
(
q
)
=
(
q
,
0
)
Q(q)=(q,0)
Q(q)=(q,0),可以得到:
P
(
x
)
⊤
Q
(
q
)
∥
P
(
x
)
∥
∥
Q
(
q
)
∥
=
x
⊤
q
,
\frac{P(x)^\top Q(q)}{\|P(x)\|\|Q(q)\|}=x^\top q,
∥P(x)∥∥Q(q)∥P(x)⊤Q(q)=x⊤q,
实现 MIPS 到 MCSS (Maximum Cosine Similarity Search) 的等价转换。但本文的主要目的并不是求解 MIPS,而是借用 MIPS 的求解来加速 Log-Linear 模型的学习和推理过程,即 MIPS 的应用。不过本文介绍了 Gumbel Variables 技术,虽然与 MIPS 无关,但感觉很有趣,便在此顺带记录一下。
Gumbel Variables
一个 Gumbel 随机变量
G
G
G 是一个连续随机变量,其累计分布函数 (Cumulative Distribution Function, CDF) 为:
P
(
G
<
x
)
=
exp
(
−
exp
(
−
x
−
μ
β
)
)
.
P(G<x)=\exp(-\exp(-\frac{x-\mu}{\beta})).
P(G<x)=exp(−exp(−βx−μ)).
该篇文章取
μ
=
0
,
β
=
1
\mu=0,\beta=1
μ=0,β=1。从 Gumbel 分布中采样的方式为:从
[
0
,
1
]
[0,1]
[0,1] 区间中均匀采样
U
U
U,有次得到 Gumbel 随机变量
G
G
G 的采样值:
G
=
−
log
(
−
log
(
U
)
)
.
G=-\log (-\log (U)).
G=−log(−log(U)).
Gumbel 随机变量可以将一个优化问题转化为一个采样问题,具体来说,令
{
a
i
}
\{a_i\}
{ai} 为一组系数,
{
G
i
}
\{G_i\}
{Gi} 和
G
G
G 为独立的 Gumbel 随机变量,则有如下两条性质:
max
i
{
a
i
+
G
i
}
∼
log
(
∑
i
e
a
i
)
+
G
,
argmax
i
{
a
i
+
G
i
}
∼
Multinomial
(
{
e
a
i
∑
i
e
a
i
}
)
.
\begin{gathered} \max _i\left\{a_i+G_i\right\} \sim \log \left(\sum_i e^{a_i}\right)+G, \\ \underset{i}{\operatorname{argmax}}\left\{a_i+G_i\right\} \sim \operatorname{Multinomial}\left(\left\{\frac{e^{a_i}}{\sum_i e^{a_i}}\right\}\right). \end{gathered}
imax{ai+Gi}∼log(i∑eai)+G,iargmax{ai+Gi}∼Multinomial({∑ieaieai}).
简单说,上述两条性质的「左边」对应一个优化问题,其最优解服从「右边」对应的分布,因此可以将求解「左边」这个优化问题的过程,转化为在「右边」这个分布里采样的过程。
KDD18 - H2-ALSH
此篇文章在 Preliminaries 部分介绍了另外一种将 MIPS 转为欧式距离的方式,即 XBOX 变换。具体来说,令
M
=
max
o
∈
D
∥
o
∥
M=\max_{o\in D}\|o\|
M=maxo∈D∥o∥,
P
(
o
)
=
[
o
;
M
2
−
∥
o
∥
2
]
P(o)=[o;\sqrt{M^2-\|o\|^2}]
P(o)=[o;M2−∥o∥2],
Q
(
q
)
=
[
q
;
0
]
Q(q)=[q;0]
Q(q)=[q;0],可以得到:
∥
Q
(
q
)
−
P
(
o
)
∥
2
=
∥
q
∥
2
+
M
2
−
2
o
⊤
q
,
\|Q(q)-P(o)\|^2=\|q\|^2+M^2-2o^\top q,
∥Q(q)−P(o)∥2=∥q∥2+M2−2o⊤q,
是一种无损的变换。我们的核心目标是 c c c-Approximate MIP search ( c c c-AMIP search),即给定一个近似比例 c c c ( 0 < c < 1 ) (0<c<1) (0<c<1) 以及一个查询 q q q,希望找到 o ∈ D o\in D o∈D 满足 o ⊤ q ≥ c ( o ∗ ) ⊤ q o^\top q\geq c(o^*)^\top q o⊤q≥c(o∗)⊤q,其中 o ∗ o^* o∗ 为最优解。
此篇文章指出 XBOX 转换的缺陷,即对于某些 ∥ q ∥ \|q\| ∥q∥ 来说,经过转换,大部分的 P ( o ) P(o) P(o) 都将距离 Q ( q ) Q(q) Q(q) 非常近,进而产生较大误差。以下图为例:
o
2
o_2
o2 原本距
q
1
q_1
q1 比
o
1
o_1
o1 近不少,但经过转换后,
P
(
o
2
)
P(o_2)
P(o2) 距
Q
(
q
1
)
Q(q_1)
Q(q1) 的距离和
P
(
o
1
)
P(o_1)
P(o1) 非常接近,即转换后产生失真误差。
本文指出使用 QNF 变换,可以降低上述失真误差,即:
P
(
o
)
=
[
o
1
,
o
2
,
…
,
o
d
;
M
2
−
∥
o
∥
2
]
,
Q
(
q
)
=
[
λ
q
1
,
λ
q
2
,
…
,
λ
q
d
;
0
]
,
where
λ
=
M
∥
q
∥
,
∥
Q
(
q
)
−
P
(
o
)
∥
2
=
M
2
+
λ
2
∥
q
∥
2
−
2
λ
o
⊤
q
.
\begin{gathered} P(o)=\left[o_1, o_2, \ldots, o_d ; \sqrt{M^2-\|o\|^2}\right], \\ Q(q)=\left[\lambda q_1, \lambda q_2, \ldots, \lambda q_d ; 0\right], \text { where } \lambda=\frac{M}{\|q\|},\\ \|Q(q)-P(o)\|^2=M^2+\lambda^2\|q\|^2-2 \lambda o^\top q. \end{gathered}
P(o)=[o1,o2,…,od;M2−∥o∥2],Q(q)=[λq1,λq2,…,λqd;0], where λ=∥q∥M,∥Q(q)−P(o)∥2=M2+λ2∥q∥2−2λo⊤q.
依旧为无损转换,且 q q q 和 o o o 均被映射至圆上,可以缓解 XBOX 转换的问题,如下所示:
由于
o
⊤
q
=
∥
o
∥
∥
q
∥
cos
β
o^\top q=\|o\|\|q\| \cos \beta
o⊤q=∥o∥∥q∥cosβ,因此本文先对
∥
o
∥
\|o\|
∥o∥ 做了一个分组,然后在每个分组中再将内积转成欧式距离,使用 QALSH 方法建立哈希表进行查搜。
下述是构建过程,即将 n n n 个元素按照 ∥ o ∥ \|o\| ∥o∥ 分成 K K K 组:
在具体查搜时,先从
S
1
S_1
S1 开始查,其中
b
M
1
<
∥
o
∥
≤
M
1
bM_1< \|o\|\leq M_1
bM1<∥o∥≤M1,在其中根据 QALSH 进行查搜,记录最优值
o
m
i
p
o_{mip}
omip;若
o
m
i
p
>
M
2
∥
q
∥
o_{mip}>M_2\|q\|
omip>M2∥q∥,则搜索结束,否则进入
S
2
S_2
S2,整个过程循环下去。
NeurIPS18 - Norm-Ranging LSH
该篇文章与 H2-ALSH 的思想非常相似,即按照集合元素的 norm
∥
x
∥
\|x\|
∥x∥ 进行分组,然后在组内用 Simple-LSH 建立索引,具体查搜过程如下:
ICML19 - Sample MIPS
本篇文章在相关工作部分介绍了 Greedy-MIPS,其有下述假设:
q
⊤
x
j
>
q
⊤
x
i
⇔
max
t
=
1
,
…
,
d
q
t
x
j
t
>
max
t
=
1
,
…
,
d
q
t
x
i
t
,
\boldsymbol{q}^\top \boldsymbol{x}_j>\boldsymbol{q}^\top \boldsymbol{x}_i \Leftrightarrow \max _{t=1, \ldots, d} q_t x_{j t}>\max _{t=1, \ldots, d} q_t x_{i t},
q⊤xj>q⊤xi⇔t=1,…,dmaxqtxjt>t=1,…,dmaxqtxit,
即内积最大的向量,在内积求和时,最大的分量依然是最大的。这个假设很强,因为有了这个假设后,找内积最大的向量,就变成对每一个维度,找一个乘机最大的分量,难度瞬间下降。实际操作中,一般是枚举每一个维度,每一个维度找出乘机最大的前 k k k 个,再在所有挑出来的向量中找一个内积最大的,作为结果输出。本篇文章称该方法实际效果不错,故再次记录一下。
回归正题,本篇文章将「找 MIPS 最大向量」转化为了一个采样问题,其定义如下概率:
P
(
j
∣
q
)
∝
q
⊤
x
j
,
P
(
j
,
t
∣
q
)
∝
q
t
x
j
t
.
\begin{gathered} P(j \mid \boldsymbol{q}) \propto \boldsymbol{q}^\top \boldsymbol{x}_j, \\ P(j,t\mid \boldsymbol{q})\propto q_tx_{jt}. \\ \end{gathered}
P(j∣q)∝q⊤xj,P(j,t∣q)∝qtxjt.
由此可以得到:
P
(
t
∣
q
)
=
∑
j
=
1
n
P
(
j
,
t
∣
q
)
∝
∑
j
=
1
n
q
t
x
j
t
=
q
t
s
t
,
P
(
j
∣
t
,
q
)
=
P
(
j
,
t
∣
q
)
P
(
t
∣
q
)
∝
q
t
x
j
t
∑
j
=
1
n
q
t
x
j
t
=
x
j
t
∑
j
=
1
n
x
j
t
=
x
j
t
s
t
.
\begin{aligned} P(t \mid \boldsymbol{q}) & =\sum_{j=1}^n P(j, t \mid \boldsymbol{q}) \propto \sum_{j=1}^n q_t x_{j t}=q_t s_t, \\ P(j \mid t, \boldsymbol{q}) & =\frac{P(j, t \mid \boldsymbol{q})}{P(t \mid \boldsymbol{q})} \\ & \propto \frac{q_t x_{j t}}{\sum_{j=1}^n q_t x_{j t}}=\frac{x_{j t}}{\sum_{j=1}^n x_{j t}}=\frac{x_{j t}}{s_t} . \end{aligned}
P(t∣q)P(j∣t,q)=j=1∑nP(j,t∣q)∝j=1∑nqtxjt=qtst,=P(t∣q)P(j,t∣q)∝∑j=1nqtxjtqtxjt=∑j=1nxjtxjt=stxjt.
又因为 P ( j ∣ q ) = ∑ t = 1 d P ( t ∣ q ) P ( j ∣ t , q ) P(j \mid \boldsymbol{q})=\sum_{t=1}^d P(t\mid \boldsymbol{q})P(j\mid t,\boldsymbol{q}) P(j∣q)=∑t=1dP(t∣q)P(j∣t,q),以及 P ( j ∣ t , q ) P(j\mid t,\boldsymbol{q}) P(j∣t,q) 数值与 q \boldsymbol{q} q 无关,即对 P ( j ∣ q ) P(j \mid \boldsymbol{q}) P(j∣q) 的采样可以转化为两步:
- 根据 q \boldsymbol{q} q 和 P ( t ∣ q ) P(t\mid \boldsymbol{q}) P(t∣q) 采样 t t t,时间复杂度为 O ( d ) O(d) O(d);
- 根据 t t t 和 P ( j ∣ t , q ) P(j\mid t,\boldsymbol{q}) P(j∣t,q) 采样 j j j,与 q \boldsymbol{q} q 无关,可事先预处理,每次查询的时间复杂度为 O ( 1 ) O(1) O(1)。
上述过程将 O ( n d ) O(nd) O(nd) 的暴力搜索转化为了 O ( B d ) O(Bd) O(Bd)( B B B 为采样次数),实现了对 MIPS 问题的高效求解。
由于
q
\boldsymbol{q}
q 和
x
\boldsymbol{x}
x 中元素可能有负数,因此文中给出了一种针对负数的解决方案,令:
P
(
j
∣
q
)
∝
∑
t
=
1
d
∣
q
t
x
j
t
∣
,
P
(
j
∣
t
,
q
)
∝
∣
q
t
x
j
t
∣
.
\begin{gathered} P(j \mid \boldsymbol{q}) \propto \sum_{t=1}^d |q_t x_{j t}|, \\ P(j \mid t, \boldsymbol{q}) \propto |q_t x_{j t}|. \end{gathered}
P(j∣q)∝t=1∑d∣qtxjt∣,P(j∣t,q)∝∣qtxjt∣.
由此得到:
P
(
t
∣
q
)
∝
∑
j
=
1
n
∣
q
t
x
j
t
∣
,
P
(
j
∣
t
,
q
)
∝
∣
x
j
t
∣
∑
j
=
1
n
∣
x
j
t
∣
.
\begin{gathered} P(t \mid \boldsymbol{q}) \propto \sum_{j=1}^n |q_t x_{j t}|, \\ P(j \mid t, \boldsymbol{q}) \propto \frac{|x_{j t}|}{\sum_{j=1}^n |x_{j t}|}. \end{gathered}
P(t∣q)∝j=1∑n∣qtxjt∣,P(j∣t,q)∝∑j=1n∣xjt∣∣xjt∣.
根据 P ( t ∣ q ) P(t \mid \boldsymbol{q}) P(t∣q), P ( j ∣ t , q ) P(j \mid t, \boldsymbol{q}) P(j∣t,q) 采样 B B B 次,得到 B B B 组 ( j , t ) (j,t) (j,t) 对, sgn ( q t x j t ) \operatorname{sgn}(q_t x_{jt}) sgn(qtxjt) 之和越大,选中 x j \boldsymbol{x}_j xj 的概率越大。
在理论保障方面,文中在 Lemma1 处证明了:
E
[
z
j
b
]
=
q
⊤
x
j
S
,
E
[
z
j
]
=
B
⋅
E
[
z
j
b
]
,
\begin{gathered} \mathbb{E}[z_{jb}] = \frac{\boldsymbol{q}^\top \boldsymbol{x}_j}{S}, \\ \mathbb{E}[z_j] = B\cdot \mathbb{E}[z_{jb}], \\ \end{gathered}
E[zjb]=Sq⊤xj,E[zj]=B⋅E[zjb],
其中 z j b = sgn ( q t x j t ) z_{jb}=\operatorname{sgn}(q_tx_{jt}) zjb=sgn(qtxjt), z j = ∑ b = 1 B x j b z_j=\sum_{b=1}^B x_{jb} zj=∑b=1Bxjb, S = ∑ t = 1 d ∑ j = 1 n ∣ q t x j t ∣ S=\sum_{t=1}^d\sum_{j=1}^n|q_t x_{jt}| S=∑t=1d∑j=1n∣qtxjt∣。
参考资料
- [STOC02 - Moses S. Charikar] Similarity Estimation Techniques from Rounding Algorithms
- [SGG04 - Mayur Datar] Locality-sensitive hashing scheme based on p-stable distributions
- [NIPS14 - Anshumali Shrivastava] Asymmetric LSH (ALSH) for Sublinear Time Maximum Inner Product Search (MIPS)
- [arXiv14 - Anshumali Shrivastava] Improved Asymmetric Locality Sensitive Hashing (ALSH) for Maximum Inner Product Search (MIPS)
- [arXiv14 - Ping Li] Coding for Random Projections and Approximate Near Neighbor Search
- [ICCV15 - Fumin Shen] Learning Binary Codes for Maximum Inner Product Search
- [ICML15 - Behnam Neyshabur] On Symmetric and Asymmetric LSHs for Inner Product Search
- [ICML16 - Stephen Mussmann] Learning and Inference via Maximum Inner Product Search
- [KDD18 - Qiang Huang] Accurate and Fast Asymmetric Locality-Sensitive Hashing Scheme for Maximum Inner Product Search
- [NIPS18 - Xiao Yan] Norm-Ranging LSH for Maximum Inner Product Search
- [ICML19 - Qin Ding] A Fast Sampling Algorithm for Maximum Inner Product Search