Dong Guo's Blog

2017年秋-定价工作部分参考文献

| Comments

整理了一下近期定价项目中在看的几篇文献, 供candidiates@马斯佳 了解Team的工作领域

Dynamic Pricing in a Labor Market: Surge Pricing and Flexible Work on the Uber Platform

THE VALUE OF FLEXIBLE WORK: EVIDENCE FROM UBER DRIVERS

Using Big Data to Estimate Consumer Surplus: The Case of Uber

Pricing and Optimization in Shared Vehicle Systems: Queueing Models and Approximation Algorithms

Spatial Pricing in Ride-Sharing Networks

Personalized Dynamic Pricing with Machine Learning

Ta_tonnement in Markets for Trips: Evidence from Uber

Surge Pricing Solves the Wild Goose Chase

New York City Cab Drivers’ Labor Supply Revisited: Reference-Dependent Preferences with Rational- Expectations Targets for Hours and Income

Is Tomorrow Another Day? The Labor Supply of New York City Cabdrivers

Reference-Dependent Preferences and Labor Supply: The Case of New York City Taxi Drivers

Do Workers Work More if Wages Are High? Evidence from a Randomized Field Experiment

AlphaGo Zero浅读

| Comments

上周在滴滴内部分享了这篇文章读后感,这里记录一下浅见。

1.问题的本质和AlphaGo的解决思路

1.1 下围棋在计算机中是什么问题?

这是有限空间的解搜索问题,问题的复杂性来自于搜索空间的巨大和难以穷尽。类似但更简单的的问题包括:走迷宫,下五子棋,以及各种策略游戏。这些问题很多已经被较好地解决(超过人类专家的水准)。

AlphaGo之所以获得这么大的反响,是由于这个问题大得多的空间复杂性以及之前对该问题的论断(预测几十年之后才能超越人类)。以及David Silver团队一牛的技术营销能力。

1.2 AlphaGo的解法思路是直观的

AlphaGo(包括Zero)解决下围棋问题的“思路”是比较朴素的,受过基础算法训练的同学应该能想到一些,当然难度在于有了思路之后解决的方式和程度。

  • look forward(向前多看几步,人类下五子棋、象棋、围棋都是这个思路)
  • 学习高手是如何落子的
  • 评估某个棋局的赢面

这也是AlphaGo的Methodology。

2.AlphaGo(2016年)的解法

2.1 核心之一:MCTS

MCTS(Monto Carlo Tree Search)是go中的一个核心算法(在AlphaGo之前的各种围棋程序基本都基于MCTS)。MCTS核心思想是基于反复的episode sampling高效地建立一棵树状结构,高效体现在其重点exploit较优的path,且兼顾了exploration。树建立好之后,每个节点记录了Q-value信息,直接可用于Action决策。几个步骤如下:

  1. Selection:基于棋局当前的state定位到Tree的一个叶子节点,每个节点存储Q-value(以及prior probability)和visit count;Q-value的初始值通过Policy Network的prediction
  2. Expansion:当叶节点visit count大于某个阈值,继续从深度上拓展该path,使用default policy做sampling;
  3. Evaluation:combine Q-value with one random rollout result, and update value of state
  4. Backup: 更新tree(update visit count,and Q-value)

在AlphaGo之前,各种围棋程序的解法基本就是依赖MCTS及其变种,问题是go的解空间(包括深度和宽度)巨大,AlphaGo的主要改进是使用Policy Network作为MCTS的先验将树搜索宽度限制在了高概率的分支上(narrow down search to high-probability moves),以及使用Value Network减少了树的搜索深度(当Value Network预测叶节点的胜率比较极端,就没有必要做expansion或rollout了),将探索集中在高效的空间,从而显著提升了power。

2.2 整体步骤

  1. Policy Network的第一步训练:基于Human knowledge(专业棋手的落子),使用DNN,有监督学习人类的落子(Q-value),就是一个分类问题;

  2. Policy Network的第二步训练:在第一步有监督学习到的Network参数基础上,使用self-play(不同的policy)进行对弈,基于Policy Gradient RL进一步优化Network;

  3. Value Network训练:学习每个state的赢面,使用policy network一样的网络结构(除输出层),基于MC value-based RL进行训练

  4. 将学习到的Policy Network作为MCTS节点的prior probability,指导子节点的选择。将学习到的Value Network作为MCTS节点state value的prior probability,结合rollout的结果,一起update MCTS各个节点的信息

3.AlphaGo Zero(2017年)

3.1 算法改进点

AlphaGo Zero相比AlphaGo最大的不同是将MCTS的建立过程和Network的训练融合在一起,互相迭代(而不是像AlphaGo中先单独训练Network,再将Network灌到MCTS中)。第一,MCTS的Q-value和eposide self-play的胜负一起指导Network的训练(trust MCTS);第二,MCTS的Q-value指导Network self-play的move;第三,Network的预估结果迭代地作为MCTS节点Q-value的prior probability(而不是第一版AlphaGo中一次性地加入)

  1. 随机初始化Network(注意Zero中Policy和Value共享一个Network),初始化MCTS(各个node的信息)
  2. 如下几个步骤不断迭代
  3. 在当前棋局state下,基于MCTS的selection,指导Network self-play的move
  4. 基于上一轮的Network参数,指导MCTS做selection(update Q-value的prior probability)
  5. 一盘棋结束,基于eposide的胜负(state value),以及MCTS的Q-value,指导Network参数的迭代

Loss function如下:

如上是我理解AlphaGo Zero在算法上的最大改进。其余几点改进如下(部分是由于前者间接带来的):

  1. 2个Network合成一个(这个我没有太多感受,一些文章提到通过2个network分别来建模policy和state-value是之前的best practice)
  2. without any supervision of human data(不再依赖学习人类棋手的move做policy network的初始化);这一点我理解是由算法改进带来,之前的版本在训练Policy Network时没有MCTS的协助,仅仅依靠policy network本身做self-policy确实肯定搞不定;
  3. Network结构:使用了residual network,这一点提升了600 Elo;不同blocks数目power有一定差异
  4. MCTS不再需要rollout:这一点也好理解,当MCTS的buiding和Network training融合,training过程从self-play中拿到了eposide胜负信息输入

3.2 效果对比

paper中这张图除了表明Zero的威力,还表达了Zero相比Supervised Learning得到的Policy并不能更好地预估Human expert的move,但是Elo却高很多,即:Zero学到的技艺和人类围棋知识不同,且人类大脑有限的计算能力很可能陷入了局部解。

几个不同算法的performance差异,提示:2个player如果Elo差距400分,分高的胜率在90%。

4.综合感受

  1. RL在解决无即时反馈问题上的能力扩宽了想象力
  2. 不使用human expert move进行学习,这个我也觉得比较好理解,围棋本质就是有限空间的解搜索问题,在有强大计算能力和好的算法时,不依赖人的数据理论上是可行的(况且确实有被人类带入狭隘解空间的风险,本来就是要PK掉人类的)
  3. 适用性:围棋是一个非常有确定性的问题,一方面输赢的定义很明确,另一方面除了落子没有其他因素影响到棋局;而很多我们在滴滴遇到的问题并没有如此简单;
  4. 很多ML理论和实践的工作都用到了sampling,以及左右互搏迭代的思想,Alphago Zero也是。该思想值得在工作创新中重视
  5. Engineering的重要性,不仅是集群和计算能力,更多的是通过所谓的tricks(其实大多是从数据中发现问题)解决仅有理论或idea搞不定的问题(DQN和alphaGo这3篇paper中deepmind体现的淋漓尽致)
  6. 从16年到17年,alphaGo的复杂性是降低了(算法过程、计算需求、网络),更简洁却更好地解决问题,这个是境界了
  7. deepmind团队(或者说google)体现的强大技术营销能力,确实佩服!

5.几篇文章和code

  1. 2015, Human-level control through deep reinforcement learning: Beat human in some games without human knowledge
  2. 2016, Mastering the Game of Go with Deep Neural Networks and Tree Search: Beat human in Go game partially rely on human knowledge
  3. 2017, Mastering the Gmme of Go without Human knowledge: Dominate human in Go game without human knowledge
  4. 在知乎看到有Alphago Zero的开源实现版本,未验证仅供参考

读书感想-批判性思维(Critical_Thinking)

| Comments

最近看完了2本批判性思维的书,一本是《批判性思维》,另一本是《学会提问》(更推荐)。我感觉CRITICAL THINKING是职场和生活中重要的素质,这里我总结了这2本书中的要点和感受,不过还是推荐大家读一下第二本书,结合例子感受更深刻。

人类学习

1.故事的起源:人类的学习与批判性思维(该部分纯YY)

人类学习的一种方式是归纳演绎:从事件的重复中总结出规律,包括聚类、分类、回归、相关性等等(没错,Machine Learning就是参考这一套)。人性对信息有一定的批判性,也很容易受到蒙蔽(参考下面罗列的各种典型谬论),特别是在这个充斥着大量主观、虚假信息和论证的时代。

1.1 人类如何学习(纯YY,请批判)

人类学习

  • Optimization Objective:Maximize(Long-term Happiness)

人作为一种生物,个体决策的目标是最大化幸福感(包括了财富、繁衍、健康、成长、情感等)。当然人是非理性动物,不同人对“Long-term”的定义不同。

  • Loss Function

有一个Loss Function来评估如果一件事发生(如被狗咬)要付出的代价,来辅助你决定是不是要绕道3KM。这是影响决策的关键,Loss的大小受价值观和经验影响,源头是基因和经历。

  • Model:知识总结模式

包括但不限于归纳类方法,比如你被开水烫到,你的基因和大脑做归纳学习,从此你小心避开沸腾的液体。随着人长大收集到的新鲜样本越来越少,人停止成长(NB人模型迭代快,收敛也慢,参考王兴的饭否更新)

  • Optimization:Prior Experience(基于过去经历学到) + New Event/info => Posterior Experience(总结出新的经验)

学习和优化可以基于Bayesian框架(实际可能是复杂的综合体),你刚出生的时候,唯一有的是基于父母基因得到的prior(可能不是白纸一张),出生后你观察并体验了一个个事件,你不断迭代你的认知(后验)。

  • Training Data:学习和人生经历

这一切是不是让你的生活更好了?从生物和演化上讲应该是。

1.2 批判性思维的价值

然而,媒体和网络爆发后出现大量不客观不严谨的信息(原因之一是商业逐利,看看各家公司的公关部、广告部每天在干啥),这是最近10年发生的巨大变化,noise和fake样本更多,之前累积的人生经验,碰到不同质的或者label错误的样本只能lost了。我们要对样本做一轮批判性思考的过滤,再拿进来re-training自己的思维和认知。

这就是我理解的需要批判性思维的原因之一:让自己少受垃圾和欺骗性信息的误导,形成客观的认知。过程中养成独立思考的习惯。

(从功利的角度,具有批判性思维是职场发展的必修课。这是我觉得大佬与职员存在的主要差异之一)

2.不靠谱论证出现的部分原因

  1. 故意的不客观:论述者有利益相关,导致信息发布者立场不客观(非常典型,包括广告、公关信息、政治媒体等)
  2. 无意的不客观:人的取向偏好,导致信息表达和传递有偏差(人往往喜欢和自己价值观取向类似的人或观点)
  3. 价值观影响判断,而不同人价值观有差异
  4. 严谨数据和实验结果获取的难度(除非精心设计的AB测试,否则做到样本同质,AB结果置信相当不容易)
  5. 数字的表达性带来的误解(清晰客观地呈现数据和图表,需要客观的立场以及专业素质)
  6. 不熟悉问题或领域

3.大部分诡计/谬论都在这里(结合书中的例子感受更深刻)

  1. 人身攻击谬论:不论证事情 给人扣帽子,对人不对事
  2. 追求完美解决方案谬误:假设因为尝试某种解决方案后还不完美,那么这种解决方案根本就不应该采用
  3. 错置举证责任:不恰当地将举证责任分配给争议的某一方(判断哪一方有举证责任)
  4. 诉诸公众谬误:引述大部分人都持有这观点的说法来竭力证明某个论断有道理,错误地认为就是有道理的
  5. 诉诸可疑权威谬误:引用某一权威的话来证明论证。但该权威并不够权威,或者对这一论题本身并没有特别的专业知识
  6. 诉诸情感谬误:使用强烈情感色彩的语言来分散读者或听众的注意力,而忽略了理由和证据
  7. 光环效应谬误:使用模糊的 引发人们强烈情感认同的美德词汇,使我们倾向于同意而不去仔细检查理由
  8. 稻草人谬误:歪曲对方的观点,使它容易受到攻击。
  9. 虚假的两难选择谬误:本来存在多种选择,却假设只有两种解决方案。典型的情况是AB都可以做
  10. 乱扣帽子谬误:错误地假设因为你为特定事件或行为取了一个名称,你就合情合理地解释了这一事件
  11. 转移话题谬误:插入一个不相干的话题,转移注意力,导致原主题被置之不理。
  12. 循环论证谬误:推理过程中假设自己的结论成立的论证
  13. 以偏概全谬误:样本少,非典型,选择偏置,不具有代表性
  14. 强求确定性谬误:要求研究论证必须100%确定
  15. 错误类比谬误:类比对象存在重要而又相关的不同点
  16. 过度简化因果关系谬误:过分强调这些因素中的一个或多个因素的作用
  17. 事后归因谬误:由于时间上先后发生,就判定有因果性。很多迷信的直接原因
  18. 滑坡谬误:假设采取提议的行动会引发一系列不可控的不利事件,而事实上却并非不可控
  19. 错误类比谬误:提出一个类比,其中缺存在重要而又相关的不同点
  20. 因果关系谬误:相关性 != 因果性
  21. 偷换概念谬误

4.提这些问题可以识别部分诡计/谬论

  1. 利益相关:你和这个事情是什么关系?你是既得利益者吗?
  2. 证据严谨:数据从哪来的?实验如何做的?如何证明?结果有统计意义吗?是随机分组吗?
  3. 陈述全面性:这个行动潜在的长期的负面效果是什么?有什么成本和代价?
  4. 缺失信息:有没有被忽略掉没讲的重要信息?
  5. 追问结论:所以呢?so what?(通常是论述者没有讲到论点,或者隐藏了论点)
  6. 追问理由:为什么你这么认为?(通常是没有提到理由)
  7. 避免歧义:你说的XXX具体定义是什么?(避免歧义或者理解不一致)
  8. 确认假设:你这个论点中是不是包含了什么假设?(价值观)
  9. 价值观假设:为什么你觉得XX一定比YY更重要?
  10. 证据严谨:你这个xxx是得到广泛认可的吗?得到专业认可了吗?什么专业来源?
  11. 证据严谨你这个例子具有代表性吗?
  12. 多种原因:有没有别的原因导致XXX
  13. 逻辑:你这是相关性还是因果性?如何证明是因果性?

5.书中给的一些经验

  • 知识:论证分为演绎推论和非演绎推论,后者都是在支持论证,但不能证明论点
  • 知识:最重要关注第一关注论述这的结论是什么,第二关注他得到该结论的理由
  • 知识:典型论证方式:直觉、个人或他人观察或经验、专家、实验、研究报告、类比;
  • 知识:听到某个论证,人的思维更倾向于”我是否赞同“,而不是”是否符合逻辑”
  • 辩证:利弊:大部分事情不是非黑即白,往往要从不同情景、不同约束、不同价值观的角度辩证地看,想想是否有负面效果和代价
  • 辩证:解决方案:事情常常不只有2种解决方案
  • 辩证:起因:事情往往是由多种原因联合引起的结果,这些原因共同起作用创造了事情发生所需要的整体环境。特别是和人类特征或活动相关的
  • 原则:批判性交流的过程中注意保持谦逊的、客观的立场。不是为了抓住别人的漏洞,是探求客观和真理
  • 原则:批判性有一致的标准,对人对己
  • 技巧:所有的非演绎推论都是不完整的,不要阻止你形成任何观点;小心求证,有足够信息就大胆决策
  • 技巧:不要被问题或者立场困住,想想作者想解决什么问题,针对该问题是不是有更好的解决方案?不要就问题答问题
  • 技巧:谁想要说服你 就有义务说清楚
  • 技巧:说服的三种方式:背景名声成就说服、情感共鸣、逻辑论证(第三种反而困难)
  • 留意:注意论证中存在的假设,典型的有价值观假设、事件的背景、相关方背景
  • 留意:价值观假设:安全vs效率,自由vs平等,诚实vs和谐人际关系,集体vs个人,竞争vs合作,媒体自由vs国家安全,秩序vs言论自由,理性vs活力,责任,安全,纪律
  • 警惕:小心修辞(“高达”,名词换名称),贬抑
  • 警惕:几乎任何一个你收到的信息都有一个目的
  • 警惕:一切主观性和情感色彩、名词定义(“新”vs“旧系统”,)反复想想作者的用词你真的知道准确含义吗 可以量化吗 作者的理解一定和你一样吗? 作者利益相关吗?价值观一致吗
  • 警惕:提防用词含糊歧义抽象不精确:用词含糊不准确,往往有主观动机,特别是有情感色彩的用词。 例子: “措施”、“见效“、“居高不下”、“日渐严重”
  • 警惕:数字和图表是很容易说谎的:数字游戏(绝对值vs相对值、呈现方式、平均数vs中位数)、仅知道均值不知道分布带来的误导(方差可能很大)、图表的呈现方式
  • 警惕:严谨的AB测试很难 往往有漏洞(不同质 选择偏置、统计意义、显著性、其他干扰因素),所以小心提防
  • 警惕:我们所“见”都是经过一系列的价值观、偏见、态度、期望值、经验误差过滤后剩下来的东西
  • 警惕:研究报告:注意主观性、立场倾向性、利益相关性、论证严谨性、是否过期、调研措辞有引导性
  • 警惕:专家:小心利益相关,价值观,是否足够专业
  • 警惕:类比:很形象,有煽动力,不过要判断是否是合适的类比
  • 警惕:判断是否有重要信息被忽略:如只讲优点没有将代价。记住很少有事情是有百利无一害

6.还是要靠实践

写在最后,批判性思维主要还是靠实践,在工作开会时,与同事讨论问题时,听大咖讲课时,看网络文章时,刻意练习一下还是蛮有意思的。

2017国庆-北疆自驾

| Comments

16年端午被老司机带着自驾甘肃,16年国庆节(家属基本不开车)自驾云南,17年五一自驾德国,刚刚过去的17年国庆自驾了北疆。下面是我北疆走的路线

北疆自驾Tips:

  1. 证件:去北疆的部分区域需要边防证(比如喀纳斯),无需出发前办理(比较麻烦),景点办理比较方便,比如喀纳斯游客中心1分钟就办好了,就是一张纸
  2. 交通和车:北疆的路都很好开,无需SUV,更无需越野。乌鲁木齐比较堵,其余都一路畅通,绝大部分路段车都很少。另外除了选择从乌鲁木齐租车自驾,新疆有全国省份最多的机场(19个),可以飞到喀纳斯,适合时间紧张的行程
  3. 气候:国庆去北疆刚好赶上秋天的尾巴,白桦树金黄,风景很好,但是今年国庆中间几天北疆雨雪较多,特别是喀纳斯,2-4号都在下雨下雪,建议过去之前关注天气,协调好行程
  4. 餐饮:符合预期,城市或景点之间常常有300KM,最好自备食物在车里
  5. 加油:北疆行程中服务区确实比较少,很多都不能加油,不过也没有部分游记中写的那么紧张,在停靠的主要城市加油即可(乌鲁木齐、克拉玛依、布尔津、富蕴等)
  6. 安全性:全程感觉很安全,到处都是安检和警察亭,感觉很安全
  7. 喀纳斯tips:都是从布尔津县出发,自驾3小时左右达到换乘中心贾登峪,在这里停车买票。浏览点有3个:狭义上的喀纳斯(包括喀纳斯湖,贾登峪与喀纳斯游客中心之间30KM路程上的风景,包括3个著名的湾),禾木,白哈巴。白哈巴:从贾登峪坐区间车1.5小时到游客中心,再坐区间车1.5小时到白哈巴;也看到有人徒步去,目测大概需要半天时间,应该是不错的体验。禾木:应该是可以在贾登峪直接做区间车的,也看到有人徒步,应该是更棒的体验方式

概要行程

  1. 第1天:北京直飞乌鲁木齐,提前预定了神州租车,下了飞机提车(国庆价格比平时贵了2-3倍,比滴滴的动态加价猛多了,为啥没有群众和媒体攻击呢),入住乌市,到处都是安检(酒店、商城)
  2. 第2天:有雨,新疆的作息比北京晚2小时,上午出发走克榆公路直奔克拉玛依(比走G30近80KM),中途停靠一服务区加油,安检人员提醒后轮胎没气了,有点后怕,雨天后轮胎没气还开了100KM时速,幸好发现了,在加油站换了备胎继续上路。中午到达克拉玛依,天气转好,吃个饭,入住和颐酒店。对克拉玛依的印象很好,道路宽阔干净、城市现代;
  3. 第3天:上午在附近的黑油山九龙潭转了一下,导向目的地布尔津,中午经过魔鬼城,在门口浏览一圈没有进去,阳光正好,傍晚直奔布尔津北面30KM的五彩滩,可以晚了一步,夕阳已被天边的乌云遮挡,不过五彩滩的风景还是很棒的,后面在可可托海弥补了阳光。 魔鬼城门口的果树 五彩湾

  4. 第4天:从布尔津出发去喀纳斯,先到贾登峪,路上大概3个小时,有一半的路程是山路,不过路面不错不难走。达到贾登峪大概是下午2点,所有的车需要停在这里,买票,坐区间车进到喀纳斯游客中心,大概1.5小时,沿途可以看到喀纳斯几个主要的景色三湾。达到喀纳斯游客中心,我们直接做区间车去了白哈巴,行程也是1.5小时左右,到达白哈巴看到了经典的风景,很赞。

  5. 第5天:天公不作美今天有雨夹雪,非常冷,温度基本是零下,雨雪越来越大,回到喀纳斯游客中心,据说游览大巴途径经典的风景区域都不会停留,95%的人都直接坐车回贾登峪,我们也只能坐车回贾登峪,遗憾!下午打听到回布尔津的路封了,可能出不去,好在2点之后解封了,开车下山,前半程大堵车,太多车赶着下山了(如果雪继续下,有可能几天下不了山),晚上入住布尔津

  6. 第6天:一大早出发,开车直奔可可拓海,中途超速被拍,在可可托海镇住下(推荐,住在富蕴县城的话,一早需要开车2小时才能赶到景区)。吃到了全程感觉最好的一家维族馆子:吾苏曼江农家小院。

  7. 第7天:住在地方离景区只有5KM,天气很棒 阳光明媚,路上看到了最美的风景。一天在可可托海景区徒步,很爽!傍晚开车回富蕴县城,很棒的小城。

  8. 第8天:开城去乌市,一路雨雪,下午3点到达,还车,酱油一下新疆博物馆。

  9. 第9天:回京,还是熟悉的味道!

数据驱动的核心:Controlled Experiments

| Comments

越来越多人和公司认同data-drivern决策的必要性,不仅是滴滴、Google、Microsoft、Linkedin、Amazon这些科技公司,也包括传统意义上的非技术公司。Data-drivern的核心是Controlled experiment(即大家常说的A/B Testing),按照字面理解就是将其它影响因素都control住,保持一致,实验结果只由预设的不同方案影响。

在滴滴算法团队,很多时间和精力都在做各种策略和算法实验,比如我们比较不同的订单分配策略哪个可以让接驾时间更短,比如评估新的动态定价策略对乘客的留存和活跃度有什么样的影响。基于近期在做实验方面遇到的一些挑战思考,以及上个周末看的几篇文章写一个小结在这里。先介绍几个controlled experiment相关的基础而重要的点,总结做controlled experiment中的一些遇到的难点和挑战,最后是一些实验方案和架构的构想。

ArchSummit2016干货分享

| Comments

上周去参加了ArchSummit 2016,是一个偏架构技术的会,也有一些talk结合了架构和算法一起介绍。我听了十几个和大数据架构和算法比较相关的talk,做了一点小结分享给大家。

Highlights

  1. 订单分配:美团和菜鸟物流(阿里旗下)都简单介绍了自己的订单分配算法,和滴滴分单场景有近似之处。美团的外卖配送在某些方面比滴滴的分单问题更有挑战性,有一些思想可以借鉴,比如权衡体验和效率的“压单”;

  2. 热门的机器学习算法:

    GBDT + LR:腾讯微信的用户相似度预估、广告点击率预估,阿里推荐算法的点击率预估都在用。具体可以看Facebook在2014年的文章;

    FTRL:这个算法是google在2011年左右publish的,被国内各大公司作为online learning的重要选择,我之前实验中做过评估,其显著的几个优点:样本只需要过一遍,预测效果top,稀疏模型

  3. 大规模分布式机器学习框架:

    Parameter Server:若干公司提及,包括一些规模不太大的公司(第四范式、一点咨询),目前来看parameter server还是大规模特征下的分布式机器学习框架的首选

    Spark:spark简单易用,当特征规模在千万之内还是很不多,ThinkData给出自己开源的分布式机器学习算法库,据称在预测效果和训练速度上都显著优于MLlib

  4. 图算法:微信在做定向广告时,需要构造用户在朋友网络上的“社交相似度”特征,其使用了KDD2016最新的node2vec算法,类似Random walk + Word2vec,据称效果显著,有兴趣的可以去看paper;

  5. 知识图谱(Knowledge graph):Facebook的knowledge graph将这块带的很火,在需要理解用户意图给出用户想要的结果的场景下大多会涉及。 本次有2个talk涉及:阿里的自动问答系统,一点咨询(类似今日头条)的新闻搜索;

  6. 深度学习:这次几个talk上提到,不过都还是在尝试,感觉没有DL在其应用中还没发挥核心作用。包括阿里的自动问答,第四范式

  7. 架构引擎相关,有2个talk影响较深刻,一个是阿里双十一的流量规划和压测实践(流量隔离压测 + 配比拉平可以减少直接在线上做压测的风险和人员投入成本),另一个是百度的大数据系统技术栈(百度文件系统BFS,分布式数据库Tera都已在github开源,值得学习一下)

slides 下载

出行的未来

| Comments

在滴滴待了16个月了,这一篇说说我理解的未来的智能出行:

  1. 整个城市的车辆都由一个中枢系统控制,车辆的路径规划和控制可以最大化整体城市居民的出行效率,交通拥堵从此消失;

  2. 车辆是自动驾驶的,所以非常安全,车内变成真正的生活空间,交通标识和信号灯也不需要了;

  3. 人们不再购买车,车也不再属于个人,因为在城市的任何区域任何时间1分钟内就可以呼叫到车;

  4. 车辆都是电动的,会自己选择合适时机去电池站更换电池。由于车辆没有驾驶室,且车辆之间可以像积木一样拼接,车辆的外形也会发生变化;

归纳起来就是几个关键字:共享出行、电气化、汽车网联、自动驾驶

滴滴、Uber、Google以及一众高校正在推进这一科幻版的未来场景:

共享出行:其是滴滴和Uber们的原始出发点,目前中国每天有10~20M乘客通过共享的方式出行。

电气化:电动车的成本显著低于汽油车,滴滴正在推动更多电动车加入车主行列;

自动驾驶:这一块已经非常火了,一方便有望大大降低交通事故发生率,对于滴滴和Uber来说可以省掉司机支出极大地降低成本;

Automated and Connected Vehicles技术目前是研究热点,有一篇科普文章

日记2016/02/13:周志华老师的新书

| Comments

明天是2016春节后的第一个工作日,新年要有新气象,其中一件就是要多写博客,将每天的想法和收获总结下来。

今天在石家庄家里翻了翻周志华老师的新书《机器学习》,ML基础的内容基本都包括了,讲得比较通俗易懂,公式推导比比李航的《统计学习方法》更少一些。个人还是比较推荐的。

重点翻了翻半监督学习和强化学习这2章。做一些笔记如下

半监督学习

基于“相似的样本有相似的label”的合理假设,未标记样本为样本分布提供了信息,故可以提高有监督学习的效果。

一种典型的半监督学习模型是TSVM(Transductive SVM),其在目标函数中包含了未标注样本的松弛向量,求解方法类似于EM思想,E步对未标注样本进行预测,M步调整分类面;一个要点是未标注样本的预测结果通常是显然不如有标注样本的label靠谱的,所以在目标函数中这2类样本的松弛向量的权重有差别,且未标注样本的权重随着多轮迭代不断上升。

强化学习

强化学习的应用场景很广,比如曾经很火的Flappy Bird和最近很火的Google的AlphaGo(围棋AI)。

明天补充细节,碎觉

滴滴出行-大数据策略组请你加入

| Comments

滴滴是一家飞速成长的公司,业务线从最初的出租车,扩展到专车,快车,顺风车,巴士,代价等越来越多样的出行方式,业务也从国内扩展到了国内外,正在改变越来越多人的出行方式。

大数据策略组在何晓飞叶杰平两位知名机器学习人工智能方向教授的带领下,正在打造智能的出行平台闭环,包括各业务线的订单分配,订单价值调节,多业务线运力和需求整合,等等。这里诚意邀请在策略算法,机器学习,数据挖掘等方向有经验的朋友加入,和世界级的大牛一起解决世界性的难题。

要做的事

参与最核心的订单分配项目,从数据和用户反馈中获得灵感,设计更优的订单分配策略,更准更快地匹配乘客和车辆。

希望你是这样的 (实习或全职都okay的):

1.  扎实的计算机基本,熟悉几门常用的编程语言(C++, Scala, Python等),动手能力强,数据结构和算法基础好。
2.  在机器学习、数据挖掘或相关方向有不错的理论和实践积累
3.  能够承担压力,快速上手,适应较快的项目节奏

待遇

滴滴今年的待遇我了解是高于BAT的,对大牛更是不手软,欢迎来聊。

有兴趣欢迎联系我:guodong@didichuxing.com

我在滴滴遇到的技术挑战

| Comments

加入滴滴打车3个半月,感觉遇到和解决的技术问题超过之前1年的。写在这里给大家分享。

滴滴这边负责所有策略算法设计的是“策略组”,大概有20几个员工。由于滴滴的业务线越来越多(出租车,专车,快车,顺风车拼车,大巴),项目上线时间紧,没有时间对策略算法做最好的设计和优化。于是,新成立了一个通用模型组,目标是抽取出不同业务线的共同点,在一个更高的角度设计更好的策略算法,特别是提供通用的大规模机器学习支持。我是这个team第一个员工。

订单分配:

滴滴一个技术重点是订单分配,全国每天有几百万的乘客通过滴滴叫车出行,有近百万司机接滴滴的订单,如何将订单分配给司机使得更多的人更快地打到车?至少有如下问题需要考虑:

  1. 从大的层面,如何设计一套分配策略,能够保证目标最大?
  2. 从小的层面,分配订单时应该考虑到哪些因素?(距离?是否顺路?司机习惯偏好?天气?供求关系) 这些因素如何组合?
  3. 如何在更长的时间维度上做更优的分配?(比如,当前时刻将乘客A分给司机B是最优的,但几秒之后司机C出现了,司机C离乘客A要近得多)
  4. 拼车更环保也能帮乘客省钱,如何在订单分配中让尽可能多的人在保证体验的同时拼上车?TRB中有非常多的文献
  5. 乘客加价如何影响订单分配?
  6. 我们应该学习Uber的一些策略吗?(比如播单不告诉司机乘客的目的地)

在创业初期,可以用规则快速简单地实现,现在滴滴已经初步有了一套理论上保证收益的分配策略,需要我们进一步去优化效果和效率。

透露一下,在整体策略中,有一个部分是涉及到大规模机器学习:样本是几十亿级别,特征是亿级别(这是我进来的第一个项目)

动态调价:

设想在周五的傍晚,下班高峰,又开始下大雨。在国贸商圈有1000个用户通过滴滴叫车,而附近只有100辆车。如何做订单分配?应该把有限的车给谁?

首先,我们需要定义一个目标:动态调价的目的是什么?最大化成交量?最大化流水?最大化(愿加价)乘客打车的成功率?还是这几个目标的组合最合理?

选定目标之后,每个乘客应该加多少钱?一个优质订单是不是应该少加点?

滴米:

为了促进订单成交,除了给司机补贴和要求乘客加价,是不是还有别的激励方案?

于是滴滴牛逼的PM们推出了滴米这个牛逼的产品。滴米是一种虚拟货币,对于优质订单,一堆司机挤破头来抢,我们就扣他们虚拟货币,对于没人要的订单,我们就奖励滴米。这样就调节了优质劣质订单冰火两重天的不和谐局面。关键是,乘客和滴滴不用花一分钱!

产品很牛逼,策略上如何支持?一个订单发出前,如何确定其是扣滴米还是奖励滴米?扣多少奖多少?每个司机一样吗?整个策略会导致通货膨胀或者紧缩吗?

到达时间预估

预估司机从A点到B点的时间消耗,对滴滴挺重要。如果准确地预估?基于哪些数据和因素?这是一个机器学习问题吗?有更巧妙的预估方法吗?

工作感受

说了来滴滴3各月参与和了解的几个项目,我觉得都非常有意思,也非常有意义。说下来之后的几点体验:

第一,最大的体会是中国互联网行业,特别是滴滴,生机勃勃,有太多有挑战的事情等着做。产品和策略迭代非常快,基本上每天线上的策略设计和架构都会有一次优化上线,你每次改动就会影响每天几百万人的出行体验。

第二,相比我之前的工作,在滴滴工作会和不同岗位的同学紧密合作,每天和靠谱的策略组小伙伴一起做策略设计和讨论;和90后PM mm们讨论进度和策略设计;和QA团队合作测试,保证上线风险可控;和OP同学配合上线;

第三,滴滴的招聘质量提升非常快,3个月前我刚入职,周边同学大概还是百度同学的平均水平,现在我参与的面试,发的offer的质量基本和hulu差不多了。

最后,昨天滴滴大巴上线了,现在可供出行的产品线有出租车,专车,快车,顺风车,大巴。欢迎加入滴滴,在滴滴最美好的阶段,和牛逼的人做牛逼的事情,一起改变中国人的出行体验。有兴趣的联系我: guodong@diditaxi.com.cn