位置数据,是选址、商铺推荐、广告位投放等业务的重要基础。是否可以在保护原始数据不被泄露的情况下,达到相近的业务效果?一种解决思路就是通过真实轨迹学习城市人群的出行分布来生成轨迹。生成轨迹可以代替包含用户隐私信息的真实轨迹,来达到相近数据分析、上层业务建设的效果,且避免原始位置信息外泄。更多关于轨迹生成算法在智慧城市中的应用场景,在笔者往期文章中有讨论。往期我们介绍了两项研究工作:跨城市的Zero-shot轨迹生成技术,和原城市轨迹生成模型。事实上,从熟悉深度学习技术应用的同学的视角来看,这两项研究工作的问题定义和解决方法会显得不常规,甚至不够干净利落——既然轨迹是随时间而生成的位置序列,是否可以将轨迹建模套在传统序列到序列(seq2seq)模型上?这正是早在2016年IJCAI的论文《DeepTransport: Prediction and Simulation of Human Mobility and Transportation Mode at a Citywide Level》就提出的方法,来自东京大学的Xuan Song团队。尽管,从效果上该工作被后续验证并不出色,但由于这一轨迹生成思路非常直观且被容易被广泛接受,笔者仍然认为有必要对该研究进行讲解,并分析其潜在的问题,来为轨迹生成技术的详解画一个暂时的句号。
问题定义
给定某一城市的轨迹集合{tr1, tr2, ..., trn},每条轨迹由GPS点序列构成,记为tri = {r1, r2, ..., rm},其中为五元组<uid, t, lat, lng, mod>,分别表示在用户在某一时刻下的位置<lat, lng>和交通方式mode(如走路、自行车、地铁)。文章的直接目标是预测轨迹在接下来若干步的位置和交通方式,学习预测模型。即给定 {r1, r2, ..., rm},预测目标是生成接下来的K步{rm + 1, rm + 2, ..., rm + K}。并通过该模型进行轨迹的多步预测,来达到模拟轨迹生成的效果。
循环神经网络与LSTM
人的出行有着很强的前后关联特点。例如,对于某一用户的历史轨迹,有交通方式序列“步行-地铁-步行-公交”,我们会认为这一轨迹对应的用户偏向于步行而非自行车。所以在下一时刻,用户选择步行的概率会大于自行车。为了建模轨迹的历史序列,作者采用了循环神经网络(RNN)。而由于轨迹可能非常长,长时间的历史信息往往不能被RNN很好地保留。作者为了增强模型的长期记忆能力而使用长短时记忆结构(LSTM)作为循环结构(如上图所示)。LSTM主要通过Input Gate、Forget Gate来分别控制当前状态、历史状态的权重分配,分别记为,并通过Output Gate控制当前时刻的隐层表征的输出权重,具体计算如下:
多任务结构:位置与交通方式预测
由于交通方式往往决定了出行路线、移动速度,而位置信息也可以反映用户正在使用的交通方式,作者提出使用多任务学习(Multi-Task Learning)来同时预测交通方式和位置。模型的结构如下图所示,主要包含了三个模块:首先,Encoding Layer采用了两个独立的LSTM网络来产生位置、交通方式序列的隐层状态;其次,隐层状态通过共享参数的两层LSTM网络,即Shared Layer,进一步统一得到深层状态。Shared Layer考虑了位置与交通方式预测任务的相关性,通过同时学习这两个任务,来强化深层表征抽取能力;后,Decoder Layer使用一层LSTM来解码并输出序列预测结果。
实验
该论文采集了东京、大阪等城市的160万用户的位置信息数据。为了验证预测的准确性,实验采用了平均方差(MSE)和平均值百分比误差(MAPE)来衡量位置预测。对于交通方式采用了准确度方法,实验结果如下:
论文提出的方法要好于其比较的基线方法。从实验里,我们可以发现,即使非常简单的DLSTM(四层LSTM)也取得了不错的实验效果,而由于对轨迹进行序列特征提取和LSTM神经网络搭建与学习都非常简单,因此,该论文代表的序列到序列的方法有很好的通用性且便于工程实现。
作者同时进行了轨迹生成的验证。如上图所示,作者首先选了一条真实的轨迹数据(白线),然后,真实轨迹的起点与起始时间被输入到模型中,由模型生成后续的轨迹位置、交通方式,由绿线、橙线、红线分别表示该用户的行走、地铁、与汽车移动轨迹。可以看出,作者所挑选的这个例子中,生成的轨迹与真实轨迹有近乎重叠的准确度。
讨论
虽然作者强调了该研究在预测任务和轨迹生成任务的同等重要程度。然而,轨迹生成任务,事实上并没有被该模型很好地解决。正如论文所说,轨迹生成需要输入起始点与起始时间,然而,对于一个城市,起始点与出发时间的分布获取本身就是一个很有挑战的任务。另外,实验中对生成轨迹的准确度验证,也并没有采用量化验证,而是简单的个例分析。并且作者给出的这一个例分析,也必然是有选择性地挑出来的——即使模型完全准确,一个起点必定会有多个终点,作者没法保证生成的轨迹总是吻合他用来比较的真实轨迹(白线),作者至少需要对比在起点固定的情况下,生成轨迹的终点分布与真实轨迹的终点分布误差。这里值得一提的是,为了避开该模型对起始点的依赖,一种做法是采用生成式模型,如对抗式生成网络,将轨迹从随机生成的隐层表征解码为时空序列上,然而这超出了本文的讨论范围,且训练序列对抗神经网络也会带来新的参数调整和模型选择的挑战。生成轨迹任务,至少需要验证起终点分布的准确度验证。这曾在我们的篇介绍文章《What is the mobility of a new city: transfer mobility knowledge across cities》提到过。前文介绍的《A Non-Parametric Generative Model for Human Trajectories》也有同样的问题——也同样没有验证起终点分布的有效性,而是简单通过比较每一时刻的人群空间分布来验证生成结果有效性。对于城市中的轨迹分析挖掘应用,起终点分布是极为重要的信息。例如对于交通规划来说,起终点的分布反映了用户的出行需求,若城市出现密集的起终点对没有被交通网络覆盖,则有很大的公交建设必要。其他依赖于准确起终点分布的应用还包括出行服务、物流规划、线下零售。基于序列到序列模型的做法,无法显式地刻画起终点分布这一信息。另外,城市环境对于人群出行的影响,也有待深入研究。如果不结合城市中的多源数据,如POI、路网,仅从轨迹学得生成模型,那么即使在理想的情况下,模型也只能体现该城市的出行现状(这个理想的情况往往还难以达到),随着城市的演变,模型的实用性将越来越弱。由于本文主要讨论IJCAI 2016基于序列到序列模型的算法和实验结果,这里不对轨迹生成技术的可学习性、与传统生成模型相比的特殊性、准确性验证、实际应用角度做过多展开。下一期,笔者将单独列一篇文章,结合轨迹挖掘在工业界的实际应用,从更宏观角度讨论这些问题。