Abstract
要解决的问题:使用者给出一个指定的查询区域,我们要找到与之对应的相似区域。
该问题在相似性的定义上以及搜索效率上存在两大挑战。
为应对这两大挑战,我们提出的解决方案包括:
(1)一个能同时考虑到目标属性和目标之间相对位置的用于学习相似性的深度学习方法
(2)一个用于寻找top-N区域的高效的分支定界搜索算法
1 Introduction
背景:随着移动设备和定位服务的普及化,大量的标注位置的目标可以从各种源公开获取到。这些目标逐渐被标上丰富的信息。这给我们提供了一个很大的机会去了解一个特定城市区域的信息。但由于信息的快速增长和城市的复杂性,人们只是获取到并熟悉自己生活的一小片区域的信息,并不能将自己对本区域的了解应用到其它新区域上。因此我们需要在地理空间上搜寻相似区域,这样能使人们能应用他们在熟悉区域了解的信息去探寻相似的新区域。
寻找相似区域面临两大挑战:
- 如何建立区域相似度模型
一个简单的方法是直接用目标区域内部的属性向量之和代表该区域,然后在两个区域的属性向量之间计算相似度。但这样就会忽略掉目标区域的空间信息,而目标之间的相对空间位置是衡量区域相似度的一个很重要的维度。而且,空间信息数据经常是有噪声的,建立一种对噪声具有鲁棒性的衡量标准也是很困难但很有必要的。 - 相似区域的搜寻效率需要比较高。
为解决第一个挑战,我们利用一个深度度量学习模型来学习一个排序的度量标准以比较区域。它使用CNN提取特征(可捕捉到目标之间的局部关系以用于相似性学习)。我们提出一个使用难负例挖掘的方法产生训练数据以让相似性度量对小的噪声和目标移动有稳健性。我们也提出一个基于比率的训练损失以对高度扭曲的空间数据具有稳健性。
为解决第二个挑战,我们先通过共享所有区域的计算来减少计算相似度时的时间开销;之后提出一个叫ExactSFRS的分支界定算法来大幅减少搜索空间;然后提出一个叫ApproxSFRS的近似方法,它的最坏时间复杂度是可调节的,它可以在准确性和效率之间找到折衷以支持不同的应用。
3 Problem Definition
在一个2维矩形地理空间中,考虑一个空间目标的集合。每个目标都与一个属性向量和一个地理定位相关联。在不同应用中目标属性可以是不同的。
定义1 区域
区域是中的一个矩形子空间,即,的边界是(分别代表top,bottom,left,right),其中包含的目标构成集合(不包含边界上的目标点),即。
对于两个区域和,定义它们间的相似度为。函数需要同时考虑区域中目标的属性和相对位置。
令查询区域为。
定义2 SRS问题
给定地理空间,一个查询区域和一个相似度量函数,则SRS问题指检索出一个由N个区域构成的集合(记为):
.
4 Region Similarity Learning
我们考虑一个叫triplet network(三元组网络)的深度度量学习方法,直接从数据中学出。
相似性学习部分的有关符号说明:
排序度量学习模型
triplet network(三元组网络):在CV领域广泛应用于图像的排序度量。一个triplet network由一个共享CNN的三个实例组成,输入包含:查询样本,一个正例样本(相似),一个负例样本(不相似)。当喂入这三个样本时,triplet network会产生出两个欧氏距离:
和 ,
其中是对应的CNN最后一层特征图。要注意的是CNN的全连层被移除了,因为我们只对嵌入特征感兴趣。
triplet network的结构示意(这张图是网上找的):
triplet network的学习目标是训练使得正样本与查询样本之间的距离小于负样本与查询样本之间的距离:
其中是两个距离之间的差距参数(需要让正例对应的那个距离比负例对应的那个距离至少小多少),是的L2正则化项。
为了将一个区域喂入,我们将区域用一个预先定义的粒度分割成网格。我们为每个网格关联一个向量,这个向量是通过对单元格中目标的属性向量求和得到的。对于空单元格直接将其与0关联。于是,一个区域就被表示成了一个3维张量,其中前两维是单元格的空间维度,d维度代表属性。
将输出特征图表示为:,其中K是输出特征的维度数量。K维中的每一个都是一个包含空间信息的潜在特征。
为比较不同尺寸的特征图,我们在之后使用一个特征聚合层以将每个特征图聚合成一个K维的特征向量。在本文中,我们是用一个全局max-pooling层作为。因此输出的距离就是 和 。
通过使用学习到的度量,我们定义与间的相似度:
训练鲁棒的Triplet Network
由于没有标好标记的区域相似性数据,我们提出一种自监督的学习策略,通过学习自相似性来使模型具备鲁棒性,无需再获取标签。
训练数据的产生
的鲁棒性也可以理解成:一个原始区域和一个由前者经少量噪声和移动而产生的区域应被视为是相似的。所以我们如此创造出查询区域,负例输入和正例输入:
随机在任意位置以各种尺寸取查询区域。
对每个,先通过给添加噪声和移动产生出,方法包括:
(1) 随机去除目标
(2) 在随机的位置添加随机的目标
(3) 随机移动目标的位置
我们用噪声率和移动率来控制噪声和移动的产生:
噪声率设为0.1意思是随机删除10%的目标,之后再在该区域的随机位置上添加进相同数量的随机目标
移动率设为0.1意思是将每个实例沿随机方向移动不超过区域高和宽的10%的随机的距离。
之后为每个产生。我们在地图上随机找出不与重叠的区域作为。不过一些与的差距过大,可能导致模型收敛到的解不够好,所以还要添加一些难例:我们也通过向添加更多一些的噪声(相比创造的时候)来产生出。我们会在训练集中添加一小部分这样的难负例。这会迫使模型学到更多更有区分性的特征以正确区分和,进而能最小化损失值。
使用这样的产生式数据,模型学到的特征对小的噪声和移动也就具有了鲁棒性。
基于比率的训练损失
不同区域中的目标数差别很大,这可能会导致一些训练数据组的损失值很大,盖过了其它训练数据的影响。一般遇到这种情况的处理方法会是对输入数据做归一化,但这里如果这么做又会丢失掉区域中目标数量的信息,而目标数量差得很多的区域显然应该是不相似的。
所以我们采用下面这样一个基于比率的训练损失:
这样每个训练组的损失值都被限制在之间,极端的训练实例也不会过于影响到整个损失函数。
训练Triplet网络的过程示意:
5 Region Search Algorithm
在度量学习中我们将分成了粒度相同的网格。一个简单的搜寻相似度的方法是将查询区域与所有中的候选区域都比较一遍,但这样的时间开销是非常大的(两方面:计算相似度时计算特征图的时间开销很大;由于地图很大,候选区域是很多的,不可能穷举搜索)。
区域搜寻部分的有关符号说明:
通过共享计算转化问题
共享计算
由于对每个区域都做的前向传播很慢,我们预计算出整个地理空间的特征图,也就是,并将其共享以计算。
如上图,我们先计算出查询区域的向量。之后我们将图中的区域(也就是区域)映射到特征图中的区域上(表示为区域)。这样我们就能以的复杂度直接从上获取到。
问题转化
在本文的之后部分我们称是特征空间,称是一个特征区域。我们之前所说的SRS问题便转化为了Similar Feature Region Search (SFRS)问题:
定义3 SFRS问题
给定和,在上寻找一个由个特征区域组成的集合(表示为):
在找到top-N的相似特征区域后,我们可以将它们在上的区域映射回它们在上的对应区域。于是就找到了top-N区域。
用于SFRS的提取算法
代表搜索空间
特征空间是一个三维张量,一个候选特征区域是的一个子张量,特征维度相同都是。候选特征区域的位置可以用一个参数化元组表示:,其中,且。可以用下面的搜寻空间的概念来代表四个坐标对应的四个间隔区域:
定义4 搜索空间
搜索空间:一个特征区域位置的集合,其中,使得,满足。
其中×是笛卡尔积。搜索空间的概念如下图中灰色区域所示:
一个候选搜索区域就应是上图灰色区域中的虚线框(也就是说)。利用这种表示形式,整个搜寻空间可以表示成:。
分支定界搜索
直观来说,地理空间中的目标分布并非随机的,一些搜索子空间中更可能包含最优的结果。
我们先定义给定查询时的距离下界:。直观来看越小说明是的一个top-N区域的机会越大。
我们之后就要构造出这个。
首先考虑上面所说的这个式子,而因为(本文中就是max-pooling)又是个单调增函数,我们可以得到这样的结论:,其中表示的第个维度。
于是我们可以将与之间的距离表示成,其中这K项中的每一项都能够利用得到以下的两条界限:
我们令满足的为,满足的为。于是我们可以得到距离的下界:
注意到当或时,特征区域不存在,所以这种情况下就直接采用作为搜寻界限。
下面是对ExactSFRS分支定界搜索算法的说明:
算法说明:
- 初始化(line2-3):定义空结果集,优先队列。将初始搜寻空间入队列。
- 分支步骤(line6-7):从优先队列的队首弹出一个搜索空间(弹出的搜索空间的距离最小界限一定是队列中最小的)。之后,将分成两个不相交的子空间和,分的方式是:将中最大的那个区间间隔平分,其余三个间隔不变。
- 定界步骤(line8-9):计算和,之后将它们的值分别与和放入队列中。
重复分支和定界步骤直到,也就是队首取出的搜索空间只包含1个特征区域(将其表示为),此时一定有。且对于此时的,有且(这里如果这么说我感觉前面的k1和k2就应该是小于等于或大于等于,而不是小于或大于)。所以有(不等号变等号了)。所以,可以作为的top-N候选区域: (是此时队列里最相似的特征区域)
我们将放入中,继续搜索过程,直到找到了个结果。中的特征区域就是top-N相似特征区域,可以将它们映射回上的top-N相似区域。
时间复杂度分析
在分支步骤中,分开一个搜寻空间花费级别的时间;在定界步骤中,使用积分直方图计算和,定界步骤的总复杂度是。
在最坏情况下,搜寻过程需要检查一共个搜索空间,并且花费级别时间维护,其中表示候选特征区域的总数量。因此,总复杂度是。尽管最坏情况复杂度很高,但ExactSFRS在实验中按经验来说还是很高效的。
SFRS的近似算法
由于在实际的应用中,使用者需要很快的回应,可以忍受准确率的一点下滑,所以这里提出一种叫ApproxSFRS的近似SFRS方法,在只损失一点准确率的情况下提升效率。
ApproxSFRS的策略与ExactSFRS基本相同,唯一的区别在于这里会用一个常数限制的大小,其中。当搜寻过程中时,会将中的最坏搜寻空间(也就是有最大的搜寻空间)丢弃。我们使用最小-最大堆来作为,这样插入和删除最小或最大值的时间复杂度就是。
时间复杂度分析
ApproxSFRS的时间复杂度是。可以根据不同应用需求调节来调节时间复杂度。
6 Experiments
实验设置
数据集
本实验使用三个空间目标数据集,如下图所示。每个POI的属性是分类,表现为一个one-hot向量。US的那个大数据集是为了评估本算法的效率,它是将很多条推特用LDA模型训练,让每条都与一个主题分布向量关联并作为它的属性。
测试数据的产生
为评价方法的有效性,我们使用与生成训练数据类似的方法生成测试数据。具体来说,随机采样2000个区域,包含多于50个作为测试查询的目标,将该集合记为。对于一个查询,通过向它添加小的噪声和移动创建出一个相似性区域作为ground truth。我们创建一个候选区域数据库(在集合中除掉,另外也除掉那些和有重叠的),考虑中的其它区域作为与不相似的区域。我们使用从中检索它的相似区域。理想情况下应该是排在最顶部的。
为评价方法的效率,我们重新使用这2000个随机采样的以在上搜寻并记录每种方法的平均运行时间。
基线
评价有效性:将Triplet与下列相似性度量基线方法比较:
SPM,Grid,SVSM
评价效率:将ExactSFRS方法与下列搜寻基线方法比较:
Quad,BruteSFRS
评价指标
- HR@10:给出一个查询返回的top-10区域集合,如果那么记HR@10=1,否则记HR@10=0。
- MRR:。其中表示对于查询,在中的排序。我们在实验中汇报的是所有查询的平均MRR值。
Triplet有效性
改变噪声比率
确定移动距离为50m(方向任意),噪声比率改变范围从0.05到0.2。
可以看到Triplet在新加坡和纽约两个数据集上HR@10和MRR两个指标都显著高于基线方法。且通过噪声比率增大后Triplet减小的幅度很小可以看到它对噪声的鲁棒性很强。
改变移动距离
固定噪声比率为0.05,改变移动距离从50m到200m。
在新加坡和纽约两个数据集上Triplet依然在两个衡量标准上都是最好的。
另外可以看到当添加较大的移动的时候Triplet的表现会有明显的下降,这是因为大幅度移动目标可能会改变相对位置的形式,这会影响到相似度(因为本模型的相似度本来就把相对位置考虑进去了)。
消融实验
图中斜杠后面的部分表示从完整的Triplet模型中去除的部分。
RL:基于比率的训练损失,HM:难例挖掘,LF:在CNN中使用大的滤波器作为改进(因为小的滤波器经常应用于图像数据)
可以看出使用大滤波器(LF)和难例挖掘(HM)是对在地理区域上训练triplet网络最重要的。另外结果也表明基于比率的训练损失(RL)能够提升效果。
ExactSFRS和ApproxSFRS的效率
整体效率
下图展现了在三个数据集上找top-1相似区域各方法的平均运行时间,可以看到ExactSFRS显著胜过两种基线方法。
可扩展性
相似区域N的变化:
N从1变化到100,可以看到ExactSFRS在N从1到100的情况下在美国数据集上运行时只增加5%。
区域中目标数量的变化:
ExactSFRS方法在处理含有更多目标的查询时反倒会更快。
区域范围大小的变化:
这种变化下ExactSFRS和基线Quad的变化趋势都是随区域增大运行时间增长
效率和准确率的折衷
我们将ApproxSFRS方法中队列最大长度M从1变化到(时其实就是ExactSFRS方法),下图为做top-1相似区域搜寻时平均运行时和误差随M变化的情况,其中“误差”定义为ExactSFRS方法和ApproxSFRS方法所产生出的值的差距。
可以找到这样一个很好的折衷点。
词汇表
- metric learning 度量学习
- branch and bound 分支定界
- perceive 察觉,感觉
- interactively 交互式地
- skewed 歪斜的,曲解的
- germane 有密切关系的,贴切的
- prone to 易于,倾向于
- latent 潜在的,隐藏的
- exhaustive search 穷举搜索
- recursively 递归地