1 intro
- 大多数研究都将轨迹作为一个整体进行分析,忽略了局部相似的问题
- 考虑数据轨迹 T 和 查询轨迹 Tq (足球比赛数据库中一场完整比赛球员的轨迹 VS 球员某个进球前的移动轨迹)
- 当作为一个整体考虑时,T与Tq基于某些轨迹相似性度量,它们并不相似
- 但T的某些部分与查询轨迹非常相似
- ——>使用传统的相似轨迹搜索查询,尽管其中T一部分与查询轨迹Tq非常相似,T也会被排除
- ——>在查询过程中,将子轨迹视为基本单元,并且将查询轨迹Tq作为一个整体进行分析
- 考虑数据轨迹 T 和 查询轨迹 Tq (足球比赛数据库中一场完整比赛球员的轨迹 VS 球员某个进球前的移动轨迹)
2 问题定义
-
给定一条数据轨迹 和一条查询轨迹
-
相似子轨迹搜索(SimSub)问题是查找一个T的子轨迹T[i, j],其中i和j 属于[1, n],这段轨迹与查询轨迹最为相似
-
即最大化,θ为相似性度量
-
3 轨迹相似度指标
- t2vec
- 通过使用一个循环神经网络RNN得到一条轨迹的embedding
- 通过计算两条轨迹的embedding距离得到两轨迹的相似度
- 由于查询轨迹Tq在搜索过程中是不变的,所以只需要生成一次embedding
- —>在三个方法中,t2vec是时间复杂度最低的相似度检测方法
- DTW
- Frechet
4 强化学习匹配子轨迹(RLS)
模型遍历轨迹的每一个点,由强化学习的agent来决策该点是否分割
4.1 强化学习四元素定义
State | 一个三元组
|
Action | 一共有两个action,分割或者不分割,即0或1的action集合 |
Transition | 由于在分割轨迹的过程中,当执行一个action后,状态转移概率是未知的,所以此问题没有transition的具体形式 |
Reward | 执行action之后与之前的最佳相似度的差值
|
4.2 learning
(1)从数据库中取出 数据轨迹T和查询轨迹Tq
(2)Agent从Environment中获取当前节点的state
(3)Main Network根据Q函数最大化的结果来输出action(分割或者不分割)
(4)Agent做出该action,并与Environment交互
(5)Environment接收到Action后,更新状态S‘
(6)Environment接收到Action后,将相应的reward提供给Agent
(7)agent将(s,a,r,s')送入 replay buffer
(8~10)main network 采样一个batch的experience replay 进行参数更新
5 RLS with skip
- 为了增加分割决策的效益,在RLS的基础上增加了k个action:skip j 个节点(j=1~k)
- 跳过一些节点不再进行分割决策
- 即不会使用网络对其是否分割的决策做计算
- 跳过后其效果和不分割结果上是完全一样的
- 比如跳过j个节点,那么分析完是否分割后,需要直接跳到,判断他是否需要分割
5.1 举例
6 实验