大家好,又见面了,我是你们的朋友全栈君。
某个周末晚上,小陈约好了和女朋友去商场吃饭看电影。小陈平时喜爱打游戏,此时正在专心打农药。“啊!ZZ队友送人头,白瞎我最强亚索!伤心~” 而小陈的女朋友这个时候打来了电话:
你收拾好了吗?我已经到口红啦……
小陈内心:“这次竟然这么快?我还以为刚到眉毛呢,可是我还想再开一局逆风翻盘拿五杀呢!但是又不能迟到啊……小陈想到先点开打车软件计算一下双方的时间吧: 首先设置好出发地为女朋友家,目的地为要去的商场,呼叫快车,显示要30分钟。再来设置一下自己的出发地,呼叫快车,哇!只要15分钟。小陈于是决定再开一局,一套“行云流水”的操作下来之后,成功“助力”自己一方被五杀,望着被推倒的水晶塔,小陈内心“开心无比”,心想这局胜利的关键果然在自己身上啊!后来小陈准时赶到女朋友之前赴约……小陈心想这软件预估到达的时间真是准啊,多亏了它,农药也打了,约会也没迟到。相信以上类似场景大家多少都有遇到过,大家近些年逐渐习惯用网约车,而以滴滴为代表的网约车软件背后必须要提供各方面精准的服务。 这其中就涉及到一个至关重要的基础问题:预估到达时间(Estimated Time of Arrival, ETA)。在滴滴、Uber、Lyft等共享出行平台,时间预测的精度会直接关系到路径选择的合理性、订单分配的精确性和交通系统的整体效率,从而影响乘客的出行体验,以及司机的效率和收入;而且,海量的日均调用量也会对ETA模型的线上推理速度提出非常高的要求。ETA的复杂性和挑战性,使其成为颇具学术研究价值的问题。它要考虑交通要素的空间关系和交通系统的时间特性,也要引入个性化特征和外部特征的建模。这些特点使得机器学习成为很好的ETA解决方案,能够利用海量交通数据来建模行程时间分布。在今年的KDD2020大会上,滴滴发表了一篇题为《CompactETA: A Fast Inference System for Travel Time Prediction》的论文,详细介绍了如何在线上部署中实现微秒级的ETA机器学习解决方案。这种名为CompactETA的新算法是滴滴在此前论文《Learning to Estimate the Travel Time》(KDD2018)的算法框架的基础上提出的,它能基于图注意力网络(Graph Attention Network)将高阶的时空依赖关系编码到特征表示中,并进一步使用了位置编码技术(Positional Encoding)来保留行驶路径的序列信息。相比前一代方案,CompactETA实现了超过100倍的线上加速,平均响应时间低于50us。 1
ETA可建模成机器学习问题
直观来看,ETA系统要预测从地图上一点移动到另外一点所花费的时间。这是一个广泛存在的概念,航班、火车、汽车以及单车骑行都有对应的ETA预测任务。下面是一个示意图,假设用户从左上方的起点出发,想要前往右下角的终点,ETA系统将结合路网状态和用户信息对这段行程花费的时间做一个预估(图中示例的25分钟)。ETA的应用在滴滴平台上无处不在。例如以下场景:1、选定目的地之后,乘客首先看到就是预估接驾时间和预计到达终点的时间。前者告诉乘客大约多久之后司机可以到达他指定的出发点,后者给了乘客关于旅途时长的一个预测。如果这两个时间足够准确,乘客便会对行程有合理的心理预期,便于高效安排自己的事务。2、除了显示时间之外,其实还有一个数字隐藏了ETA的贡献,那就是预估价格。滴滴平台综合了行程距离和ETA等信息,按照计价规则提前估计一个金额供乘客参考。这些都是用户直观可感受的。3、在用户看不到的后台,ETA当然也是滴滴的派单引擎和调度引擎的重要决策信息之一。在滴滴,ETA服务的日均调用量已经达到百亿级别,想要提升网约车双边交易的效率,精准的ETA是重要基础之一。当人们想要预估一次行程时间时,至少有三个信息是必要的:谁、何时出发,以及走哪条路。放在网约车平台,这三个信息对应着:司机ID、出发时刻和行驶路径。这三个必要信息构成了ETA的query,即:其中司机ID和出发时刻都是标量,而行驶路径是一个向量,由一系列的路段ID组成。把路段称作Link。那么路径可以表示为:其中的各个L代表了Link的ID。根据query中的三项输入,可以在特征库中查询并构造出丰富的特征,车型、车龄、驾龄等画像信息,这些都可能对行车速度有影响。利用出发时刻,可以得到当前的天气信息、道路限行信息、交通管制信息等。出发时刻本身输入到模型中也帮助了对周期性交通规律的建模。利用行驶路径就可以查询到该行程经过了哪些路,这些路的静态物理属性是怎样的(封闭快速路/乡镇村道,车道数,限速,红绿灯情况等);同时还能知道这些路的动态属性,通常指的是路况,描述了路网当前的通行拥堵情况。所有特征会分为两类:第一类是全局特征,描述了行程级别的基本信息。对于每个样本来说,它记录成一个向量。第二类是道路特征,描述了行程的link序列细节,对于每个样本来说,它记录成一个矩阵。每一列描述了一个link的特征向量。例如,在下图中,左边的天气类型构成了全局特征的一维;而右边的link特征,每个link都有对应维度记录自己的长度和通行速度值。在输入模型之前,不同类型的特征会进行变换。离散特征先通过各自对应的embedding层,然后与连续特征拼接起来。全局特征和道路特征都采用这种做法。基于query构造完特征之后,就可以设计模型学习出从特征到行程时间预估的一个映射,这是一个典型的回归问题:。 2
ETA机器学习方案的一些探索性
在滴滴团队于2018年发表的《Learning to Estimate the Travel Time》一文中,首次提出了系统性的ETA机器学习解决方案。其中,Wide-Deep-Recurrent(WDR)深度神经网络模型取得了很好的精度。WDR的细节可参考之前的解读文章,接下来简要介绍一下团队在WDR之后的一些思考和探索。首先是数据稀疏性问题。尽管滴滴有着庞大的轨迹数据,但在时间、空间和人这三个维度的组合面前,却还没有达到充足。在WDR(以及大部分深度学习模型)中,link ID都以embedding的方式处理。一旦某个link的历史数据太少,那么它的embedding vector就容易处于欠拟合状态,影响了整体ETA预测的准确性,我们把这称之为空间稀疏性问题。为了解决这个问题,团队做了一个工作:基于路况分布来度量不同link的相似性,并利用metric learning来对link的embedding vector加强训练。这个思路类似于迁移学习,把热门link的知识迁移到缺少数据但是通行模式相似的冷门link上。除了空间稀疏性问题,对应的还有时间稀疏性和司机稀疏性的问题,它们是数据在不同时段和司机上的分布不均导致的。我们同样用了metric learning的方法来处理司机稀疏性,用他们的驾驶习惯来度量相似性。而对于时间稀疏性,我们尝试了给相邻时段的embedding vector设置共享参数,使得相邻时段的embedding vector更加相似。除了稀疏性问题,我们也关心当规划路线不存在的场景下如何进行ETA预测。本质上看,这需要把起终点之间多种可能的路线都学习到模型中。团队针对性地提出用图相关的算法来隐式地对路线进行建模,同时采用了multi-task learning的框架,不光预测行程时间,也预测行程距离,通过多任务的相互协同来加强ETA的准确性。这个工作已经发表在KDD 2018上(Multi-task Representation Learning for Travel Time Prediction)。此外,考虑到路网天然是一个拓扑图,我们也关注把图卷积方法应用在ETA和路况预测任务上。这方面可以关注同样在KDD 2020上的《HerETA: Heterogeneous Information Network Embedding for Estimating Time of Arrival》。当然,作为工业级应用,WDR最大的瓶颈还是在于线上推理速度。模型中recurrent结构消耗了相当大的计算资源。一次典型的ETA计算耗时长达几毫秒,如果服务器负载较高,响应时间甚至会到几十毫秒。这样的服务效率,在传统互联网应用中算是非常高的,但在共享出行领域,却还是重要的系统瓶颈之一,也产生了较大的机器成本。因此,在提出了ETA的机器学习解决方案后团队就把主要精力放在提升ETA推理速度上。同时,也希望精度不要有所降低。这就是本文要介绍的CompactETA的产生背景。 3
既快又准的ETA对出行平台降本提效有重要意义
ETA在网约车后台服务中发挥着重要作用,比如分单引擎、拼车引擎和运力调度等。为了实现整体交通系统的最优调度,分单引擎需要计算每个司机去接每个乘客的ETA,由此来综合统筹片区内的情况,尽最大可能保证司机和乘客的有效分配。再比如,既要提升交通效率,又要满足个性化出行需求,拼车是很有潜力的解决方案。以路径规划、ETA为代表的地图算法在拼车中扮演着重要的角色。拼车的顺路程度不仅由距离决定,时间也是重要参考。过长的绕行时间同样会给乘客体验和司机效率带来严重伤害。作为一项重要的工业级应用,ETA仅仅是精度高还远远不够。以拼车ETA调用量为例,如下图所示,假设仅考虑10名司机和20名乘客,引擎想要计算出最佳的双拼方案,那么就需要知道每一种组合的预估接驾时间。这里,总共有10x20x19=3800种司机和乘客的组合。假如有一天,乘客愿意接受短距离调度,比如走几十米到更佳的上车点(乘客走几十米,比如过天桥或出园区,有可能让司机少绕路几百米甚至几公里),那么我们要为每个乘客考虑附近的多个上车点,并且寻找最优的整体路线。假如候选上车点为5个,接驾路径的组合数迅速爆炸为3800x5x5=95000。为了求解10名司机和20名乘客的最佳拼车接驾方案(哪个司机接哪两个乘客,顺序如何),我们可能面临至少95000次ETA调用。在全国范围内,类似的计算还要重复成千上万遍。
道翰天琼认知智能未来机器人接口API简介介绍
- 认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息的理解、存储、应用为研究方向,以感知信息的深度理解和自然语言信息的深度理解为突破口,以跨学科理论体系为指导,从而形成的新一代理论、技术及应用系统的技术科学。 认知智能的核心研究范畴包括:1.宇宙、信息、大脑三者关系;2.人类大脑结构、功能、机制;3.哲学体系、文科体系、理科体系;4.认知融通、智慧融通、双脑(人脑和电脑)融通等核心体系。 认知智能四步走:1.认知宇宙世界。支撑理论体系有三体(宇宙、信息、大脑)论、易道论、存在论、本体论、认知论、融智学、HNC 等理论体系;2.清楚人脑结构、功能、机制。支撑学科有脑科学、心理学、逻辑学、情感学、生物学、化学等学科。3.清楚信息内涵规律规则。支撑学科有符号学、语言学、认知语言学、形式语言学等学科。4.系统落地能力。支撑学科有计算机科学、数学等学科。 认知智能CI机器人是杭州道翰天琼智能科技有限公司旗下产品。认知智能机器人是依托道翰天琼10年研发的认知智能CI体系为核心而打造的认知智能机器人大脑,是全球第一个认知智能机器人大脑。具有突破性,创新性,领航性。是新一代智能认知智能的最好的产品支撑。 认知智能机器人技术体系更加先进,更加智能,是新一代智能,认知智能领域世界范围内唯一的认知智能机器人。 认知智能机器人是新时代的产物,是新一代智能认知智能的产物。代表了新一代智能认知智能最核心的优势。和人工智能机器人大脑相比,优势非常明显。智能度高,客户粘性大,客户满意度高,易于推广和传播等核心特点。 依托认知智能机器人平台提供的机器人大脑服务,可以赋能各个行业,各个领域的智能设备,各类需要人机互动的领域等。认知智能机器人平台网址:www.weilaitec.com,www.citec.top。欢迎注册使用,走进更智能机器人世界。 认知智能和人工智能的优劣势对比主要可以分为四大方面: 第一:时代发展不同。人工智能是智能时代发展的第二个阶段,认知智能是智能时代发展的第三个阶段。时代发展上决定了认知智能更显具有时代领先性。 第二:基础理论体系不同。人工智能的基础理论体系以数学为基础,以统计概率体系为基础。认知智能基础理论体系以交叉许可理论体系为基础。包含古今中外哲学体系,心理学体系,逻辑学体系,语言学体系,符号学体系,数学体系等学科。其基础理论体系更加具有创新性,突破性和领先性。且交叉学科理论体系的研究也是未来智能发展的大方向。其具体理论体系,还包含三体论(宇宙,信息,大脑三者关系),融智学,和HNC等。 第三:技术体系不同。人工智能的核心技术体系主要是算法,机器学习,深度学习,知识图谱等。其主要功用在感知智能。感知智能其核心主要是在模仿人类的感知能力。认知智能的核心技术体系是以交叉学科理论体系而衍生出来的。具体包含三大核心技术体系,认知维度,类脑模型和万维图谱。认知智能的技术体系核心以类脑的认知体系为基础。以全方位模仿类脑能力为目标。人工智能以感知智能为基础的体系,只能作为认知智能中的类脑模型技术体系中的感知层技术体系。类脑模型大致包含,感知层,记忆层,学习层,理解层,认知层,逻辑层,情感层,沟通层,意识层等9大核心技术层。因此人工智能的核心只是作为认知智能类脑模型中的感知层。因此在技术体系上,人工智能和认知智能基本上没有太多的可比性。 第四:智能度成本等方面的不同:人工智能产品的综合智能程度,普遍在2-3岁左右的智力水平。认知智能产品其智能程度大致在5-8岁左右。认知智能体系构建的机器人更加智能。且更省时间,更省人力和资金。优势非常多。具体请看下列的逐项对比。
道翰天琼CiGril机器人API
道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:
- 在平台注册账号
- 登录平台,进入后台管理页面,创建应用,然后查看应用,查看应用相关信息。
- 在应用信息页面,找到appid,appkey秘钥等信息,然后写接口代码接入机器人应用。
开始接入
请求地址:http://www.weilaitec.com/cigirlrobot.cgr
请求方式:post
请求参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
userid | String | 无 | 平台注册账号 |
appid | String | 无 | 平台创建的应用id |
key | String | 无 | 平台应用生成的秘钥 |
msg | String | “” | 用户端消息内容 |
ip | String | “” | 客户端ip要求唯一性,无ip等可以用QQ账号,微信账号,手机MAC地址等代替。 |
接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552
注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。
示例代码JAVA:
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;
public class apitest {
/** * Get请求,获得返回数据 * @param urlStr * @return */ private static String opUrl(String urlStr) { URL url = null; HttpURLConnection conn = null; InputStream is = null; ByteArrayOutputStream baos = null; try { url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(5 * 10000); conn.setConnectTimeout(5 * 10000); conn.setRequestMethod(“POST”); if (conn.getResponseCode() == 200) { is = conn.getInputStream(); baos = new ByteArrayOutputStream(); int len = -1; byte[] buf = new byte[128];
while ((len = is.read(buf)) != -1) { baos.write(buf, 0, len); } baos.flush(); String result = baos.toString(); return result; } else { throw new Exception(“服务器连接错误!”); }
} catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) is.close(); } catch (IOException e) { e.printStackTrace(); }
try { if (baos != null) baos.close(); } catch (IOException e) { e.printStackTrace(); } conn.disconnect(); } return “”; } public static void main(String args []){ //msg参数就是传输过去的对话内容。 System.out.println(opUrl(“http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552”)); } }
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137182.html原文链接:https://javaforall.cn