刘少山:我为什么离开百度创立 SLAM 技术公司

admin2024年05月13日 22:08:14
阅读:
标签: 技术 公司 刘少山
分享:

结合个人经历,他总结了百度“简单可依赖”的文化给他自身带来的影响——如果没去百度,我很可能还在美国某个大公司做着一颗螺丝钉,温水煮青蛙,待着很舒适但其实危机四伏。

  2016年3月7日,我离开百度美国研究院与多年好友张哲共同创立了机器人感知解决方案公司PerceptIn(普思英察),到现在刚好一年了。 在这里总结一下百度对我成长的帮助,创业的初衷,以及创业一年对技术的感悟。
 
  百度教会我的简单可依赖
 
  在去百度美国研究院前,我在 Microsoft 与 LinkedIn 一共工作了4年多,每年收入都不错,也很稳定,与同事相处也都很开心,但是总觉得好像缺了什么。 2014年,自己内心感觉想在事业上往前发展,但是没找到一个适合自己的平台。这时候百度刚好在硅谷建立研究院,也找到了我,看看我有无兴趣去百度发展。当时内心很想去探索一下,但是也有朋友说中国公司很累而且文化与美国不太一样,我也担心自己适应不了。
 
  1. 痛苦的三个月转型期
 
  2014年6月,怀着一丝兴奋与好奇,我加入了百度美国研究院,负责分布式计算平台架构。第一个月,我第一次回总部出差,确实感觉到不适应:第一,我需要去推销自己的项目,让国内的团队去用我们研发的新的技术,而在美国的公司,架构师是不需要去推销自己的项目,通常是公司制定做什么项目的。 第二,国内节奏很快,基本一个技术上的决定很快会做出,而不会想美国一样讨论几周才拍定一个方案。我的头三个月就这么过去了,灰头土脸,自己的项目不断被否定,被挑战,虽然花了许多力气,好像都没有任何回报。甚至怀疑自己是否应该离开百度了。
 
  2. 跟上节奏,默默耕耘
 
  经过了三个月,感觉自己跟上节奏了,也渐渐变得开心了,项目推进也有了很大进展,跟国内的同事的关系也慢慢建立起来了,得到了大家的信任。这个时候发现了自己一个很大的转变是变得谦虚了,刚入公司是觉得自己在美国读了博士而且工作多年,可以去指导国内同事怎么做事情,但是这样的态度只会处处碰壁。反而放下身段后,细心的去了解合作团队的需求,做出适合他们的技术产品,自然就会得到认可。 回想起来,这是个文化匹配的问题,百度的文化是简单可依赖,合作团队需求的是简单直接,可依赖的技术产品,最重要的是实用可靠,而不需要一些所谓的高大上的外衣包装。在适应与融入这个文化后,自然而然就变的开心了。
 
  3. 稳中求进
 
  在适应了简单可依赖文化与得到大家信任后,我尝试去把一些前沿的大数据平台项目,比如ALLUXIO,引入百度。经过与硅谷开源团队ALLUXIO的对接与调试,我们成功把ALLUXIO引入百度,并且大幅提升了百度交互式查询引擎的性能。在原有平台的基础上进一步推进前沿技术在百度的落地。这个时期我们还是以既有的平台为基础,在其之上进行新技术的导入,可以说是稳中求进,延续了简单可依赖的思想。
 
  4. 快速成长
 
  在打下了坚实的基础后,我在百度进入了快速成长期,开始主导一些很前沿的项目,包括分布式深度学习平台,分布式异构计算平台,无人驾驶系统等等。 这个时期是我在百度最开心最满足的时期,可以与许多世界级顶尖专家一起工作,从他们的身上也学到了许多东西。 在这个时期的技术积累让我有了融汇贯通的感觉,在技术上对自己也越发自信了。
 
  刘少山在O‘reilly上发表的文章:创造自动驾驶汽车系统。
 
  5. 如果没去百度,我的事业会是怎样?
 
  百度是我职业生涯中工作过最好的地方,公司尊重技术,同事们的水平都很高,而且都是简单可依赖 (如果做不到简单可依赖在百度是呆不长久的)。 刚入公司时的痛苦转型期其实给了自己很大的帮助,让我学会有效的与分布在世界各地的团队沟通,让我学会了如何去推进项目,这些在美国公司是很难学到的。 同时,接触到了最前沿的技术,开阔了眼界,更重要的是认识了一批志同道合的朋友。如果没去百度,我很可能还在美国某个大公司做着一颗螺丝钉,温水煮青蛙,待着很舒适但其实危机四伏。虽然现在已经离开百度去创业了,但是简单可依赖的文化已经深入骨髓, 会让我毕生受用。
 
  创业的初衷
 
  微软创始人比尔盖茨(Bill Gates)在十年前的一篇前瞻性文章《每个家庭都有一个机器人》(A Robot In Every Home),预言每个家庭除了拥有电脑之外,还应该有一台机器人。这篇文章对我们的启发很大, 我们本来都很喜欢机器人技术,当时在微软时就经常讨论机器人技术细节。但是当时觉得机器人行业的时机未到,还不成熟。 到了2014年我们先后到了硅谷发展,还是不断的讨论机器人技术的细节。到了2016年初,觉得时机差不多了,就决定一起辞职创业了。
 
  为什么当时觉得这个点到了呢?如果了解下硅谷的发展,可以看到明显的几大阶段, 1960年代,从仙童半导体开始的,然后有了英特尔等芯片公司,把电脑小型化平民化,让信息技术变得触手可及。但是由于缺乏图像界面,一般人很难使用,妨碍了计算机的普及。到了1980年代,以微软与苹果为代表的技术公司在芯片上提供了操作系统解决方案与图形界面,把电脑变得易用,从而个人电脑普及了。在个人电脑普及后,又一场技术革命是谷歌与百度等公司的出现把人与信息连接起来了。在有了人与信息的连接后,Facebook,LinkedIn,腾讯微信等产品又把人与人连起来了,把人类社会搬到了互联网。在有了这样互联之后,Uber与Airbnb,包括更早的Amazon,又逐步把人类的商业模式互联网化了,在互联网的社会上建立了互联网商业社会。但是当你在这个互联网商业社会上进行商业活动时,为你提供服务的还是人:你用Uber或者滴滴打车时,或者当你叫百度外卖时, 为你服务的是由人类驾驶员。 随着近几年人工智能以及硬件技术的发展,我们认为当前的市场环境以及技术已经逐渐成熟, 在未来几年机器人会逐渐代替人类去做一些服务类的工作,把人类从这些繁琐的工作中解放出来。所以我们决心出来创业。
 
  立足:SLAM 技术
 
  机器人一个基础的能力是感知自身的位置以及周围的环境,为了实现这个功能,我们需要SLAM技术,而SLAM技术正是PerceptIn创立时的立足点。什么是SLAM技术?SLAM指的是当机器人来到一个完全陌生的环境时,它需要精准地建立时间和空间的对应关系,并能完美地回答以下一系列问题:我刚才在哪里,现在在哪里?我看到了什么,现在看到的和之前看到的有哪些异同?我过去的行走轨迹是什么?我现在看到的世界是什么样子,和过去相比有怎样的变化? 我还能跟踪到自己的轨迹吗,如果我丢了应该怎么办?我过去建立的对世界的认识还有用吗?我能在已有世界的抽象里快速对我现在的位置进行定位吗?
 
  传统 SLAM 的主要分类包括 robotic SLAM, Parallel Tracking and Mapping(PTAM), Sparse SLAM, 与Dense SLAM. Robotic SLAM主要包括卡尔曼滤波和粒子滤波。卡尔曼滤波在很多工程领域中都有应用,最早期用于机器人的卡尔曼滤波,默认系统是线性的且带高斯分布的噪音,经典的卡尔曼滤波可以直接给出最优解,但现实比这复杂太多,所以有了卡尔曼滤波的很多变种。而如果不是线性系统或噪音不是高斯分布,那么粒子滤波算法生成很多粒子,并且每个粒子是模型状态的一种可能,再根据观察和更新得到粒子群的状态趋于一致的收敛结果。当然粒子滤波也有实际的问题,比如经典的粒子衰减问题(particle depletion),和工程上如何控制准确性和收敛速度很好平衡的问题。
 
  PTAM架构更多的是系统上的设计,姿态跟踪(Tracking)和建立地图(Mapping)两个线程是并行的,这实质上是一种针对SLAM的多线程设计。PTAM在当前SLAM领域看来是小儿科,但在当时是一个创举,第一次让大家觉得对地图的优化可以整合到实时计算中,并且整个系统可以跑起来。具体而言,姿态跟踪线程不修改地图,只是利用已知地图来快速跟踪;而在建立地图线程专注于地图的建立、维护和更新。即使建立地图线程耗时稍长,姿态跟踪线程仍然有地图可以跟踪。
 
  Sparse SLAM从架构上主要分为两大类:filter based 和 keyframe based。这里的滤波比早年的robotic SLAM的滤波已经复杂很多,比较有代表性的是EKF SLAM,核心的思想是对非线性系统进行线性近似。keyframe based SLAM的核心思想是关键帧(keyframe)的概念——因为每一张图都用来建立或更新地图计算量太大,从image stream里面选择一些好的关键帧来建立并更新地图——PTAM里的地图建立就是从关键帧生成地图。
 
  Dense SLAM 是另外一大类 SLAM,一般是某种主动光源的深度传感器(depth sensor,如英特尔的RealSense里面是ASIC)产生的,假设depth sensor每一帧的分辨率是640x480,即使有2/3的invalid depth,仍然有十万个3D点,所以通常所说的sparse map和dense map相比至少差了两个数量级。因为dense SLAM有足够多的地图信息,所以很适合用来做精细的3D重建 (细节请见张哲博士的文章《SLAM刚刚开始的未来》)。
 
  愿景:感知,洞察,智能( Perception, Insight, Intelligence)
 
  SLAM是机器人定位的核心技术,是感知(Perception)技术的一部分,而PerceptIn的愿景是通过提供Perception, Insight, Intelligence的整体解决方案以逐渐提高机器人的能力。为了实现我们的愿景,除了SLAM与场景识别等感知技术外,我们需要整合以下的技术点:
 
  人工智能云计算: Insight
 
  当机器人普及后会产生大量的数据,而通过分析与学习这些数据我们可以不断提高机器人的智能。现有的大数据平台一般存储与处理文本数据,但是当机器人普及后,会产生大量的多媒体数据,比如视频,音频等等。 不同于文本数据,多媒体数据并非结构化,而且数据量极大,在计算量有限的情况下如何快速并有效的从多媒体数据中提取有用的信息,如何存储海量的多媒体数据为人工智能云计算平台的主要挑战。在拥有大量数据后,人工智能云平台主意为机器人提供分布式深度学习模型训练(主要用于生产更好的感知模型)以及模拟测试(主要用于生产更好的决策模型)等服务。
 
  当数据或者模型规模上去以后,深度学习必然牵涉到要进行分布式训练。这个一般主要有两种方法进行并行: 数据并行, 以及模型并行。 分布式深度学习用的最多的并行方法就是数据并行,所谓数据并行,就是因为训练数据规模非常大,需要把数据拆分,把模型分布到N个机器上面训练。但是因为最终训练的是一个模型,同时每个机器只能分配到一部分数据,训练的同步和收敛性必须得到保证。最经典的做法是在 Parameter Server for Distributed Machine Learning 中提到的用参数服务器(Parameter Server)的方法。
 
  具体的想法是用模型参数服务的方法来同步参数的更新,每个参数服务器只负责同步公共参数的一部分。举个例子来说,如果模型M 被分布到N 个机器上面训练,每个机器拿到一部分数据,假设训练的参数集合是W, 每个机器首先进行本地训练,假设他们初始化参数都是, 根据,每台机器都能算出相应的代价函数的梯度, 一般按照单机神经网络反向传播的方式,每个层都可以梯度来得到参数的修正值,这样参数就变成因为是多机,每个节点对参数的修正量不同,就会多了一个步骤把各自参数的修正量push给参数服务器, 有他统一决策下个训练循环的修正量,这样大家的训练模型就会被统一起来。(细节请见《基于Spark的异构分布式深度学习平台架构》)
 
  另外,当我们收集了大量数据后,我们可以使用数据回放等模拟方法,通过增强学习进行决策模型训练。数据量有多大呢?以来自真实世界的KITTI数据集为例,KITTI的研究人员录制了6个小时的真实数据,数据量为720GB。KITTI数据整集6小时的原数据包括了超过1000000张140万像素的彩图,如果使用单机的基于深度学习的图像识别平台,每张彩图分析时间大概是0.3秒。这样,仅是分析KITTI数据集的图片,就需要超过100小时。
 
  为了高效地进行数据回放模拟,我们设计了基于Spark的分布式模拟平台框架。Spark是UC Berkeley AMPLab开源的通用并行计算框架。Spark基于内存实现的分布式计算,拥有Hadoop所具有的优点;但不同于Hadoop,Spark Job的中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地应用于需要迭代的Map-Reduce算法。在设计实现的同时,我们对系统进行了性能评估。随着计算资源的增加,计算时间也在线性地降低,系统表现出很强的可扩展性,可以承受很大的数据量与计算量。(细节请见《基于Spark与ROS分布式无人驾驶模拟平台》)
 
  增强学习:Intelligence
 
  增强学习的目的是通过和环境交互学习到如何在相应的观测中采取最优行为。行为的好坏可以通过环境给的奖励来确定。不同的环境有不同的观测和奖励。例如,机器人对环境观测主要是通过摄像头采集到图像,以及其他的传感器的输出,例如行驶速度、GPS定位、行驶方向等。增强学习和传统机器学习的最大区别是增强学习是一个闭环学习的系统,增强学习算法选取的行为会直接影响到环境,进而影响到该算法之后从环境中得到的观测。传统的机器学习通过把收集训练数据和模型学习作为两个独立的过程。例如,如果我们需要学习一个人脸分类的模型。传统机器学习方法首先需要雇佣标注者标注一批人脸图像数据,然后在这些数据中学习模型,最后我们可以把训练出来的人脸识别模型在现实的应用中进行测试。
 
  如果发现测试结果不理想,那么我们需要分析模型中存在问题,并且试着从数据收集或者模型训练中寻找原因,然后从这些步骤中解决这些问题。对于同样的问题,增强学习采用的方法是通过在人脸识别的系统中尝试进行预测,并且通过用户反馈的满意程度来调整自己的预测,从而统一收集训练数据和模型学习的过程。
 
  增强学习存在着很多传统机器学习所不具备的挑战。
 
  首先,因为在增强学习中没有确定在每一时刻应该采取哪个行为的信息,增强学习算法必须通过探索各种可能的行为才能判断出最优的行为。如何有效地在可能行为数量较多的情况下有效探索,是增强学习中最重要的问题之一。
 
  其次,在增强学习中一个行为不仅可能会影响当前时刻的奖励,而且还可能会影响之后所有时刻的奖励。在最坏的情况下,一个好行为不会在当前时刻获得奖励,而会在很多步都执行正确后才能得到奖励。在这种情况下,增强学习需要判断出奖励和很多步之前的行为有关非常有难度。
 
  虽然增强学习存在很多挑战,它也能够解决很多传统的机器学习不能解决的问题。
 
  首先,由于不需要标注的过程, 增强学习可以更有效地解决环境中所存在着的特殊情况。只要我们有足够的数据去模拟出这些特殊情况,增强学习就可以学习到怎么在这些特殊情况中做出正确的行为。
 
  其次,增强学习可以把整个系统作为一个整体的系统,从而对其中的一些模块更加鲁棒。例如,机器人的感知模块不可能做到完全可靠。增强学习可以做到,即使在某些模块失效的情况下也能做出稳妥的行为。
 
  最后,增强学习可以比较容易学习到一系列行为。机器人运动过程中需要执行一系列正确的行为才能去到目的地。如果只有标注数据,学习到的模型如果每个时刻偏移了一点,到最后可能就会偏移非常多,产生毁灭性的后果。而增强学习能够学会自动修正偏移。

注:本文系作者 admin 授权融媒体发表,并经融媒体编辑,转载请注明出处和本文链接

我要围观…
705人参与 36条评论
  • 最热评论
  • 最新评论
加力那24分钟前 回复284

就是因为病人多,专家少,你还要抓?如果你是一个专家,一天12小时不吃不喝不上厕所给20个病人看病,可是外面排队的病人有100个。

Taso韩先生28分钟前 回复284

就是因为病人多,专家少,你还要抓?如果你是一个专家,一天12小时不吃不喝不上厕所给20个病人看病,可是外面排队的病人有100个。

加力那28分钟前 回复284

就是因为病人多,专家少,你还要抓?如果你是一个专家,一天12小时不吃不喝不上厕所给20个病人看病,可是外面排队的病人有100个。

Taso韩先生24分钟前 回复284

就是因为病人多,专家少,你还要抓?如果你是一个专家,一天12小时不吃不喝不上厕所给20个病人看病,可是外面排队的病人有100个。

admin

关注

现专注于互联网行业—公关领域。兴趣广泛,热爱传统文化,以及看书,闲时写些文字等。

  • 17万阅读量
  • 17万文章数
  • 3评论数
作者文章
  • 湖南电气职院师生赴英雄航天员汤洪波家中观看“神舟十七号”返航着陆

  • 拼多多跨界微短剧,能演好这出戏吗?

  • 湖南水电职院在中国国际“互联网+”大学生创新创业大赛中取得新突破

  • 国产数据库实践:亚信安慧AntDB在DTC 2024展示创新实力

  • 583硬派家族+SUPER9跑车,方程豹产品矩阵献礼比亚迪30周年

关于我们 |加入我们 |广告及服务 |提交建议
友情链接
赛迪网 |钛媒体 |虎嗅网 |品途网 |i黑马 |果壳网 |砍柴网 |创业邦 |易观网 |凯恩思 |创业邦 |舆情之家
Copyright©2003-2015 融媒体版权
粤ICP备05052968