如何用GNN提高ETAs准确率
如何用GNN提高ETAs准确率,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
兴隆台网站建设公司创新互联公司,兴隆台网站设计制作,有大型网站制作公司丰富经验。已为兴隆台上千提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的兴隆台做网站的公司定做!
GNN提高ETAs准确率
主要核心思想是:
把道路切割成一个个的路段,每个路段视为一个节点,路段的相对位置构成节点间的边,形成路网的一个子图(文章称作Supersegments,超级路段) 然后使用GNN模型来对超级路段的行程时间进行预估。
把道路切割成超级路段
DeepMind把路网切割成一个个的路段,超级路段由多个相邻路段组成。也就是说,超级路段包含了几个路段,且每个路段都有特定的长度和相应的速度特征。每一个路段对应一个节点,一条路上的连续路段存在边,或者通过路口进行连接
<<< 左右滑动见更多 >>>
该系统专门有一个模块(route analyser,路由分析器)来专门处理大量的道路信息并构建超级路段。
而构建的模型则是用来预测每个超级路段的行程时间(travel time)。
预测模型
Deepmind也尝试了几个模型:
为每一个超级路段配上一个全连接网络,效果也不错;但超级路段的长度是动态的,所以需要单独为每个超级路段都训练一个模型,大规模下这显然不现实。 RNN模型能够处理变长序列;但是公路结构是复杂的,这一类模型难以处理;
所以最终选择了图神经网络,把局部路网视为一个图。也就是说,超级路段其实就是一个根据交通密度来随机采样形成的道路子图。
这也说明了每个路段的长度是不一致的,是根据流量密度来划分。
GNN不仅可以处理前后两段道路,还可以处理各种复杂的道路,比如交叉口。通过这种特性,DeepMind实验发现,通过把超级路段范围扩展到相邻道路,而不仅仅是只包含主道路,能够获得性能上的提升(比如说某条小巷的拥堵、甚至堵到了主干道)。
通过考虑多个路口的情况,模型可以考虑到转弯处、并道时的延误和走走停停情况下的总时间。
无论多长的超级路段(两个路段或者数百个路段组成的),都能用同一个GNN模型来处理。
从研究到生产力
DeepMind发现GNN对训练过程(training curriculum)的变化非常敏感,主要原因是训练过程中使用的图结构的差异太大。一个batch中每张图的节点数量从两个到一百多个都有。
在这里我有个疑惑,难道不是每个超级路网采样相同的节点,估计出每个路段的通行时间,然后再根据用户的起点终点来拼接出总时间?就算说全球路网巨大,难以为每一个路段都计算,但还是能根据历史记录来找出特定的“常用”路段。所以还是得等他们出论文再看看怎么处理的。
DeepMind也尝试了几个技术:
在监督条件下的新型强化学习技术。 在预定义训练阶段之后,DeepMind使用指数衰减学习率计划来稳定模型的参数。 还尝试了集成技术,从而观察是否可以减少训练过程中的模型差异。
这里原文写得挺乱的,所以我姑且把涉及到技术列出来,到底是组合使用还是依次尝试,还得琢磨琢磨。
最后,最成功的解决方案是使用 MetaGradient 来动态调整训练期间的学习率,从而可以有效地使系统学得自身最优的学习率计划。最终实现了更稳定的结果,使得该新型架构能够应用于生产。
自定义损失函数实现模型泛化
DeepMind发现,线性组合多个损失函数(适当加权)能够极大地提升了模型的泛化能力,避免过拟合。具体来说,这个多损失目标使用了:
模型权重的正则化因子; 全局遍历时间上的 L2 和 L1 损失; 图中每个节点的 Huber 和负对数似然(negative-log likelihood, NLL)损失。
虽然没有提高训练的指标,但是能够更泛化地应用在测试集和端对端实验上。
目前,DeepMind 还在探索,在减少行程估计误差(travel estimate errors)为指导下, MetaGradient 技术是否可以改变训练过程中的损失函数的组合成分。这项研究受 MetaGradient 的启发,并且早期实验得到不错的结果。
看完上述内容,你们掌握如何用GNN提高ETAs准确率的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
分享题目:如何用GNN提高ETAs准确率
文章路径:http://cdiso.cn/article/gedscg.html