如何用GNN提高ETAs准确率,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
GNN提高ETAs准确率
主要核心思想是:
把道路切割成超级路段
DeepMind把路网切割成一个个的路段,超级路段由多个相邻路段组成。也就是说,超级路段包含了几个路段,且每个路段都有特定的长度和相应的速度特征。每一个路段对应一个节点,一条路上的连续路段存在边,或者通过路口进行连接
<<< 左右滑动见更多 >>>
该系统专门有一个模块(route analyser,路由分析器)来专门处理大量的道路信息并构建超级路段。
而构建的模型则是用来预测每个超级路段的行程时间(travel time)。
Deepmind也尝试了几个模型:
所以最终选择了图神经网络,把局部路网视为一个图。也就是说,超级路段其实就是一个根据交通密度来随机采样形成的道路子图。
这也说明了每个路段的长度是不一致的,是根据流量密度来划分。
GNN不仅可以处理前后两段道路,还可以处理各种复杂的道路,比如交叉口。通过这种特性,DeepMind实验发现,通过把超级路段范围扩展到相邻道路,而不仅仅是只包含主道路,能够获得性能上的提升(比如说某条小巷的拥堵、甚至堵到了主干道)。
通过考虑多个路口的情况,模型可以考虑到转弯处、并道时的延误和走走停停情况下的总时间。
无论多长的超级路段(两个路段或者数百个路段组成的),都能用同一个GNN模型来处理。
DeepMind发现GNN对训练过程(training curriculum)的变化非常敏感,主要原因是训练过程中使用的图结构的差异太大。一个batch中每张图的节点数量从两个到一百多个都有。
在这里我有个疑惑,难道不是每个超级路网采样相同的节点,估计出每个路段的通行时间,然后再根据用户的起点终点来拼接出总时间?就算说全球路网巨大,难以为每一个路段都计算,但还是能根据历史记录来找出特定的“常用”路段。所以还是得等他们出论文再看看怎么处理的。
DeepMind也尝试了几个技术:
这里原文写得挺乱的,所以我姑且把涉及到技术列出来,到底是组合使用还是依次尝试,还得琢磨琢磨。
最后,最成功的解决方案是使用 MetaGradient 来动态调整训练期间的学习率,从而可以有效地使系统学得自身最优的学习率计划。最终实现了更稳定的结果,使得该新型架构能够应用于生产。
DeepMind发现,线性组合多个损失函数(适当加权)能够极大地提升了模型的泛化能力,避免过拟合。具体来说,这个多损失目标使用了:
虽然没有提高训练的指标,但是能够更泛化地应用在测试集和端对端实验上。
目前,DeepMind 还在探索,在减少行程估计误差(travel estimate errors)为指导下, MetaGradient 技术是否可以改变训练过程中的损失函数的组合成分。这项研究受 MetaGradient 的启发,并且早期实验得到不错的结果。
看完上述内容,你们掌握如何用GNN提高ETAs准确率的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。