• Physics-infused Machine Learning for Crowd Simulation 论文理解


    Physics-infused Machine Learning for Crowd Simulation 论文理解

    新学期写的第一篇论文理解,是一篇在Jure他们的工作的基础上,将AI粒子仿真和数学上的人口流动模型进行结合,感觉结合的挺新颖,而且因为有物理模型支持,结果也不会特别差,是一个比较好的方向似乎。而且本文写的也比较流畅(高调),还挺有意思的,发表在KDD上的文章就是不一样。

    摘要

    这里作者主要提到,人流的模拟在交通管理等领域是一个重要的问题,但是呢因为人流的活动太复杂,大多数物理数学模型不太行,但是深度学习模型泛化能力又不太好。因此呢本文提出了一个兼具物理模型和深度模型优点的,注入了物理模型的深度模型,主要思想就是让两个模型互相学。这样的话有个好处,深度模型能够更好的识别出现实数据中的一些信号,而通过在深度模型上做回归,又能得到更好的物理模型。甚至本文最后提出了一个新的模拟人口流动的物理模型,所以本文的工作作者认为可以有利于科学发现以及理解人口流动的动态

    一、介绍

    先提到了模拟器的重要性,是很多下游任务的重要的基础,比如能够很好的模拟人群的话就可以优化建筑物的结构来提升效率,而且很多强化学习的任务需要一个很好的模拟器。

    接着提到了模拟器的分类,基于物理的(商业用的很多),但是物理的作者认为不行,因为没有普适的物理公式能模拟复杂的人口流动。所以基于深度学习的,因为可以捕获更复杂的信号,对于复杂的人口流动能够捕捉更好,比如说碰撞的避免。但是基于深度学习的泛化性能不是很好,误差累积非常快。所以二者是优势互补的,所以作者就提出了本文这个模型。

    模型主要分三个部分,物理模型深度学习模型交互机制。模型又有两个过程,物理模型告谕的深度学习深度学习辅助的物理模型发现。前者在一些工作中已经被证明非常有效了,后者在一些工作也被证明用回归就可以取得很好的效果。基于此就可以发现更好的物理定律。

    接着作者简单介绍了,两个过程的具体做法:对于物理模型告谕的深度学习,这个阶段分三个子部分:1)首先提出了一个和物理模型很像的深度模型;2)接着提出了一个学习机制,使模型能从现实数据和基于物理模型生成的数据学习;3)提出了一个专门学习碰撞避免的模块。对于深度学习辅助的物理模型发现,就是对学习好的模型生成的数据做一些回归,为了结果稳定还提出了一个基于拒绝概率的采样算法。

    最后有提到在两个现实数据集验证,学到的物理模型和深度模型都是最好的,而且学到的深度模型泛化性能特别好。

    二、问题定义

    问题可以形式化为 S p t + 1 = f ( S p t , S e t ) S_{p}^{t+1}=f(S_p^{t},S_e^t) Spt+1=f(Spt,Set),其中f是我们要学的模拟器, S p t S_p^t Spt指的是在t个时间步行人的内部状态,包括它的位置,加速度,速度,终点等。 S e t S_e^t Set表示在t个时刻的环境信息,包括障碍的位置等信息。

    由于一些量是可以互相推出的,所以可以直接将预测问题改成预测人的加速度,这样速度和位置都可以由下式推出,其中p是位置,a是加速度,v是速度。
    v t + 1 = v t + Δ t ⋅ a t + 1 p t + 1 = p t + Δ t ⋅ v t + 1 v^{t+1} = v^t + \Delta t \cdot a^{t+1}\\p^{t+1} = p^t + \Delta t \cdot v^{t+1}\\ vt+1=vt+Δtat+1pt+1=pt+Δtvt+1

    三、物理模型告谕的深度学习

    作者在讲这部分之前先让大家回顾了一下三个关键的设计步骤:1. 找到一个很适合我们问题的物理模型。2. 设计一个深度模型很贴合这个物理模型。 3. 设计交互模块使得物理模型和深度模型能互相学习

    3.1 物理模型

    这里作者用的是一个经典的社会力模型,力就是力学的力的意思,这个模型能够很好的模拟个体、障碍物、和目标之间的相互作用关系,如下式。

    在这里插入图片描述

    其中P指的是人的集合,O指的是障碍的集合。 f i D f_{iD} fiD指的是终点的拉力, f j i f_{ji} fji指第j个人对第i个人的推力, f o i f_{oi} foi指第o个障碍物对第i个人的推力。推力和两者的距离以及他们目前的方向有关,拉力和期待走的速度 v i d v_{id} vid,当前走的速度 v i v_i vi,与当前行走的方向有关。 τ \tau τ是一个关于时间的正则化项。

    3.2 深度模型

    作者在这里先提到了设置一个好的深度模型是很困难。首先呢,深度模型能从现实和基于物理模型生成的数据集学出比物理模型更好的结果这个结论都不是很常见;其次,怎么设计交互机制使得能让深度学习模型学到长时间的泛化能力以及人流的复杂的动态(比如为了避开碰撞,有人喜欢乱窜,有人喜欢等)也是问题。所以作者设计了以下三个模块。

    3.2.1 基于图网络的人流模拟器

    这个其实就是仿照Jure那个文章做的,把人看成粒子。具体的就是仿照社会力模型,基于图网络,设计了一个神经网络结构,进行邻居间消息的交换,得到最后的表示,如下图。

    在这里插入图片描述

    对于具体如何构建这张图,作者的设计是考虑每个人的视线范围,将本人视线范围内所有人与本人连一条边,而对于边的embedding是基于两个人的相对位置的,即 φ e d g e ( s i , s j ) = R e s M L P ( s j − s i ) \varphi_{edge}(s_i,s_j)=ResMLP(s_j-s_i) φedge(si,sj)=ResMLP(sjsi),而对于最后的点的函数,直接就是一个相加,默认了人和人之间作用是独立的。值得一提的是,对于边界,本文也设置为了一类点进行学习。

    3.2.2 学生和老师共同学习算法

    由于现实数据中有很大噪声,以此只训练一个时间步是很不可行的,所以本文要以此训练T个时间步,但是这个对于计算很不友好,而且很难收敛,所以提出了一个学生和老师共同学习算法。

    首先,先用真实的标签训练出一个模型,损失函数为 L T = 1 N ∑ t = 1 T L p ( φ ( s t − 1 ) , p t ) L_T=\frac 1 N \sum_{t=1}^T L_p(\varphi(s^{t-1}),p^t) LT=N1t=1TLp(φ(st1),pt)

    接着呢,再微调模型,增加了一个随时间衰弱的项,这样可以更关注长期的精准性,损失函数为 L S = 1 N ∑ t = 1 T λ s T − t L p ( φ ( s t − 1 ) , p t ) L_S=\frac 1 N \sum_{t=1}^T \lambda_s^{T-t}L_p(\varphi(s^{t-1}),p^t) LS=N1t=1TλsTtLp(φ(st1),pt)

    3.2.3 碰撞避免学习器

    接着作者发现还是很难学习到碰撞避免,通过观察数据发现,大家只用很小的努力来避免碰撞,比如侧个身子之类的,甚至不会减速。所以专门设置了个损失函数 L C = 1 N ∑ t = 1 T ( λ c ( p ^ t − p t ) ⋅ n ) L_C = \frac 1 N \sum_{t=1}^T(\lambda_c (\hat p ^t- p^t)\cdot \bf{n}) LC=N1t=1T(λc(p^tpt)n),其中 n {\bf n } n是和从起点到目标点方向正交的方向。接着作者又加了个下游任务,预测两个人会不会碰撞,相当于给表示里增加一些信息吧,损失函数就是交叉熵。值得一提的是后文有提到,这个碰撞是后期基于两个人距离小于一定距离小于一定时间就判断为碰撞的,不是数据集本身的标注。

    3.3 交互机制

    对于物理模型告谕的深度学习,具体的,在3.2.2里的第一阶段,用物理模型生成的数据进行训练,得到一个很好的起点,接着再用真实数据微调。

    对于深度学习辅助的物理模型发现,作者用+、-、x、/、exp这些符号去拟合学到的模型。当然由于这个公式组合太多,就先有专家设计了几个可能的表达式来看MSE来判断哪个好,接着又由于数据的不平衡,将样本分成了m组,每组基于一个拒绝概率进行采样, p k = 1 − log ⁡ ( N k ) 2 / N k p_k=1-\log(N_k)^2/N_k pk=1log(Nk)2/Nk

    四 实验

    实验结果当然很好啦,我就提几个可能有用的讲一讲

    4.1 数据集

    选的数据集一个叫GC,一个叫UCY,两个数据集很不同。GC里有从1个小时车站视频里的得到的12684段标注了的轨迹,UCY是一个大学里216秒视频里得到的528段标注的轨迹。

    4.2 泛化性能验证

    相当于在GC上train,在GC上没出现的片段和UCY上验证结果都很好。

    4.3 消融实验

    消融实验其实会发现teacher的作用非常之大,如果没有teacher误差会特别大,所以说这个基于物理模型生成数据进行训练还是很有用的。

    4.4 物理公式发现

    在这里插入图片描述

    作者最后还是发现了一个比较有趣的人和人直接相互作用的公式,有关于碰撞距离避免的项,有为了避免碰撞变换角度的项,还不错。

  • 相关阅读:
    el-table实现单选和隐藏全选框和回显数据
    动态规划01背包问题
    mysql 原生语句点滴学习记录
    cs11 Python flask Python
    Leetcode1021. 删除最外层的括号(simple)
    Python爬虫:selenium动态加载HTML的常用方法【汇总笔记】
    洗地机什么牌子好用?洗地机排名
    数字化转型中,企业设备管理会出现什么问题?JNPF或将是“最优解”
    [计算机毕业设计]大数据的B站数据分析与可视化
    DataLoader的使用1
  • 原文地址:https://blog.csdn.net/Rising_shit/article/details/126820398