zoukankan      html  css  js  c++  java
  • 《OR Talk NO.3 | 滴滴 AI Labs 秦志伟:深度强化学习在网约che交易市场中的应用》

     

     

     

     

     

     

     

     

     

     

     深度价值网络 为 transfer learning 创造了条件,在为多个城市训练得更快更好

     

     $pi$:指派订单至空闲的司机

    X(t):时刻t 的空闲司机:取决于 t 之前已经匹配的订单和策略 $pi$ 本身

    如果订单在完成之前取消,则 p(pi)=0 价格为0

    p写成 p(pi):因为 p 和 pi 有显示的依赖关系

    目标:司机总收入最大

    平均接驾距离:司机在匹配时刻离订单起始点的距离 / 所有发出的订单数

     

    o_t:空闲,或接驾

    o_t 与马尔可夫过程中的  a_t 类似,不同之处在于 o_t 会跨越多个时间单元

    转移概率是非随机的

    半马过程是【回合制】——一天结束,司机状态进入一个终止状态 

     

     

    当我们完全知道环境模型信息的时候(知道确切的状态转移概率,知道reward 函数)——就可以利用动态规划 DP 来求解价值函数

    在给定一个策略 pi 的前提下,不断通过Bellman  公式 迭代求解整个价值函数

    求解得到价值函数后,如何优化 策略 pi?——策略迭代

    两步走:1)给定 pi,求价值函数(DP或后面讲到的 model-free 的方法);

    2)基于新的价值函数,可以推导出一个贪婪策略,作为一个新的策略

     方法看似简单,但是有理论支持,能收敛到最优策略,而且收敛速度快

     方法看似简单,但是有理论支持,能收敛到最优策略,而且收敛速度快

    要从大量历史订单数据中学到价值函数,先从一个经典的 model-free 策略评估方法开始

    价值函数由一个动态规划的样式更新:

    每一次更新就是一次状态转移(就是一个行程) ——一个TD分叉,TD error;它是起始位置价值的 单步bootstrap 预测,和 当前价值函数下起始位置的实际位置 的差,求得的;

    每个更新需要得到的信息都能从一个完整的行程中得到

    如果司机在服务订单,则奖励为订单的价格,反之为0

    价值得到之后,可以定义匹配问题的边权重了;

    不仅考虑了订单的价值,也考虑了司机当前位置 的价值

     

     

     

     

     

     

     

     

     多城市间迁移:

    双路径网络

    价值网络不同种类的状态特征,对应各自隐藏层的路径,如右上图:灰色 v.s. 绿色;

    输入特征分两种:位置特征 + 可迁移特征(比如时间、时空转移、局部的供需场景——包括空闲司机数/订单数等)——

    (双路径的网络之间有个纵向链接——绿色,源城市训完后冻结,共享至目标城市;蓝色:目标城市重新训练动态更新;)

     确定性地动力学:主要包括司机位置的更新;

    随机性模型:空闲时司机的走动、上下线的行为

     好点:红色的点,偏左上角

     

    订单分开:司机可以接两种订单

    司机分开:两套派单系统;实施成本高,工程上不现实;

    方案(让两个派单算法在同一个城市运行,且最小化二者之间的干扰):时间片轮转——一天划分为8个3小时,AB方案轮流执行,按天轮换顺序;整个实验执行偶数天;

    这是一个可行但不是最好的方法

    AB测试结果:在司机收入、成单应答率上都有更好表现——代表司机和乘客的体验都有提升

     domain adpation:如何把模拟环境中的策略应用到真实环境中 


    总结一下嘉宾最后回答的几个问题:

    1. 强化学习用于订单分派时,是如何定义其策略空间和状态空间进行学习的呢?经典的 DQN 算法的应用场景是吃豆人游戏 Atari,其策略空间是固定的中 9 个可能的位置(左、右、上、下、中间、左上,等等),状态空间根据初始位置和策略迭代而来,而滴滴的派单问题,其策略空间与状态空间应该是一个动态的过。请问这是否是通过对订单数据和司机数据进行分段,形成多维空间实现?

    A:

    每一个 batch 中司机和乘客订单不一样,策略空间会不同

    通过组合解决 planning(匹配)——很好地解决了策略空间不同的问题——因为学习是一个单个体的状态价值

    状态空间:每一个车辆个体,它所在的时间空间的状态、以及它周围的一些供需特征的状态;能比较好地刻画它当时所处的是一个什么情况;


    2. 每个时期的订单数据和司机数量十分庞大,在使用强化学习时,会消耗极大的时间。是否采用了有效的操作加快收敛?训练集采用了多久的时间段进行训练呢?

    A:

    RL的scalability/样本复杂度是长久的难题

    tuning、training 有时运行个两三天是很正常的事情

    因为是一个离线的job,所以耗时不是特别地敏感

    Double DQN 确实对加快收敛很有效

    正则化的方法也能起到稳定网络的作用

    3. 基于离散的时空网格进行建模,和传统的考虑点到点的模型相比,有什么好处呢?

    A:层次化的 hierarchical 的网格系统;

    在价值函数在空间上变化比较多比较快的区域中可以用细粒度的网格来表示它;反之用粗粒度的;起到一个动态、自适应的过程;其中每一个网格贡献是多大,是通过学习得到的;——也能起到一个缩减网络状态空间的作用



    4. 现在的地图软件,可以根据起点至终点的位置计算预测耗时,这是否对目标函数的计算有所帮助?

    A:必须;接驾时间和完单时间需要事先预测得到;

    5. 请问该如何描述供需双方的不确定性?两者之间的不确定性有什么共性和不同?

    A:使用NN:更加细致地刻画一个动态的状态空间;包含了供需特征之后,在不同的供需状态下都能学到有意义的价值函数;



    6. 请问深度学习和组合优化结合有什么思路?

    A:尝试对问题建立一个模拟的训练环境,通过设计特定的价值网络 ,运用DRL训练方法解决

    目前:还是只能解决一些中型的问题;问题变大后还是显得比较困难和吃力;


    7. 请问能否进一步解释一下 embedding 部分的结构?

    A:

    深度强化学习在解决派单、路径规划、交通信号控制等问题上的应用,

    滴滴在今年 KDD2019 会议上有一个长达4小时的教程:《深度强化学习在交通中的应用》

    (https://outreach.didichuxing.com/internationalconference/kdd2019/tutorial/ )

  • 相关阅读:
    git的简单操作
    angularjs的基础
    针对IE8透明度设置及一些简单的兼容问题
    sublime 部分常用的快捷键
    Linux简单的操作
    AngularJS 简单的介绍
    html5的viewport与css3的媒体查询
    css的优先级的相关内容
    (转) vmware 切换桥接模式
    从nginx的编译安装,了解编译安装原理(转)
  • 原文地址:https://www.cnblogs.com/cx2016/p/13517884.html
Copyright © 2011-2022 走看看