【笔记】Loc2Vec: Learning location embeddings with triplet-loss networks

这是个博客的笔记。。。
https://www.sentiance.com/2018/05/03/loc2vec-learning-location-embeddings-w-triplet-loss-networks/
https://www.jiqizhixin.com/articles/2018-06-25-5

概述

场地映射算法的目标是根据位置测量数据,推测用户要去的目的地。本文开发了一种深度学习的解决方案,用于编码地理空间关系和描述位置周围情况的语义相似度模型。

模型的功能是输入一个经纬度坐标,通过模型的计算将其编码为一定维度的向量。其中,本文是以点附近的要素栅格化做CNN来建模,类似word2vec的embedding技术。

GIS数据栅格化

首先要考虑的是如何表达位置的环境信息
本文通过将点附近的地理要素栅格化,形成12个栅格图层作为位置信息。
存在PostGIS中的OSM数据,由Mapnik渲染为OpenStreetmap-carto stylesheets样式的栅格地图。另外做个数据增强,空间上的旋转和平移等。

相似表示

语义相似的图像块对应于该空间中互相接近的嵌入向量
地理学第一定律:在地表空间中,所有事物是相互联系的,但是距离近的事物比距离远的事物间的联系更密切。

自监督学习:三重网络

三重网络:一种自监督学习方法,锚点,正例,反例,在embedding空间中使锚点和正例尽可能相近,和反例尽可能远离
在栅格化数据中数据增强的“平移旋转”的图像,作为正例。远离的位置,作为反例。
为防止神经网络只学习到简单的变换,在训练过程中为每个正实例随机启动或禁用了 12 个通道中的某些通道。这会迫使网络认为正例图像块与锚图像是近似的,即使该信息的某个随机子集是不同的(比如没有建筑、没有道路等)。

d + = e ( a , p ) e ( a , p ) + e ( a , n )

d = e ( a , n ) e ( a , p ) + e ( a , n )

上述损失函数很容易达到 d 接近于1的情况而丧失学习效果,可以改用SoftPN三重损失函数,即将 ( a , n ) 替换成 min ( ( a , n ) , ( p , n ) ) ,即使得正例和锚点都跟负例很远

神经网络结构

CNN+Dense Layer+Embedding Layer
使用dropout和Leaky ReLU激活函数,dropout加入整个丢弃通道的操作
完整网络用 Keras 实现的,仅包含 305 040 个参数,并且使用 Adam 优化器在 p3.2xlarge AWS 机器上训练了两周时间。

训练数据

抽取用户过去100万个定位为止+50万个用户交通工具的位置,共150万个点
每个点取半径100米做样本,每个位置平移+旋转初20张正例,偏移量0-80米,共3000万张图片
每个mini-batch含20个位置,随机5对正例,负例随机,每个mini-batch大小为100

可视化



猜你喜欢

转载自blog.csdn.net/jianbinzheng/article/details/80991554