形式陈述
一个指纹必须连同哪份配置一起解释
给定整数 d , q ≥ 1 。输入是实内积空间 理路 内积空间 Inner product space 带正定对称双线性形式或正定 Hermitian 半双线性形式的向量空间。 R d 中的非零有限向量 x ;数学对象是方向 x ¯ = x / ‖ x ‖ 2 ,两个对象间的角度为
θ ( x , y ) = arccos ⟨ x , y ⟩ ‖ x ‖ 2 ‖ y ‖ 2 ∈ [ 0 , π ] . 零向量没有这个方向,接口拒绝它。这里保留正负方向的区别,x 与 − x 的夹角是 π ,不是同一条无向直线。
一次建立共享配置 G = ( g 0 , … , g q − 1 ) ,定义
b i ( x ) = 1 { ⟨ g i , x ⟩ ≥ 0 } , B G ( x ) = ( b 0 ( x ) , … , b q − 1 ( x ) ) . 边界上的零内积统一编码为 1 。对同一配置编码的两个向量,输出失配数 H 和归一化角度估计
H = ∑ i = 0 q − 1 1 { b i ( x ) ≠ b i ( y ) } , a ^ = H / q . 这里真正计算的是等长字串的Hamming 距离 理路 Hamming 距离 Hamming distance 等长字中不同坐标的数量;由逐位比较、三角不等式和 Hamming 球解释检错与唯一纠错半径。 ;不能把两份各自重新抽样的指纹逐位比较。
公开参考规定第 i 位放入第 ⌊ i / 8 ⌋ 个字节的第 7 − ( i mod 8 ) 位,末字节低端未使用位全部为零。载荷长度恰为 ⌈ q / 8 ⌉ 字节。指纹还持有不可变配置的共享句柄,比较时要求句柄是同一个对象;即使两份独立配置碰巧有相同系数,也保守地拒绝跨句柄比较。载荷本身不包含维数、位数或超平面,重载字节必须另外提供同一配置。长度与填充检查只能证明语法规范,不能证明这些字节确实由某个宣称的向量生成。
概率结论的抽样条件
保证要求 g i 是相互独立 理路 独立性 Statistical independence 从概率表理解独立性,区分两两、相互和条件独立,并用可计算反例澄清零协方差与条件均值的限度。 的标准多元正态向量 理路 多元正态分布 Multivariate normal distribution · Multivariate Gaussian distribution · Jointly Gaussian vector 以所有线性组合都正态刻画联合高斯向量,并由特征函数连接线性构造、退化支撑、全维密度与条件分布。 N ( 0 , I d ) ,并且待比较的 x , y 在抽取 G 之前已固定。更一般地,独立且方向在球面上均匀的非零法向量也够用;长度不影响符号。独立不等于各向同性,给各坐标不同方差通常改变角度度量。
随机超平面分离引理 理路 Goemans–Williamson Max-Cut 近似 Goemans-Williamson Max-Cut · GW algorithm · Max-Cut SDP rounding 以单位向量半正定松弛和随机过原点超平面舍入无向非负权 Max-Cut,并由逐边角度不等式得到 0.87856 期望近似比。 已经给出单次失配概率 a = θ / π 。本接口把同一对向量放进 q 个独立副本,于是
H ∼ Bin ( q , a ) , E [ a ^ ] = a , Var ( a ^ ) = a ( 1 − a ) q . 同一位上的两个符号共享一张平面;不同位的失配指标才独立。由Hoeffding 不等式 理路 Hoeffding 不等式 Hoeffding's inequality 独立有界随机变量和偏离期望的概率以平方偏差的指数速度衰减。 ,对 ε > 0 ,
Pr ( | a ^ − a | ≥ ε ) ≤ 2 e − 2 q ε 2 . 若事先固定了 m ≥ 1 对向量,取
q ≥ log ( 2 m / δ ) 2 ε 2 , 0 < δ < 1 , 可使这 m 对的误差同时小于 ε ,失败概率至多 δ 。这里对各对使用并集界,不要求不同向量对的误差独立 。如果固定 n 个向量并要求所有两两距离,可取 m = ( n 2 ) ;n < 2 时没有待保证的不同对象对,不使用这个对数式。
编码、比较与费用
编码逐行算点积,把符号置入相应字节。已经处理前 i 行时,前 i 个有效位与定义完全一致,其余位保持零;一次置位建立下一步不变量,结束后得到规范载荷。比较逐字节异或,再累计置位数。由于无效填充位都为零,它们不会增加失配数。
稠密实数算术模型下,一次编码需 O ( q d ) 运算,共享配置占 O ( q d ) 个系数。每个指纹另占 ⌈ q / 8 ⌉ 个字节和一个句柄;存 n 个指纹不能把共享配置重复算 n 次,也不能把配置完全删去。公开实现先形成 q 个符号,临时工作空间为 O ( q + d ) ,不是只有输出位串那么多。比较两份已验证指纹需 O ( ⌈ q / 8 ⌉ ) 时间,估计值可作为分数 H / q 精确输出。
参考程序 只接受整数向量和整数法向量,以 Python 整数精确判定正、负、零。这是可复核的给定配置执行器 ,没有把有限整数法向量称为连续各向同性抽样器。它对点积的运算次数仍是 O ( q d ) ,大整数乘加的位成本另计。理论上的归一化不必在此真的求平方根,因为除以正的 ‖ x ‖ 2 不改变符号。把实现换成浮点数时,溢出、消去和临近零的符号误判需要单独的数值策略,不能用本整数实验替它作保证。
直觉
每一张过原点的平面问同一个二选一问题:“这个方向落在哪一侧?”相近方向较少给出不同答案,背向方向较多。单次回答只有一位,难以判断一次不同究竟是距离大还是抽样偶然;共享的多张独立平面把问题变成可计数的失配比例。
指纹保存的是方向关系,不保存长度、坐标或完整距离矩阵。同一组位可以供许多对象重用,但重用并不会自动把“某个预定对象对”的概率结论升级为“看完这些位后任意挑对象都正确”。
图片加载失败 角度指纹:配置、有效位和保证范围
例子与边界
五张确定平面的完整编码
按顺序取
g 0 = ( 1 , 0 ) , g 1 = ( 0 , 1 ) , g 2 = ( 1 , 1 ) , g 3 = ( 1 , − 1 ) , g 4 = ( − 2 , 3 ) . 对 A = ( 2 , 1 ) 、B = ( 1 , 2 ) ,逐行得到
行 i
⟨ g i , A ⟩
⟨ g i , B ⟩
两个符号
0
2
1
1,1
1
1
2
1,1
2
3
3
1,1
3
1
− 1
1,0
4
− 1
4
0,1
所以 A 的有效位是 11110,填充后为 11110000,十六进制 f0;B 是 11101,载荷 e8。异或 00011000 有两位为一,故 H = 2 、a ^ = 2 / 5 。真实余弦是 4 / 5 ,真实归一化角度约为 0.2048 。这五张手选平面用于核对编码,不是验证其输出已满足某个随机置信界。
− A 的载荷是 08,在五个有效位上恰好与 A 互补。T = ( 1 , 1 ) 却在第四行点积为零,按约定编码 11111,载荷 f8;− T 的第四位也为一。因此“负向量一定逐位取反”只有在全部点积非零时才成立。对固定非零向量和连续 Gaussian 平面,零事件概率为零;对给定整数平面或自适应选择的向量,它可以确实发生。
角度无偏,余弦未必无偏
可用 c ^ = cos ( π a ^ ) 报告余弦估计。由余弦的 Lipschitz 界,| a ^ − a | ≤ ε 蕴含 | c ^ − cos θ | ≤ π ε ;但非线性变换不保留无偏性。取 q = 1 、θ = π / 3 ,c ^ 以概率 2 / 3 取 1 、以概率 1 / 3 取 − 1 ,期望 1 / 3 ,不同于真实余弦 1 / 2 。
另外,Hamming 比例不等于未经归一化的欧氏距离。A 与 100 A 的指纹完全相同,欧氏距离却很大。对单位向量才有 ‖ x ¯ − y ¯ ‖ 2 2 = 2 − 2 cos θ ;若应用关心幅度,必须另外保留并使用长度。
看过配置再挑向量
设 q < d 。看见所有法向量后,可以取它们共同正交补中的非零 z 。此时 z 与 − z 的所有点积均为零,按约定都得到全一指纹,估计角度为零,真实夹角却是 π 。例如 d = 3 、两张平面的法向量为 ( 1 , 0 , 0 ) , ( 0 , 1 , 0 ) ,选 z = ( 0 , 0 , 1 ) 即可。
这不反驳固定对象定理:对象是依赖已抽出的 G 选出来的。只在实验后说“实际只查询了一对”并取 m = 1 ,也不能补上抽样前固定的条件。若全部潜在查询预先来自有限集合,可以对那个集合做同时保证;任意实向量的自适应重用需要别的论证。
独立但不各向同性仍然不够
若每个法向量都固定为 ( 1 , 0 ) ,向量 ( 1 , 0 ) 与 ( 1 , 1 ) 永远同号,失配率为零,真实夹角却是 π / 4 。复制这张平面再多次也不会改善。类似地,用独立但偏向某些方向的法向量,只会精确估计那个偏置分布下的分离概率;不能无条件乘上 π 当作原来的夹角。
推论与应用
角度指纹可作为方向相似性的紧凑比较接口:输入维数 d 很大时,编码完成后每次比较只遍历 q 位,不再读取全部坐标。这个收益发生在编码和共享配置存储已经付费之后,且精度控制的是事先指定对象对的归一化角度。
若目标是从大量记录中找候选,只给每条记录一份短指纹还不够;逐条比较仍会访问全部 n 条记录。LSH 放大候选索引 理路 LSH 放大候选索引 LSH amplification index · AND-OR locality-sensitive hashing index 把独立基础碰撞组成多张复合键桶表,按唯一记录ID去重并精确核验,显式报告遍历预算与概率召回的边界。 进一步把若干基础碰撞合成键、建立多张桶表,再对命中的记录做原始相似度核验。这里的单比特相等概率 1 − θ / π 是它的一种输入,编码/估计与候选检索是两个不同的输出合同。
参考资料