本申请要求2017年9月8日提交的标题为“SYSTEM AND METHOD FOR RIDE ORDERDISPATCHING(用于乘车订单分派的***和方法)”的美国临时专利申请号62/555,879的优先权,所述美国临时专利申请的全部内容通过引用并入本文。
具体实施方式
可以为运输服务提供交通工具平台。这种交通工具平台也可以被称为交通工具呼叫或交通工具分派平台,可通过如安装有平台应用的移动电话等设备来访问。通过所述应用,用户(乘车请求者)可以向交通工具平台传输运输请求(例如,上车位置、目的地、用户的当前位置)。交通工具平台可以基于各种因素(例如,与请求者的位置或上车位置的接近程度)将请求转发给交通工具驾驶员。交通工具驾驶员可以从所述请求中进行选择,并且每个驾驶员可以选择一个请求来接受、履行所述请求、并相应地得到报酬。在每个行程之后,交通工具驾驶员可以搜索更多的请求或者从基于推送的分派平台接收更多的请求,并且结果可以根据对交通工具服务的需求而变化。例如,如果在周末晚上交通工具在夜生活场所,结果可能返回许多请求,或者如果在工作日晚上交通工具在偏远的区域,结果可能不返回任何请求。
当前提供运输的驾驶员依赖经验或随机决定是否等待乘客、重新定位到另一个位置或接订单。通常,驾驶员可能只是接受任何第一个可用的订单,而不考虑这对当天总收入的影响。为了提供至少减轻当前实践的缺陷的技术方案,公开了乘车订单***和方法。除了仅仅向驾驶员提供可用乘车订单之外,交通工具平台可以自动确定报酬最大化策略以提供给驾驶员,例如建议驾驶员等待、重新定位或接受行程。
所公开的***和方法可以基于历史数据(诸如关于时间和位置的各种行程和报酬)来训练机器学习模型,以获得在报酬最大化方面超过历史数据中反映的决策策略的最优策略。基于机器生成的策略和相应地分派的乘车订单,所公开的***和方法可以帮助交通工具驾驶员每天获得比仅仅依靠个人经验更多的收入,从而提高他们的工作效率。
由所公开的***和方法使用的机器学习模型可以包括经修改的神经网络(例如,深度神经网络(DNN))和强化学习(RL)算法的组合。在常规DNN中,需要提供正确的输入和输出,并且需要校正次优动作。然而,在如乘车订单分派等情况下,正确的输入和输出(例如,在所有位置的正确分派动作)可能太复杂,并且所有可能的状态和动作(例如,交通工具位置和乘车订单分派)可能太多而无法收集。在一些实施例中,如下文更详细描述的,与RL算法的组合消除了对正确输入和输出以及次优动作校正的要求,从而以可伸缩的方式利用DNN的力量。
本公开的各种实施例包括***、方法和非暂态计算机可读介质,所述***、方法和非暂态计算机可读介质用于确定和分派乘车订单或以其他方式提供可以使交通工具驾驶员在给定时间段(例如,一天)内的总收入最大化的决策序列。在一些实施例中,乘车订单分派***包括处理器和非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储有指令,所述指令在由所述处理器执行时使所述处理器执行方法。所述方法包括:从计算设备获得交通工具的当前位置;将所述交通工具的所述当前位置和时间输入到经训练的神经网络模型以获得针对所述交通工具的动作信息,所述动作信息包括:停留在所述交通工具的所述当前位置、重新定位所述交通工具、或接受乘车订单;以及将所述动作信息传输到所述计算设备以使所述交通工具停留在所述当前位置、重新定位到另一位置、或者通过前往到所述乘车订单的上车位置来接受所述乘车订单。
在一些实施例中,一种用于乘车订单分派的方法可以包括:将关于交通工具的位置和时间(例如,一天中的时间)的信息输入到经训练的神经网络模型;以及基于从经训练的神经网络模型生成的策略,获得针对交通工具的动作信息。动作信息可以包括:停留在交通工具的当前位置、重新定位交通工具、接受乘车订单、或其他动作。神经网络模型包括深度神经网络和强化学习算法。神经网络模型包括一个或多个动作输入、一个或多个状态输入、和状态-动作值输出。
图1图示了根据各种实施例的用于分派乘车订单的示例性***100。如图1所示,示例性***100可以包括至少一个计算***102。***102可以在如移动电话、平板电脑、服务器、计算机、可穿戴设备(智能手表)等各种设备上实施或作为所述各种设备来实施。上述***102可以安装有适当的软件(例如,平台程序等)和/或硬件(例如,电线、无线连接等)来访问***100的其他设备。计算***102可以包括一个或多个处理器104、一个或多个存储器106以及一个或多个网络端口105。存储器106可以是非暂态的并且是计算机可读的。存储器106可以存储在由一个或多个处理器104执行时使一个或多个处理器104执行本文描述的各种操作的指令。一个或多个处理器104和/或一个或多个存储器106可以被实施为下文参考图5描述的一个或多个电路。网络端口105的进一步描述也可以参考图5中的网络/通信接口518。
***100可以包括***102可访问的一个或多个数据存储装置(例如,数据存储装置108)和一个或多个计算设备(例如,计算设备109)。在一些实施例中,***102可以被配置成用于从数据存储装置108(例如,历史运输行程的数据库或数据集)和/或计算设备109(例如,驾驶员或乘客用来捕获如时间、位置和费用等运输行程信息的计算机、服务器、移动电话)获得数据(例如,多个交通工具运输行程的位置、时间和费用)。***102可以使用所获得的数据来训练模型以进行乘车订单分派。位置可以包括交通工具的GPS(全球定位***)坐标。
***100可以进一步包括耦接到***102的一个或多个计算设备(例如,计算设备110和111)。计算设备110和111可以包括如手机、平板电脑、计算机、可穿戴设备(智能手表)等设备。计算设备110和111可以向***102传输数据或者从***102接收数据。因此,在各种实施例中,***102可以被称为乘车订单分派***,所述乘车订单分派***包括一个或多个网络端口和一个或多个电路,所述一个或多个网络端口用于与向在线运输服务平台注册的用户终端(例如,计算设备110和111)通信,所述一个或多个电路耦接到所述一个或多个网络端口。在操作期间,所述电路可以执行本文描述的各种方法和步骤。
在一些实施例中,***102可以实施在线信息或服务平台。服务可以与如汽车、自行车、船和飞机等交通工具相关联,并且平台可以被称为交通工具(服务呼叫或乘车订单分派)平台。平台可以接受运输请求、标识交通工具以履行所述请求、安排上车、并处理交易。例如,用户可以使用计算设备110(例如,安装有与平台相关联的软件应用的移动电话)来向平台请求运输。***102可以接收所述请求并且例如通过将所述请求发布到驾驶员携带的移动电话来将其转发给各个交通工具驾驶员。交通工具驾驶员可以使用计算设备111(例如,安装有与平台相关联的应用的另一移动电话)来接受所发布的运输请求并获得上车位置信息。如运输费等费用可以在***102和计算设备110和111之间进行交易。一些平台数据可以存储在存储器106中或者可以从数据存储装置108和/或计算设备109、110和111取得。例如,对于每个行程,起点和目的地的位置(例如,由计算设备111传输)、费用和时间可以由***102获得。
在一些实施例中,***102和计算设备中的一个或多个计算设备(例如,计算设备109)可以集成在单个设备或***中。可替代地,***102和一个或多个计算设备可以作为单独的设备来操作。(多个)数据存储装置可以在***102可访问的任何地方,例如,在存储器106中、在计算设备109中、在耦接到***102的另一设备(例如,网络存储设备)中、或者在另一存储位置(例如,基于云的存储***、网络文件***等)等。尽管***102和计算设备109在这个图中被示为单个部件,但是应当理解,***102和计算设备109可以被实施为单个设备或耦接在一起的多个设备。***102可以被实施为单个***或彼此耦接的多个***。通常,***102、计算设备109、数据存储装置108以及计算设备110和111能够通过一个或多个有线或无线网络(例如,因特网)彼此通信,通过所述网络可以传送数据。下文参考图2至图5来描述***100的各个方面。
图2图示了根据各种实施例的用于分派乘车订单的示例性***200。图2中示出的和下文呈现的操作旨在是说明性的。
在各种实施例中,***102可以执行以下操作:从计算设备获得交通工具的当前位置;将所述交通工具的所述当前位置和时间输入到经训练的神经网络模型以获得针对所述交通工具的动作信息,所述动作信息包括:停留在所述交通工具的所述当前位置、重新定位所述交通工具、或接受乘车订单;以及将所述动作信息传输到所述计算设备以使所述交通工具停留在所述当前位置、重新定位到另一位置、或者通过前往到所述乘车订单的上车位置来接受所述乘车订单。
在一些实施例中,***102可以从数据存储装置108和/或计算设备109获得数据202(例如,包括下文针对历史行程描述的状态、动作和报酬的训练数据)。历史行程可以由各种交通工具完成,并且可以从如***102、计算设备110、计算设备111等设备收集如行程起点、目的地和费用等相关联行程信息。获得的数据202可以存储在存储器106中。***102可以利用获得的数据202来训练模型,或者利用获得的数据202来训练算法以学习用于分派乘车订单的模型。不提供模型而学习模型的算法可以被称为无模型强化学习算法。
计算设备111可以向***102传输查询204。计算设备111可以与服务交通工具的驾驶员相关联,所述服务交通工具包括例如出租车、叫车服务交通工具等。查询204可以包括如交通工具的当前位置、当前时间等信息。可替代地,查询204可以不包括交通工具的位置和当前时间。响应于查询204,***102可以从计算设备111获得交通工具的位置并且从任一来源获得当前时间。因此,***102可以向计算设备111或一个或多个其他设备发送数据207。数据207可以包括如在当前位置等待、重新定位到另一个位置、接受新的请求等动作的指令或建议。数据207可以例如作为视觉和/或音频消息在计算设备111上显示或播放。可替代地,计算设备111可以是车载处理器,其根据数据207实行对交通工具的运动控制。
如所提及的,由所公开的***和方法使用的机器学习算法可以包括经修改的神经网络(例如,深度神经网络(DNN))和强化学习(RL)算法的组合。RL算法可以是例如深度Q网络(DQN)框架中的无模型函数近似,其中通过多层神经网络或多层感知器(MLP)对状态-动作值函数进行近似。得到的Q网络可以用作多驾驶员分派***中的部件。在各种实施例中,为了产生支配每个步骤的决策的最优策略,可以估计驾驶员的相应状态-动作值函数(在下文进行描述)。这个函数可以显示在特定位置和一天中的时间做出的决策对长期目标的影响。机器学习算法或至少部分地实施机器学习算法的***或设备可以被称为“代理”。对于训练,代理在定义的环境中采取动作,可以为给定的行为指派报酬(例如,履行乘车订单的乘车费用,等待没有报酬)(假设交通工具驾驶员遵循代理的确定),并且随着时间的推移,通过强化学习算法,代理可以学习再现这个行为以使报酬最大化并帮助交通工具驾驶员做出最佳决策。
在深度神经网络中,神经元可以充当基本的构建块。神经元可以接收输入信号(例如,输入数据),使用逻辑计算函数对所述输入信号进行处理,并根据计算结果传输输出信号(例如,输出数据)。当这些神经元布置成神经元网络时,它们被称为神经网络。网络中的每一列神经元称为一层,并且网络可以具有多个层,每个层中有多个神经元。具有单个神经元的网络称为感知器并且具有多层神经元的网络称为多层感知器(MLP)。例如,在图3B中示出了两个隐藏层MLP(层A1和层A2),其中输入层包括对网络的输入(状态输入和动作输入)。输入层也称为可见层,因为这可能是网络的唯一暴露部分。隐藏层以不同的比例或分辨率从输入层得到特征以形成高级特征并在输出层输出值或值向量。在每个隐藏层,网络可以将特征计算为:
A1=f(W1*X)
A2=f(W2*A1)
Q=f(W3*A2)
其中,f是取前面层的输出和权重(例如,W1、W2、W3)的组合并输出值的函数。函数f对于所有隐藏层可以相同或者可以不同。A1、A2和Q是第一隐藏层、第二隐藏层和最终输出层的连续输出。对于给定行数据X作为网络的输入,网络可以处理所述输入以获得A1、A2并最终获得预测输出Q。这可以被称为前向传递。
神经网络的权重需要通过训练来更新以准确地反映决策过程。在常规DNN中,可以将预测输出Q与预期输出(例如,独立验证的结果、手动获得的结果、交叉检验的结果)进行比较以使用损失函数来计算误差。然后,使用反向传播算法使这个误差反向传播经过网络以根据随机梯度下降来更新每一层的权重W1、W2、W3,一次一层。这可以称为后向传递。在一些实施例中,RL算法与DNN结合使用以基于目标和预测来计算损失函数,并且基于所述损失函数,使用反向传播来更新神经网络的权重,如下文所详述的。
RL算法建立在马尔可夫决策过程(MDP)的基础上,并且用于乘车订单分派的环境可以被公式化为MDP。在各种实施例中,代理以离散的步骤与环境交互。在每个步骤,代理执行动作(例如,等待、重新定位、接受乘车订单),并且相应地,从环境中,代理接收观察结果(例如,报酬和下一状态(在下文进行了描述))。也就是说,代理从一组可用动作中选择动作,并且代理移至新状态,并且确定与转移(transition)相关联的报酬。在一个示例性转移中,驾驶员被匹配到行程订单、花费时间行进到行程起点位置、并且所述行程使驾驶员移至目的地位置和时间,为此驾驶员从这个转移中赚得即时报酬(行程费用)。代理的目标是收集尽可能多的报酬。为了进一步描述MDP公式,下文描述了一些术语。所公开的MDP公式使用更多的粒度状态和动作信息并学习状态-动作值函数。
状态,s:驾驶员接行程订单时驾驶员的地理坐标和时间(例如,一天中以秒为单位的时间)。例如,s=(l,t),其中“l”是GPS坐标对(纬度,经度),而“t”是时间。“s”可能不同于与所接的行程订单相对应的运输行程的实际起点。“s”可以包含表征时空空间(l,t)的附加特征,例如(l,t)附近的需求、供应和订单履行的统计,表示为“f”。例如,s可以扩展为(l,t,f)。此外,由于不同的运输需求和模式,工作日和周末的时间可以区分开。
动作,a:动作是对驾驶员的特定行程的指派(例如,乘客上车和运输指派),由行程目的地和下车时间定义。因此,状态-动作对是(s0,s1)。
报酬,r:针对行程收取的总费用。
分段(Episode):一整天,从0:00am到23:59pm。因此,端点状态是具有与23:59pm相对应的t分量的状态。可替代地,可以使用时间框架的其他分段定义。
状态-动作值函数,Q(s,a):如果交通工具驾驶员从状态s开始并采取动作a,则直到分段的结束驾驶员将获得的预期累积报酬。这里, 其中S、A和R是s、a和r的随机变量版本。T是直到端点状态的步数,并且γ是未来报酬的折扣因子(discount factor)。在所公开的***和方法的训练中,γ可以设置为例如0.9。状态-动作值函数也可以称为Q函数或Q值。这个Q值函数给出了根据策略“π”(在下文进行描述)在状态“s”执行动作“a”的预期总报酬,其中折扣因子为“γ”。
状态值函数,V(s):如果驾驶员从状态“s”开始,则直到分段的结束驾驶员将获得的预期累积报酬。假设使用关于Q函数的贪婪策略,则状态值V(s)=maxa∈AQ(s,a)。
策略,π(a|s):将状态s映射到动作空间上的分布(随机策略)或特定动作(确定性策略)的函数。关于学习的Q(s,a)的贪婪策略由π(s)=maxaQ(s,a)给出。
在各种实施例中,可以将动作搜索添加到现有的DQN框架中以获得改进的神经网络架构。图3A图示了没有动作搜索的示例DQN。DQN假设小的离散动作空间并且仅使用状态作为输入和与每个动作的动作值相对应的多个输出(例如,Q(s,a=1)、Q(s,a=2)和Q(s,a=3))。输出的最大值用于更新神经网络。
图3B图示了根据各种实施例的用于乘车订单分派的示例性神经网络模型(具有动作搜索的DQN)。在一些实施例中,所述神经网络模型包括:输入层,所述输入层包括一个或多个动作输入和一个或多个状态输入;一个或多个隐藏层;以及输出层,所述输出层包括状态-动作值输出。所述动作包括与执行交通工具行程相关联的目的地和下车时间。所述状态包括与所述交通工具行程相关联的上车时间和所述交通工具的地理坐标。所述状态-动作值包括累积报酬。所述输入层、所述隐藏层和所述输出层按顺序排列并且每两个相邻层与一个或多个权重相关联。图3B中所示的用于乘车订单分派的具有动作搜索的示例性DQN可以应用于本文描述的各种机器学习算法或模型。在图3B所示的架构中,状态“s”和动作“a”两者被用作网络输入以获得作为单个输出的Q值。根据应用,隐藏层可以是全连接层或卷积层。可以存在比图3B所示的那两个更多的隐藏层。图3D中提供了用于训练的伪代码(算法1)。下文对DQN的描述可以参考图3B中的DQN。
在一些实施例中,所述神经网络模型通过以下方式得以训练:通过将所述动作输入和所述状态输入传递通过所述隐藏层以获得所述输出来对交通工具行程进行建模,每个交通工具行程与以下各项相关联:与起点相对应的第一状态、与目的地相对应的第二状态、与履行从所述起点到所述目的地的乘车订单相对应的动作、以及与乘车费用相对应的报酬;以及更新所述权重以使所述累积报酬最大化。
DQN(例如,在状态-动作值函数中实施)将用各分段的训练数据来训练,直到例如状态-动作值函数收敛。网络可以在每个采取的动作之后更新或者以小批量的(例如)几个采取的动作来更新。每个小批量可以被视为状态-动作(Q)值函数上的小样本点集合。这种小批量将高度相关。先前的经验可以保存在存储器(例如,上文描述的存储器106)中,并且在每个采取的动作之后,可以从这个存储器中提取小批量的经验来执行更新。在一个示例中,通过反向传播的小批量更新利用DQN框架中的以下损失函数解决了自举回归问题:
(Q(s0,a|θ)-r(s0,a)-γmaxα′∈AQ(s1,a′|θ′))2……………(1)
其中,θ′包括前一次迭代的Q网络的权重(类似于上文描述的相应层的权重W1、W2),并且A是动作空间。这里,Q(s0,a|θ)可以表示预测:具有预测权重θ的神经网络的近似Q函数;并且r(s0,a)+γmaxα'∈AQ(s1,a′|θ′)可以表示目标。损失函数可以用来更新神经网络,例如,θ′可以用θ来更新。
为了进一步提高训练稳定性,可以使用双DQN。例如,维护目标Q网络并定期与原始Q网络同步。修改(1)中的目标以便由目标网络评估argmax:
也就是说,深度神经网络可以包括两个深度Q网络。(1)中的目标r(s0,a)+γmaxα′∈AQ(s1,a′|θ′)可以用(2)代替,并且(2)与Q(s0,a|θ)之间的差可以用来更新神经网络。
在关于数据训练的一些实施例中,不同于普通的DQN算法(vanilla DQNalgorithm),训练中可以不涉及模拟环境,并且根据历史数据训练代理。例如,历史行程数据可用作训练转移(训练数据)。由于DQN是离策略(off-policy)算法,因此学***均值和标准偏差进行归一化。这些转移(经验)可以存储在重放存储器中,并且每次迭代从这个重放存储器中采样小批量。为了用作训练数据,转移可能不是从模拟器生成的并且可能不会形成完整的分段。因此,用于训练神经网络模型的数据可以包括:(a)多个交通工具行程,每个交通工具行程与测量周期相关联,以及(b)一个或多个端点状态,每个端点状态与测量周期的结束相关联。
在关于动作搜索的一些实施例中,动作搜索可以被结合到所公开的***和方法中,并且动作采取a=(l,t)的形式。由于GPS坐标和时间两者都差不多是连续的,因此精确计算(1)中的最大Q项可能不容易。此外,时间(t分量)依赖于位置(l分量),因为它反映了行程的持续时间。因此,从动作空间进行随机采样可能不合适。在一些实施例中,通过为动作构造近似可行空间(这明确了动作空间对搜索开始时的状态“s”的依赖性),可以将近似方案用于计算动作“a”。可以搜索源自s附近(例如,在距离s的阈值距离内)的历史行程,而不是搜索所有有效动作:
其中χ是所有行程的集合,并且B(s)是s落入的离散化时空仓(bin)。对于空间离散化,可以使用六边形仓(hexagon bin)***,并且在这里,六边形仓可以由其中心点坐标来表示。是行程x的s0分量。对于更大的搜索空间,评估每个动作点的值网络需要更多的计算。可以调整动作搜索空间中允许的动作数量,并且如果需要,可以在没有替换的情况下执行随机采样。相同的搜索程序可用于策略评估,其中使用历史行程数据来模拟驾驶员当天的轨迹。因此,在一些实施例中,对交通工具行程进行建模包括:对第一交通工具行程进行建模以获得与第一交通工具行程相关联的第二状态;以及从时空空间进行搜索以获得在第二状态下要执行的动作,所述时空空间在距第二状态的空间阈值和/或时间阈值内。
在关于扩展动作搜索的一些实施例中,由于某些时空区域(例如,清晨的偏远地区)中的训练数据稀疏性,上文描述的动作搜索可能返回空集。因此,在一些实施例中,可以在空间和时间空间两者中执行扩展的动作搜索。在一个示例中,第一搜索方向是停留在最后一个下车位置并等待一段时间,这对应于保持l分量(s1)不变并使st前进,直到以下情况之一发生,其中s’是搜索状态:(1)非空;(2)到达端点状态;或(3)s′t超过等待时间限制。对于(1),返回/>对于(2),返回端点状态;并且对于(3),返回s′。在另一个示例中,第二搜索方向通过空间扩展(通过搜索s的相邻六边形仓)。扩展的动作搜索可以是分层的方式,如图3C所示。在图3C中,圆形线覆盖l0的前两层相邻六边形仓,并且箭头表示搜索在时间t1>t0以l1为中心的六边形仓(第一层)和在时间t2>t1以l2为中心的六边形仓。内部红色圆圈覆盖的时空仓是B′((l0,t0),1)。
对于每一层L六边形仓,可以在适当的时间间隔内执行搜索以考虑从s到达目标六边形仓所需的行进时间。行进时间估计可以从地图服务获得。s的层L相邻时空仓可由B′(s,L)表示,并且源自B′(s,L)中的任何仓的历史行程集合可由下式表示:
当非空时,停止在第二搜索方向上增加L,并返回/>否则,返回B′(s,Lmax),即,六边形仓的中心点及其相关联时间分量。图3E中的算法2对动作搜索进行了总结。
在关于端点状态值的一些实施例中,基于上文描述的端点状态的定义,无论s1如何,st接近分段界限的末尾的Q(s,a)将接近零。因此,可以在训练开始时将s1为端点状态的转移添加到重放缓冲器以帮助在训练的早期获得端点状态-动作值。这可以有助于提高模型精度,因为在DQN的小批量更新中的状态s0的目标值是通过对在时间上在所述状态之后的状态的值进行自举来计算的。由于具有端点状态的训练样本可以形成整个数据集的一小部分,因此均匀采样将导致远离端点的许多状态的值被不正确的目标监督,从而减慢学习过程。因此,在一些实施例中,用于训练神经网络模型的数据包括:(1)多个交通工具行程,每个交通工具行程与测量周期(例如,分段)相关联;以及(2)一个或多个端点状态,每个端点状态与测量周期的结束相关联。
在关于经验增强的一些实施例中,原始训练数据是由给定历史策略生成的经验。历史策略可能没有很好地探索轨迹空间并且可能包含非常少的罕见但重要的情况,诸如需要长等待时间的转移或在行程开始前没有乘客的情况下重新定位。这种转移是当驾驶员处于这样的状态时的典型经验:即历史上很少行程从所述状态开始。如果仅根据原始行程数据训练代理,那么如果驾驶员在将来进入罕见状态(例如,当交通工具行驶到很少有人请求交通工具服务的区域并试图获得交通工具请求时),代理将无法学会做出好的决策。因此,通过动作搜索获得的转移可以补充原始训练经验。例如,对于每个时间仓,考虑中的地理边界内的一组位置被随机采样。因此,可以对随机采样的状态执行上文描述的动作搜索和扩展动作搜索,并且需要扩展动作搜索的结果转移可以被添加到重放存储器。
在关于策略评估的一些实施例中,经训练的神经网络提供了在累积报酬方面胜过现有决策数据的策略,并且所述策略可以通过以下方法来评估。由于转移数据是历史数据并且可能不一定形成完整的分段,因此可以根据过去的行程数据来构建单驾驶员模拟器,用于评估由学***均。
在一些模拟中,可以评估第一策略(关于所学习的状态-动作值函数的贪婪策略,所述贪婪策略可以是完全利用所学习的Q值的策略)和第二策略(在动作搜索空间内采取随机动作的策略)。第二策略可以反映生成历史数据的策略。并且第一策略显示出比第二策略(也是历史策略)更高的(例如,10%至20%)增益。因此,第一策略可以用于实施自动乘车订单(交通工具请求)分派以帮助交通工具驾驶员使其收入最大化。
在一个示例中,用来自两个中等城市(城市A和城市B)的一个月的快车工作日行程数据来训练用于Q值函数的神经网络。每一个小批量可以看作是Q(状态-动作)值函数上的小样本点集合。可以使用0.9的折扣因子。所有状态向量以及其总体平均值和标准偏差都可以被归一化。这种预处理对于稳定的训练可能是必要的。如图3F所示,在30000个分段之后,Q函数已经收敛。图3G示出了在每个时间仓和所有位置仓的中心点上具有一个标准偏差的平均V(s)。值网络正确地捕捉了时间空间中的趋势:平均值随着时间单调递减,并且最终时间仓的值接近于零。
在一些实施例中,对于值网络所捕捉的空间趋势。图3H至图3K分别图示了凌晨4点、上午8点、下午2点和晚上8点在测试城市中按位置的状态值。灰度编码在各图之间不具有可比性。
在一些实施例中,在图3L中比较了来自针对城市A和城市B对两个不同策略的策略评估的累积报酬。支持策略评估的行程数据来自相同两个城市的不同月份。一个策略是关于学***均分段报酬是从随机开始的100个分段的10次运行中计算得出的。如图3L所示,由DQN学***均分段报酬比历史策略高约10%至20%。
因此,所公开的***和方法可以通过软件和硬件改进的组合来自动执行用于运输提供交通工具的指令。这种好处被证明比历史策略更大。
图4A图示了根据本公开的各种实施例的示例性方法400的流程图。方法400可以在各种环境中实施,包括例如图1的***100。示例性方法400可以由***102的一个或多个部件(例如,处理器104、存储器106)或计算设备111(例如,与交通工具驾驶员相关联的移动电话)来实施。示例性方法400可以由类似于***102的多个***来实施。下文呈现的方法400的操作旨在是说明性的。取决于实施方式,示例性方法400可以包括以各种顺序或并行地执行的附加的、更少的、或替代性的步骤。
在框402,可以将关于交通工具的位置和时间(例如,交通工具开始寻找乘车订单时的时间或在履行乘车订单之后的时间)的信息输入到经训练的神经网络算法。在框404,基于从经训练的神经网络算法生成的策略,可以获得针对交通工具的动作信息。例如,动作信息可以包括:停留在交通工具的当前位置(例如,当在当前位置可能很快接收到乘车订单时)、重新定位交通工具(例如,重新定位到乘车订单或报酬更高的乘车订单更可能的另一个地方)、或者接受乘车订单(例如,当一个或多个乘车订单当前可用时)。在一些实施例中,神经网络算法包括深度神经网络和强化学习算法。神经网络算法包括一个或多个动作输入、一个或多个状态输入、和状态-动作值输出。
图4B图示了根据本公开的各种实施例的示例性方法450的流程图。方法450可以在各种环境中实施,包括例如图1的***100。示例性方法450可以由***102的一个或多个部件(例如,处理器104、存储器106)来实施。示例性方法450可以由类似于***102的多个***来实施。下文呈现的方法450的操作旨在是说明性的。取决于实施方式,示例性方法450可以包括以各种顺序或并行地执行的附加的、更少的、或替代性的步骤。
框452可以包括从计算设备获得交通工具的当前位置,所述计算设备是用户终端之一。框454可以包括将交通工具的当前位置和时间输入到经训练的神经网络模型以获得针对交通工具的动作信息,所述动作信息包括:停留在交通工具的当前位置、重新定位交通工具、或接受乘车订单。框456可以包括将动作信息传输到计算设备以使交通工具停留在当前位置、重新定位到另一位置、或者通过前往到乘车订单的上车位置来接受乘车订单。
在一些实施例中,所述神经网络模型包括深度神经网络和强化学习算法,并且所述深度神经网络包括两个深度Q网络。
在一些实施例中,所述神经网络模型包括:输入层,所述输入层包括一个或多个动作输入和一个或多个状态输入;一个或多个隐藏层;以及输出层,所述输出层包括状态-动作值输出。所述动作包括与执行交通工具行程相关联的目的地和下车时间。所述状态包括与所述交通工具行程相关联的上车时间和所述交通工具的地理坐标。所述状态-动作值包括累积报酬。所述输入层、所述隐藏层和所述输出层按顺序排列并且每两个相邻层与一个或多个权重相关联。
在一些实施例中,所述神经网络模型通过以下方式得以训练:通过将所述动作输入和所述状态输入传递通过所述隐藏层以获得所述输出来对交通工具行程进行建模,每个交通工具行程与以下各项相关联:与起点相对应的第一状态、与目的地相对应的第二状态、与履行从所述起点到所述目的地的乘车订单相对应的动作、以及与乘车费用相对应的报酬;以及更新所述权重以使所述累积报酬最大化。
在一些实施例中,对交通工具行程进行建模包括:对第一交通工具行程进行建模以获得与所述第一交通工具行程相关联的所述第二状态;以及从时空空间进行搜索以获得在所述第二状态下要执行的动作,所述时空空间在距所述第二状态的空间阈值内。
在一些实施例中,对交通工具行程进行建模包括:对第一交通工具行程进行建模以获得与所述第一交通工具行程相关联的所述第二状态;以及从时空空间进行搜索以获得在所述第二状态下要执行的动作,所述时空空间在距所述第二状态的时间阈值内。
在一些实施例中,用于训练所述神经网络模型的数据包括:(1)多个交通工具行程,每个交通工具行程与测量周期相关联;以及(2)一个或多个端点状态,每个端点状态与所述测量周期的结束相关联。
本文描述的技术由一个或多个专用计算设备实施。所述专用计算设备可以是硬接线的以执行所述技术,或者可以包括电路或数字电子设备,诸如被持久编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括被编程以根据固件、存储器、其他存储设备或其组合中的程序指令来执行所述技术的一个或多个硬件处理器。这种专用计算设备也可以将定制的硬接线逻辑、ASIC或FPGA与定制编程相结合来实现这些技术。专用计算设备可以是台式计算机***、服务器计算机***、便携式计算机***、手持设备、联网设备或任何其他设备或结合了硬接线和/或程序逻辑来实施所述技术的设备的组合。(多个)计算设备通常由操作***软件控制和协调。特别是,传统的操作***控制并调度计算机进程以供运行、执行存储器管理、提供文件***、联网、I/O服务、以及提供用户界面功能,诸如图形用户界面(“GUI”)等等。
图5是图示了可以在其上实施本文描述的任何实施例的计算机***500的框图。***500可以对应于上文描述的***102。计算机***500包括总线502或用于传送信息的其他通信机制、与总线502耦接以处理信息的一个或多个硬件处理器504。(多个)硬件处理器504可以是例如一个或多个通用微处理器。(多个)处理器504可以对应于上文描述的处理器104。
计算机***500还包括耦接到总线502的主存储器506,诸如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备,用于存储信息和将由(多个)处理器504执行的指令。主存储器506还可以用于在要由(多个)处理器504执行的指令的执行期间存储临时变量或其他中间信息。这些指令在存储在(多个)处理器504可访问的存储介质中时将计算机***500呈现为专用机器,所述专用机器被定制为执行所述指令中指定的操作。计算机***500进一步包括耦接到总线502的只读存储器(ROM)508或其他静态存储设备,用于为(多个)处理器504存储静态信息和指令。如磁盘、光盘或USB拇指驱动器(闪存驱动器)等存储设备510被提供并耦接到总线502,用于存储信息和指令。主存储器506、ROM 508和/或存储设备510可以对应于上文描述的存储器106。
计算机***500可以使用定制的硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施本文描述的技术,所述程序逻辑与计算机***相结合使计算机***500成为专用机器或者将其编程为专用机器。根据一个实施例,本文的技术由计算机***500响应于(多个)处理器504执行主存储器506中包含的一个或多个指令的一个或多个序列来执行。这样的指令可以从另一个存储介质(诸如存储设备510)读取到主存储器506中。主存储器506中包含的指令序列的执行使(多个)处理器504执行本文描述的过程步骤。在替代性实施例中,可以使用硬接线电路代替软件指令或与软件指令组合。
主存储器506、ROM 508和/或存储设备510可以包括非暂态存储介质。如本文所使用的术语“非暂态介质”及类似术语是指存储使机器以特定方式操作的数据和/或指令的介质。这种非暂态介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。非暂态介质的常见形式例如包括软盘、软磁盘、硬盘、固态驱动器、磁带或者任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、闪速EPROM、NVRAM、任何其他存储器芯片或者盒、以及所述介质的联网版本。
计算机***500还包括耦接到总线502的网络/通信接口518。通信接口518提供耦接到一个或多个网络链路的双向数据通信,所述一个或多个网络链路连接到一个或多个本地网络。通信接口518可以被实施为一个或多个网络端口。例如,通信接口518可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或调制解调器,以向相应类型的电话线提供数据通信连接。作为另一个示例,通信接口518可以是局域网(LAN)卡,以提供到兼容LAN(或与WAN通信的WAN部件)的数据通信连接。还可以实施无线链路。在任何这样的实施方式中,通信接口518发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
计算机***500可以通过(多个)网络、网络链路和通信接口518发送消息和接收数据,包括程序代码。在因特网示例中,服务器可以通过因特网、ISP、本地网络和通信接口518传输应用程序的请求代码。
所接收的代码可以在被接收到时由(多个)处理器504执行,和/或存储在存储设备510、或其他非易失性存储设备中以供稍后执行。
在前面章节中所描述的每个过程、方法、和算法均可以在由包括计算机硬件的一个或多个计算机***或计算机处理器所执行的代码模块中实施并由所述代码模块全部或部分地进行自动化。所述过程和算法可以在专用电路中部分地或全部地实施。
上文所描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式进行组合。所有可能的组合和子组合都旨在落入本公开的范围内。此外,在一些实施方式中,可以省略某些方法或过程框。本文描述的方法和过程也不限于任何特定的顺序,并且与所述方法和过程相关的框或状态可以以适当的其他顺序进行。例如,所描述的框或状态可以以不同于具体公开的顺序来执行,或者多个框或状态可以组合在单个框或状态中。示例性框或状态可以串行、并行或以某种其他方式执行。可以向所公开的示例性实施例中添加框或状态或从中移除框或状态。本文描述的示例性***和部件可以不同于所描述的那样来配置。例如,与所公开的示例性实施例相比,元素可以被添加、移除或重新排列。
本文描述的示例性方法的各种操作可以至少部分地通过算法来执行。所述算法可以包含在存储在存储器(例如,上文描述的非暂态计算机可读存储介质)中的程序代码或指令中。这种算法可以包括机器学习算法。在一些实施例中,机器学习算法可以不显式地对计算机进行编程来执行功能,而是可以从训练数据中学习来做出执行所述功能的预测模型。
本文描述的示例性方法的各种操作可以至少部分地由临时配置(例如,通过软件)或永久配置成执行相关操作的一个或多个处理器来执行。无论是临时配置还是永久配置,这种处理器都可以构成处理器实施的引擎,所述引擎操作以执行本文描述的一个或多个操作或功能。
类似地,本文描述的方法可以至少部分由处理器实施,一个或多个特定处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器或处理器实施的引擎来执行。此外,所述一个或多个处理器还可以在“云计算”环境中操作或者作为“软件即服务”(SaaS)操作来支持相关操作的执行。例如,操作中的至少一些操作可以由一组计算机(作为包括处理器的机器的示例)来执行,这些操作可以经由网络(例如,因特网)和经由一个或多个适当的接口(例如,应用程序接口(API))来访问。
可以将某些操作的执行分配到多个处理器之中,使其不是仅驻留在单个机器内,而是跨多个机器部署。在一些示例性实施例中,处理器或处理器实施的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境、或服务器群内)。在其他示例性实施例中,处理器或处理器实施的引擎可以跨多个地理位置分布。
在整个说明书中,多个实例可以实施被描述为单个实例的部件、操作或结构。尽管一种或多种方法的逐个操作被说明和描述为单独的操作,但是所述逐个操作中的一个或多个可以同时执行,并且不要求所述操作以所说明的顺序执行。在示例性配置中作为独立部件呈现的结构和功能可以实施为组合的结构或部件。类似地,作为单个部件呈现的结构和功能可以实施为独立的部件。这些和其他变化、修改、添加和改进落入本文主题的范围内。
尽管已经参考特定示例性实施例描述了主题的概述,但是在不脱离本公开的实施例的更宽范围的情况下,可以对这些实施例进行各种修改和改变。主题的这些实施例在本文中可以仅出于方便目的而单独地或共同地通过术语“发明”来指代,并且如果实际上公开了一个以上的公开内容或概念,则不旨在将本申请的范围自动地限制为任何单个公开内容或概念。
以足以使得本领域技术人员能够实践所公开的教导的细节描述了本文所示的实施例。可以使用并从本文所示的实施例得到其他实施例,从而使得可以在不脱离本公开的范围的情况下做出结构和逻辑替换和改变。因此,具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所授权的等同物的全部范围来限定。
本文描述的和/或附图中描绘的流程图中的任何过程描述、元素或框应该被理解为潜在地表示包括用于实施过程中的特定逻辑功能或步骤的一个或多个可执行指令的代码模块、段或部分。如本领域技术人员所理解的,替代实施方式包括在本文描述的实施例的范围内,其中,根据所涉及的功能,元素或功能可以从所示出或讨论的顺序中删除、被无序地(包括基本上同时地或以相反的顺序)执行。
如本文所使用的,术语“或(or)”可以以包括性或排他性的意义来解释。此外,可以为本文描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、引擎和数据存储装置之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中说明了特定操作。可以设想功能的其他分配,并且其可以落入本公开的各种实施例的范围内。通常,在示例性配置中作为单独资源呈现的结构和功能可以被实施为组合的结构或资源。类似地,呈现为单个资源的结构和功能可以实施为单独的资源。这些和其他变化、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被视为说明性的而非具有限制性意义。
除非另外具体规定,或在如所使用的环境内以其他方式被理解,否则条件语言(除其他外,诸如“可(can)”、“可以(could)”、“可能(might)”、或“会(may)”)一般地旨在传达某些实施例包括(而其他实施例不包括)某些特征、元素和/或步骤。因此,这种条件语言通常不旨在暗示一个或多个实施例以任何方式需要特征、元素和/或步骤或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下决定是否在任何特定实施例中包括或者是否将在任何特定实施例中执行这些特征、元素和/或步骤的逻辑。