安装工程svm算法结果不一样结果一样吗??

【滴滴出行算法工程师面试题目|面试经验】-看准网
公司地址 北京市海淀区东北旺路8号院尚东&数字山谷B1号楼公司介绍
共15张照片
滴滴一下,马上出发!移动互联网让出行更美好。
嘀嘀打车其他版本及离线地图
嘀嘀打车Android版本、离线地图
嘀嘀打车-司机版
面向出租车司机的APP
嘀嘀打车-乘客版
手机打车APP
滴滴出行面试(39条)
面试地点:滴滴出行-北京
我的简历背景是主要做社区发现算法,之前做同构网络的社区发现算...
或,让我们更懂你,就能更多帮到你
面试结果:感觉靠谱
面试难度:有难度
面试感受:一般
面试地点:滴滴出行-北京
境:滴滴刚搬了新家,工作环境很整洁、楼上还有咖啡厅,轻松愉快...
或,让我们更懂你,就能更多帮到你
面试结果:感觉靠谱
面试难度:有难度
面试感受:很好
这里的内容对你有帮助?
分享你的工作感受,让更多的职场新人获得帮助!
面试地点:滴滴出行-北京
一面:技术面。简历上的算法,LR SVMLR损失函数,决策函...
或,让我们更懂你,就能更多帮到你
面试结果:面试未通过
面试难度:困难
面试感受:一般
面试地点:滴滴出行-北京
第一面:要求介绍K-means算法,并给出找起始点的策略。开...面试官的问题:
问问了一个超有意思的智力题:
100个人排队,每个人只能看到自己之前的人的帽子的颜色(假设只有黑白两色),每个人都得猜自己帽子的颜色,只能说一次,说错就死掉,别人可以听到之前的人的答案以及是否死掉。请问用什么策略说死掉的人最少。
答我的回答是看哪个颜色的多就说哪个颜色。后来就想不出来了。
接着面试官简单介绍了一下他们目前的工作。然后问我有没有问题问他。然后我恳求他告诉我这道题的答案。他说了他的策略。
假设只有3个人,假设ture = 白,false = 黑,用这个公式x3 = (x1 == x2),用人话就是1和2的帽子颜色一样的话就说白,不一样的话就说黑。这个策略第一个人死的概率是1/2,剩下的两个都不会死。
他让我推广到4个人,也就是x4 = (x3 == (x1 == x2)),照理可以推广到100人。但问题就是人很难判断,只能靠计算机来算。
网友提供了一个解题方法:“最后一个人看一下前面黑帽子的个数是奇数还是偶数,比如约定奇数说黑,偶数说白。这样前面的人都可以推断出来正确的结果。”
或,让我们更懂你,就能更多帮到你
面试结果:感觉没戏
面试难度:有难度
面试感受:很好
面试地点:滴滴出行-北京
地点在西二旗地铁站附近,不过出地铁后要走很远,开始我还走错了...面试官的问题:
问二叉树遍历
答前序递归的算法,让用非递归实现
或,让我们更懂你,就能更多帮到你
面试结果:感觉靠谱
面试难度:困难
面试感受:一般
面试地点:滴滴出行-北京
面的是算法岗,提前一天电话通知的现场面试,由于一直做的是和图...
或,让我们更懂你,就能更多帮到你
面试结果:面试未通过
面试难度:一般
面试感受:一般
面试地点:滴滴出行-北京
技术面了2轮1.第一轮主要是介绍过去经历,谈一些过往经历中使...
或,让我们更懂你,就能更多帮到你
面试结果:感觉没戏
面试难度:有难度
面试感受:一般
面试地点:滴滴出行-杭州
两轮面试,第一轮面试官主要围绕机器学习算法和计算机基础提问:...
或,让我们更懂你,就能更多帮到你
面试结果:面试未通过
面试难度:有难度
面试感受:不好
面试地点:滴滴出行-杭州
一面 二面的间隔时间很短。只有10分钟左右,都是电话面,下周...面试官的问题:
问说一下XGBOOST
或,让我们更懂你,就能更多帮到你
面试结果:感觉靠谱
面试难度:有难度
面试感受:很好
面试地点:滴滴出行-北京
自我介绍,项目经历,之后是能力考查。主要是包括四道算法类题目...面试官的问题:
问如何用一枚不均匀的硬币,模拟一枚均匀的硬币?(常见问题)
答P(A~A)=P(~AA)即可,模拟两种概率相同的情况,解决方法不唯一。
或,让我们更懂你,就能更多帮到你
面试结果:感觉靠谱
面试难度:有难度
面试感受:很好
在滴滴出行工作过么?
给TA打个分吧!
向该公司老鸟提问
2回答 · 3关注
3回答 · 3关注
3回答 · 3关注
4回答 · 3关注
1回答 · 2关注
1回答 · 2关注
1回答 · 2关注
4回答 · 5关注
1回答 · 2关注
1回答 · 2关注
来自工作1年-前员工的点评
来自工作1年-前员工的点评
来自工作1年-前员工的点评
来自工作1年-前员工的点评
来自工作1年-前员工的点评
来自工作1年-前员工的点评
来自工作1年-前员工的点评
来自工作1年-在职员工的点评
来自工作1年-前员工的点评
来自工作1年-在职员工的点评
¥7350月平均工资
高于同行业
来自 202职业,478员工分享
平均¥17000
来自57员工分享
平均¥6000
来自13员工分享
平均¥12000
来自12员工分享
来自10员工分享
来自9员工分享
来自8员工分享
来自8员工分享
来自7员工分享
来自6员工分享
来自6员工分享
看了该公司的还看了
滴滴出行面经:想知道滴滴出行怎么样?看准网()免费提供滴滴出行招聘、滴滴出行工资、滴滴出行面试、评价、工作环境招聘及员工等北京小桔科技有限公司的信息。
内容索引:
优秀公司:
行业公司:
关注看准官方微信
下载看准官方APP
关注看准官方微信
下载看准官方APP
爆料数十万公司信息爆料
互助职场人在线互动
工资公司实际工资查看
改简历专人改简历提高工资
老鸟私聊求助能挣钱
输入手机号,下载看准APP
扫码下载看准APP或各大应用商店搜索:看准
广告等垃圾信息
违禁信息(色情、欺诈、非法传销)
不友善内容(诽谤,人身攻击、骚扰、侵犯隐私)
违法、政治敏感内容
感谢您的举报,我们会尽快处理~
扫描二维码下载&&&&&搜索&“滴滴出行”&&&&&等老鸟等你来聊
订阅公司信息
订阅成功!
小贴士:问题描述的越清楚,越能吸引老鸟来回答哟~
请输入问题
向老鸟咨询
把你关于滴滴出行的问题大胆的提出来,这里的841位老鸟很乐意为你解答~
写下问题吧~
提交成功!请静静等待老鸟们回答~
扫描二维码分享到朋友圈,邀请微信好友帮忙解答
下载看准APP
立享畅读全站爆料工程师要不要写ETL? 教你构建高效的算法/数据科学部门
作者:张相於
在很多互联网公司的算法相关部门(例如搜索、推荐、广告)里,都有“做算法的”和“做工程的”两个工种。这个看似天经地义的分工方式是否就是最优的方式?这似乎还是存在一些争议的。
这篇文章阐述了一种当前较为普遍合作模式下的问题,译者觉得说得很在点上。更宝贵的是,作者同时也提出了一种可能会更好的合作模式,能够解决这些问题。
需要提前说明的一点,文中的“数据科学家”可理解为我们常说的偏算法的工程师,而文中的“工程师”或者“数据工程师”可理解为我们常说的偏工程或者偏架构的工程师。
“你的团队和数据科学家们[1]之间的关系是怎样的”?毫无疑问,这是我作为面试官,面试数据平台工程师[2]时最常被问到的一个问题。这在面试过程中是一个很正常的问题,属于求职者评估新机会的必要流程。而我也经常很乐于回答这个问题。但是我希望我不需要回答,因为这个问题的背后,折射出的是怀疑和恐惧。
为什么呢?如果你阅读一下硅谷科技公司里数据科学与算法开发部门的招聘启事,你或许会相信数据科学家和工程师之间的关系是高度协作、有机并且富有创造性的。
但是,行业里的真实情况却并非如此。大多数场景下,这两者的关系其实是介于“不存在”[3]和“高度功能失调”之间的。
一个典型的数据科学部门
大多数公司将他们的数据科学部门划分为三个组:
数据科学家:这些家伙就是那些“工程比统计学家好&统计比工程师好”的人。也就是所谓的“思考者”。数据工程师:这些人构建数据通道,将数据“喂”到数据科学家“嘴里”,然后从数据科学家手里拿到idea并且实现它们。也就是所谓的“执行者”(Doer)。架构工程师:这些人维护Hadoop集群以及其他大数据平台架构。也就是所谓的“水管工”[4]。
数据科学家们经常不爽的是,工程师们实现算法的速度太慢,以及他们之间的工作流程,路线图以及动机总是同步不到位。当他们想法的版本1进入ABTest的时候,版本2和版本3早就已经排好队了。他们的失望和不爽是非常可以理解的。
数据工程师们经常不爽的是,数据科学家们给出的代码总是效率低下,代码丑陋,几乎从不考虑可维护性和工程化问题,而且会提出一些不现实的功能需求,结果是破坏了工程实现方案,但也没有得到什么好处。这种问题继续下去还有很多,但是相信你已经懂了问题在哪里。
而架构工程师们对他们都不爽,因为他们总是将集群上塞满任务,将硬盘里塞满数据。而且他们常常与数据科学家和工程师们都离得比较远,这意味着他们从来不知道集群是在什么场景下被如何使用的,也不知道集群被用来解决什么业务或技术问题。这让他们在很难摆脱当前不爽的境地。所以,他们的应对方法就是对集群做更严格的限制,这样做的结果,就是其他人都开始对他们感到不爽。
这显然是个恶性循环。36大数据(/)
哪里错了?36大数据(/)
我们都知道这样做是不对的,那我们为什么不解决这样的问题呢?为什么每个数据科学和算法开发部门似乎都会滑落到这样“功能失调”的模型中?
我将这其中的症结归于两件事情,在这里用一些观察来做出阐述。
你或许并没有“大数据”
数据处理的工具和技术在过去五年间发生了巨大的进步。除非你要处理几个P级别的数据,或者每天需要消费千亿级的事件,那么大多数技术现在都可以轻松扩容到你所需要的规模。
除非你有试探这些技术的极限的需求,你或许并不需要一只高度专业的专业工程师团队来在其基础上构建解决方案。如果你雇佣了这些人,他们会感到无聊。如果他们感到无聊,他们就会离你而去,去到他们的专业技能更能发挥作用的地方,例如Google,Facebook等等。如果他们不感到无聊,那么他们的技能很可能非常平庸。平庸的工程师最擅长的事情,就是构建巨大无比、过于复杂、难以使用的垃圾,然后称之为“解决方案”。而垃圾往往需要更多的维护工作。
每个人都想做“思考者”
因为这听起来更酷!你可以整天坐在那里,思考做事情更好的方式,然后把你的思考结果甩给那些急于将它们工程化的工程师们。大街上每个人都会喜欢这个职位的!数据科学家们,尤其是那些刚刚工作、对行业了解不多的,对这样的职位尤其喜欢。
这些都是我们引导的结果,而一些大公司更要为此负责,尤其是那些在大数据疯狂之前就已经有了数据智能部门的公司。
一个传统的数据智能部门包括三种角色:ETL工程师,报告工程师(report developer),以及DBA。ETL工程师把数据转移到数据仓库中。报告工程师的主要工作是在特定工具(例如MicroStrategy)中设计报告,这些人是领域内的专家。DBA(和其他工具管理团队)的工作就是让这一切都流畅运行。36大数据(/)
这里的问题在于,ETL工程师,报告工程师还有DBA全部是执行者,所以,当十年前“大数据”和“数据科学家”这些词汇刚刚兴起的时候,这些传统的BI部门面临着执行者太多,而缺乏思考者的问题。所以他们制造了“思考者”这样一个职位。我们向数据科学家许下承诺,承诺他们可以随便折腾数据,进而改变世界。但事实上并非如此。这些数据科学家有时会创造出一些很酷并且有用的方案,但是在大多数时间里,他们做的工作并不比报告工程师高明多少。
但是这个职位听起来很酷,而且比较容易招聘。所以就诞生了当代传统的数据科学部门:数据科学家(以前的报告工程师,现在的“思考者”),数据工程师(以前的ETL工程师,现在的“执行者”),以及架构工程师(以前的DBA,现在的“水管工”)。
呵呵,看起来数据智能(BI)部门从来就没有改变,我们只是加了个Hadoop集群然后换了个新名字。36大数据(/)
真的那么糟糕吗?
这个问题取决于我们的目的是什么。如果你同意上面的观点,那么你得承认,自从BI兴起之日,很多公司使用这样的模式使用了很多年。但是如果你希望你的数据科学团队能够产出PPT以外的更多成果,那么我认为这是一个非常低效率的模型。
上面的“思考者”+“执行者”模式想要成功的一个基本假设是:需要有一群出色的工程师,他们没有自己的灵魂,只是积极地将“思考者”的想法实现落地。但是,这样的工程师,会是出色的工程师吗?
在这个模型中,执行者们需要为其他人思想的实现和失败负责,而思考者则因为成功而受到奖赏。这就是团队中争论和嫌隙的核心。
如果你希望为数据工程师岗位招聘到有天赋的优秀人才,你需要一些更大规模的、更NB的问题来让他们解决,好让他们的工作中不只是毫无灵魂地实现别人的想法。你需要的是大数据催生的大规模问题,但问题是,你并没有大数据。
所以,你只能雇到中庸的工程师。他们会制造出大量的烂摊子,进一步加重问题,让你走上恶性循环。最终的结果,就是数据科学家并不比传统的报告工程师厉害多少,因为他们缺乏一个创新、坚固的数据平台支持。进一步,如果你把他们定位为报告工程师,数据科学家们就该跑路了,毕竟,他们可是“思考者”,不是“执行者”!
一种不同的数据科学部门
在这个问题上,我们不应该去一味地效仿那些大公司的做法,而是应该想办法去革新这个模型。别再试图去设计更快的马了[5]……
几年以前,当我我加入Stitch Fix也正是这个原因。在Stitch Fix,我们努力在算法和分析方面做到世界最好。我们的方法是通过输出来领导行业,而不是把结果简单地告知(inform)[6]。所以要想达到目的,必须从心底认为当前的模式是不对的,这样才能全身心投入地创造更好的新模式。
在见证了过去两年中我们部门发展壮大的过程后,我有信心将这些与大家分享。既然我们的目的是通过输出来领导,而不是告知,我希望分享一种我认为更好的数据科学部门的组织方式。这是一种完全“自治”的角色,一种从头到尾负责到底的责任感和ownership,并且要为结果负责。这是一种更加适合快速发展和迭代的公司的做法。
让每个人都成为最好的
让我们忘掉传统角色的分别,来思考一下工作中真正让人兴奋的地方。
不管什么角色,普通和优秀之间最大的差异之一就是对创新的渴望和能力。优秀的人能够识别并创造性地解决普通人无法解决的问题,他们更适合,也更渴望一种自治、ownership和专注的环境。
从数据科学家到工程师的流水线完全是这种环境的反方向(事实上数据科学家们也不喜欢如此依赖“执行者”)。所以诀窍就在于为每个人都创造足够自治、ownsership和专注的环境。
但需要注意的是,能让数据科学家和工程师们兴奋的点是完全不一样的:
数据科学家
数据科学家们喜欢的问题是与业务紧密相关,能够通过自己努力直接影响项目或者组织的成败的。他们对某些事情或者流程进行优化,或者从头创造一个东西。这些都是针对性很强的问题,所以他们的solution也会是这样。这些solution涉及到各种商业逻辑的混合,对运行流程的深入思考,以及大量的创造性。因此,这需要对业务逻辑中某个部分的深刻理解,以及对业务过程的纵向深入参与。
工程师们擅长将问题抽象、泛化,然后找到优雅有效的解决方案。与数据科学家们感兴趣的问题不同,这些问题一般都是横向的,也就是说,他们在被广泛应用时能够发挥最大作用。这需要对业务运转整体流程的整体深入理解,由于这些解决方法都是高度抽象的,因此并不要求工程师对业务的某一部分有非常深入的了解和参与度。
知行合一(Hybrid Thinker-Doer)
数据工程师们最害怕的事,就是尽管你的JD写得非常炫酷,但是你心中真正想要招的,还是ELT工程师。
如果你还没有意识到,那我可以告诉你:没有人喜欢简单地编写和维护数据管道或者ETL。这是这个行业里最烫手的山芋。因此,这个职位成为孕育平庸的温床也就不足为奇了。
工程师不应该写ETL。这不应该是一个专门的职位,没有什么比编写、修改、维护、支持一堆自己从来不用的ETL更让人沮丧的了。
相反,应该将工作整体的端到端的所有权交给员工。对于数据科学家来说,这意味着对ETL的所有权,对分析和最终产出的所有权。数据科学家们工作的最好产出应该是面向机器的,而不是面向人的。最好的产出物不是PPT或者报告,而是一个算法的API,可以通过调用这些API来改变业务。自治权同时也意味着对代码的所有权。从开始开发一直到生产上线。他们应该可以独立部署应用,并对其性能、效果和其他支持负责。
但是数据科学家们一般来说在软件开发方面并不是非常专业,最多算是合格。所以他们可能会在工程方面制造很多混乱。这也是为什么数据的ETL和算法的落地开发通常都会交给专业工程师来做。这些任务本质上都是垂直(纵向)聚焦的,但有天赋的工程师们最擅长的往往是应用的横向扩展[7]。
那么在这种场景下,工程师的职责应该是什么呢?综合来说,他们需要部署平台、服务、框架,使得数据科学家们可以自主的快速开发、部署他们的想法。可以将这些工作类比为乐高积木:工程师们设计乐高积木块,数据科学家们通过组装这些积木块来实现新的想法。这样做的好处非常明显:
工程师们的工作变成了完全横向的。这让他们可以专注于设计开发能够横跨多种算法应用的技术。这样做可以将工程技术的输出最大化。
工程师们可以专注于他们最擅长的:抽象、泛化,然后构建有效的,可扩展的技术方案。
工程师们可以自主工作。这样运作的工程团队工作起来就像变魔术,数据科学家们所期待的所需要的东西全部是可以提前预料到的,扩展性和健壮性全部交给了平台、服务和框架,而这些正是工程师们的工作。
为了让这套机制能够正常运转,大多数时候工程师们需要能预料到数据科学家们的需求,他们需要提前提前若干步进行开发。
对于有天赋的工程师和数据科学家来说,这显然有趣多了。
所以,所有的工作都被数据科学家们干了吗?36大数据(/)
完全不是。相反,工程师们在这个系统中承担的职责要比传统方式中更加具有挑战性,也更加被需要,对于数据科学家来说也是一样。我们这套机制并不是在优化效率,而是在强调自治性。这套机制的产物是明确的自治权和对结果负责的明确责任。
这对富有创业精神的人来说是非常有吸引力的。它打开了快速开发和颠覆式创新(disruptive innovation)的大门。但它的代价是一定程度的专业度,也就是一定的效率。
我们并不期待数据科学家们忽然变成有天赋的工程师,我们同样也不希望工程师们完全不了解业务逻辑,丢掉垂直深入的主动性。事实上,团队合作(partnership)才是这个模型可以工作的核心。工程师们应该将自己看作“钢铁侠的裁缝”,他们的使命是建造出强大的钢铁战衣,防止数据科学家们落入方案不可扩展或者方案不可靠的陷阱。
一条极富挑战性的路
看到这里,你或许在怀疑这样的机制能否真正建立起来。但是这样做带来的收益完全值得去冒险。下面是一些可能会阻碍这个甚至会逆转这个过程的问题:
人们不愿意改变。人们总是倾向于重建他们习惯的环境,这会导致他们倾向于返回到传统的思考者-执行者模型。新雇佣的人更容易习惯新的组织架构。当发生问题时应该尤其警觉,例如当API出了问题或者算法效果不好。
人们会坚持认为工程师应该为此负责,但是他们往往说的只是症状,而不是问题本身。工程师们应该做的是为平台提供更好的支持、可视化、抽象以及健壮性。同时应该认识到,工程师本来就有可能破坏东西,没人可以保证不犯错误,不破坏任何东西。36大数据(/)
平台工程师们一定要走在数据科学家们前面。团队里需要非常敏锐的工程师,能够提前预料到数据科学家们需要哪些服务、框架和功能。数据科学家不再把想法交给工程师来实现的一个后果就是,工程师们不再能够针对数据科学家的需求来做出反应,因此就需要能够提前预判。
记住,工程师们是在建造乐高积木,而数据科学家们是在组装积木。如果数据科学家们没有合适的积木可用,他们就会找出其他的解决方案。他们要么会使用错误的积木(在圆形的洞里填一个方形的积木),要么会自己造一个。通常来讲,由于这种自己造轮子的过程缺乏系统性和全局性考虑,所以会造成一团混乱。而这种混乱一旦被创造出来就很难收拾,正所谓覆水难收。
不要惧怕效率问题
鼓励数据科学家肩负如此广阔任务栈的后果之一,就是他们可能无法生产出和专业工程师一样专业高效的代码和方案。我们是在用效率来交换速度和自治性。对这个复杂权衡的认识是非常重要的。
但与此同时,这种端到端的自治性也有一些不那么明显的高效之处。在他们所实现的领域,数据科学家们是专家,所以他们能够做出一些需求和技术代价之间的权衡。例如,他们可以决定在某些合适的地方使用抽样数据,或者近似方法,他们可以决定砍掉一些实现和维护代价很高,但是收益有限的功能。这些在传统的思考者-执行者模型中是基本不会发生的,即使发生了,也是以反复沟通谈判为代价的。
综合来说,我们希望这种自治性带来的效率和创新会大于数据科学家“全栈开发”带来的一些低效。
我不会声称我们发现了组织数据科学部门的最好方式,或者说这就是最适合你所在的组织的方式。但是这一定不是一种试图建造“更快的马”的尝试,而且我觉得这是更加适合我们的一种方式。
我真诚地希望,通过分享我们的尝试,能够鼓励其他非传统数据科学部门做出同样的尝试;能够激发正在组建新部门的负责人的灵感,让他们能够脑洞大开,挑战传统;能够告诉被传统组织架构所“伤害”的工程师和数据科学家们,还有其他可以工作的模式和环境存在。
参考资料:
[1] 本文中的“数据科学家”可对应到国内更常用的“算法工程师”或“算法研究院”的角色。
[2] 本文中的“工程师”、“数据工程师”或“数据平台工程师”可对应到国内更常用的“偏工程”或“偏架构”的工程师角色。
[3] 问一下你的(数据平台工程师)面试官,他知不知道数据科学家坐在哪里(或者反之)。如果他们不知道,你就赶紧跑吧……
[4] 因为这些人的主要工作是保证数据通道的畅通,就像管道工人一样。
[5] 福特汽车的创始人福特曾经说过一句话:“如果(发明汽车时)去问人们想要的是什么的话,他们会说想要的是更快的马”。比喻默守陈规,在既有框架下做改进。
[6] 这里的通知(inform)指的是在传统的行业中,BI很多时候只是将自己分析的结果告诉、通知业务部门,但是是否采纳并还是由业务部门决定,这也反映出了传统BI部门略显尴尬的地位。
[7] “横向”指的是开发具有可扩展性,高可复用性的应用或者组件。
转载请注明来自36大数据():36大数据>> 工程师要不要写ETL?——教你构建高效的算法/数据科学部门
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点&img src=&/v2-8cebfcbe5618_b.jpg& data-caption=&& data-rawwidth=&385& data-rawheight=&300& class=&content_image& width=&385&&&p&公元七世纪,在车迟国国家气象局组织的一次求雨活动中,虎力、鹿力、羊力三位大仙成功地祈下甘霖,于水火中救了黎民。老国王虽然不明就里,却从此尊他们为国师,奉道教为圭臬。&/p&&p&本世纪,算法工程师们的境遇也差不多:早些年,信奉糙快猛主义的大佬们觉得他们饱食终日、无所用心,没工作只好在学校混博士,靠数据上的障眼法装神弄鬼。可是,随着去年AlphaGo大破李世石,大佬们在心底喊出“我操”的同时,慌不择路地把各种搞劫持、送外卖的生意包装成人工智能,并纷纷请来几位懂算法的国师加持。虽然他们对国师们所做的事智商上并不理解,却虔诚地希望他们快点儿求下雨来。&/p&&p&于是,算法工程师的身价也水涨船高了。各门派工程师不论过去练的是java、php还是excel,都放弃了最好语言的争论,抄起了深度学习,发誓重新修炼成算法工程师。&/p&&p&因此,看到题主这样充满铜臭味儿的问题,我十分欣慰。虽说在北京,20万已经基本不可能招到靠谱儿的算法工程师了,还是姑且用上面的数字做个参照,谈谈算法工程师的三个层次吧。(这里说的算法,并不是计算机系本科课程《算法与数据结构》里那个算法。那门课里讲的,是排序、查找这类&确定性算法&;而这里我们说的,是用统计方法对数据进行建模的&概率性算法&。)下文中会提到一些算法和模型,但不过是为了举例说明概念,无需深究,有兴趣钻研的朋友可以自己查阅资料。&/p&&h2&&b&第一层次&Operating&:会使用工具&/b&&/h2&&p&这个层次的工程师,对常用的模型比较熟悉,来了数据以后,好歹能挑个合适的跑一下。&/p&&p&达到这个层次,其实门槛不高。早些年,您只要掌握了什么叫LDA、哪叫SVM,再玩过几次libnear、mahout等开源工具,就可以拿到数据后跑个结果出来。到了深度学习时代,这件事儿似乎就更简单了:管它什么问题,不都是拿神经网络往上堆嘛!最近,经常会遇到一些工程师,成功地跑通了Tensorflow的demo后,兴高采烈地欢呼:我学会深度学习了,我明天就统治人类了!&/p&&p&这事要真这么简单,我是茄子。任凭你十八般开源工具用的再熟,也不可能搞出个战胜柯洁的机器人来。这里要给大家狠狠浇上一盆冷水:进入这个领域的人,都要先了解一个“&b&没有免费的午餐定理&/b&”,这个定理的数学表达过于晦涩,我们把它翻译成并不太准确的文艺语言:&/p&&blockquote&&b&如果有两个模型搞一次多回合的比武,每个回合用的数据集不同,而且数据集没什么偏向性,那么最后的结果,十有八九是双方打平。&/b&&/blockquote&&p&管你是普通模型、文艺模型还是2B模型,谁也别瞧不起谁。考虑一种极端情况:有一个参赛模型是“随机猜测”,也就是无根据地胡乱给个答案,结果如何呢?对,还是打平!所以,请再也不要问“聚类用什么算法效果好”这样的傻问题了。&/p&&p&&b&这就很尴尬了!因为掌握了一堆模型并且会跑,其实并没有什么卵用。&/b&当然,实际问题的数据分布,总是有一定特点的,比方说人脸识别,图中间怎么说都得有个大圆饼。因此,问“人脸识别用什么模型好”这样的问题,就有意义了。而算法工程师的真正价值,就是洞察问题的数据先验特点,把他们表达在模型中,而这个,就需要下一个层次的能力了。&/p&&p&会使用工具,在算法工程师中仅仅是入门水平,靠这两把刷子解决问题,就好比杀过两只鸡就想做腹腔手术一样,不靠谱儿程度相当高。如果不是在薪酬膨胀严重的互联网界,我觉得20万是个比较合理的价格。&/p&&h2&&b&第二层次&Optimization&:能改造模型&/b&&/h2&&p&这个层次的工程师,能够根据具体问题的数据特点对模型进行改造,并采用相应合适的最优化算法,以追求最好的效果。&/p&&p&不论前人的模型怎么美妙,都是基于当时观察到的数据先验特点设计的。比如说LDA,就是在语料质量不高的情况下,在PLSA基础上引入贝叶斯估计,以获得更加稳健的主题。虽说用LDA不会大错,但是要在你的具体问题上跑出最好的效果,根据数据特点做模型上的精准改造,是不可避免的。&/p&&p&互联网数据这一现象更加明显,因为没有哪两家公司拥有的数据是相似的。百度的点击率模型,有数十亿的特征,大规模的定制计算集群,独特的深度神经网络结构,你能抄么?抄过来也没用。用教科书上的模型不变应万变,结果只能是刻舟求剑。&/p&&p&改造模型的能力,就不是用几个开源工具那么简单了,这需要有两方面的素养:&/p&&p&&b&一、深入了解机器学习的原理和组件。&/b&机器学习领域,有很多看似不那么直接有用的基础原理和组件。比方说,正则化怎么做?什么时候应该选择什么样的基本分布?(如下表) 贝叶斯先验该怎么设?两个概率分布的距离怎么算?当你看到前辈高人把这些材料烹调在一起,变成LDA、CNN这些成品菜肴端上来的时候,也要想想如果自己下厨,是否了解食材,会不会选择和搭配。仅仅会吃几个菜,说出什么味道,离好厨师差的还远着呢。&/p&&img src=&/v2-2ef7d8d8b344b8da088f59_b.jpg& data-caption=&& data-rawwidth=&1286& data-rawheight=&381& class=&origin_image zh-lightbox-thumb& width=&1286& data-original=&/v2-2ef7d8d8b344b8da088f59_r.jpg&&&p&&b&二、熟练掌握最优化方法。&/b&机器学习从业者不懂最优化,相当于武术家只会耍套路。这就跟雷公太极和闫芳大师一样,实战起来一定是鼻青脸肿。管你设计了一个多牛逼的模型,如果无法在有限的计算资源下找出最优解,那么不过是个花瓶罢了。&/p&&p&&b&最优化,是机器学习最、最、最重要的基础。&/b&你要知道,在目标函数及其导数的各种情形下,应该如何选择优化方法;各种方法的时间空间复杂度、收敛性如何;还要知道怎样构造目标函数,才便于用凸优化或其他框架来求解。而这些方面的训练,要比机器学习的模型还要扎实才行。&/p&&img src=&/v2-7ca46d18684_b.jpg& data-caption=&& data-rawwidth=&1240& data-rawheight=&464& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&/v2-7ca46d18684_r.jpg&&&p&拿大家以为&以不变应万变&的深度学习举个例子。用神经网络处理语音识别、自然语言处理这种时间序列数据的建模,RNN(见上图)是个自然的选择。不过在实践中,大家发现由于“梯度消失”现象的存在,RNN很难对长程的上下文依赖建模。而在自然语言中,例如决定下面的be动词是“is”还是“are”这样的问题,有可能往前翻好多词才能找到起决定作用的主语。怎么办呢?天才的J. Schmidhuber设计了带有门结构的LSTM模型(见下图),让数据自行决定哪些信息要保留,那些要忘掉。如此以来,自然语言的建模效果,就大大提高了。大家初看下面两张RNN与LSTM的结构对比,面对凭空多出来的几个门结构可能一头雾水,唯有洞彻其中的方法论,并且有扎实的机器学习和最优化基础,才能逐渐理解和学习这种思路。&/p&&img src=&/v2-c78d63cf3acb_b.jpg& data-caption=&& data-rawwidth=&1240& data-rawheight=&466& class=&origin_image zh-lightbox-thumb& width=&1240& data-original=&/v2-c78d63cf3acb_r.jpg&&&p&当然,LSTM这个模型是神来之笔,我等对此可望不可及。不过,在这个例子里展现出来的关键能力:根据问题特点调整模型,并解决优化上的障碍,是一名合格的算法工程师应该追求的能力。年薪50万能找到这样的人,是物有所值的。&/p&&h2&&b&第三层次&Objective&:擅定义问题&/b&&/h2&&p&这个层次的工程师(哦,似乎叫工程师不太合适了),扔给他一个新的实际问题,可以给出量化的目标函数。&/p&&p&当年,福特公司请人检修电机,斯坦门茨在电机外壳画了一条线,让工作人员在此处打开电机迅速排除了故障。结账时,斯坦门茨要1万美元,还开了个清单:画一条线,1美元;知道在哪儿画线,9999美元。&/p&&p&同样的道理,在算法领域,最难的也是知道在哪里画线,这就是对一个新问题构建目标函数的过程。&b&而有明确的量化目标函数,正是科学方法区别于玄学方法、神学方法的重要标志。&/b& &/p&&p&目标函数,有时能用一个解析形式(Analytical form)写出来,有时则不能。比方说网页搜索这个问题,有两种目标函数:一种是nDCG,这是一个在标注好的数据集上可以明确计算出来的指标;另一种则是人工看badcase的比例,显然这个没法用公式计算,但是其结果也是定量的,也可以作为目标函数。&/p&&p&定义目标函数,初听起来并没有那么困难,不就是制定个KPI么?其实不然,要做好这件事,在意识和技术上都有很高的门槛。&/p&&p&&b&一、要建立“万般皆下品、唯有目标高”的意识。&/b&一个团队也好、一个项目也好,只要确立了正确的、可衡量的目标,那么达到这个目标就只是时间和成本的问题。假设nDCG是搜索的正确目标函数,那么微软也好、Yahoo!也好,迟早也能追上Google,遗憾的是,nDCG这个目标是有点儿问题的,所以后来这两家被越拉越远。&/p&&p&所谓“本立而道生”:&b&一个项目开始时,总是应该先做两件事:一是讨论定义清楚量化的目标函数;二是搭建一个能够对目标函数做线上A/B测试的实验框架。&/b&而收集什么数据、采用什么模型,倒都在其次了。&/p&&p&&b&二、能够构造准确(信)、可解(达)、优雅(雅)的目标函数。&/b&目标函数要尽可能反应实际业务目标,同时又有可行的优化方法。一般来说,优化目标与评测目标是有所不同的。比如说在语音识别中,评测目标是“词错误率”,但这个不可导所以没法直接优化;因此,我们还要找一个“代理目标”,比如似然值或者后验概率,用于求解模型参数。评测目标的定义往往比较直觉,但是要把它转化成一个高度相关,又便于求解的优化目标,是需要相当的经验与功力的。在语音建模里,即便是计算似然值,也需要涉及Baum-Welch等比较复杂的算法,要定义清楚不是简单的事儿。&/p&&p&优雅,是个更高层次的要求;可是在遇到重大问题时,优雅却往往是不二法门。因为,往往只有漂亮的框架才更接近问题的本质。关于这点,必须要提一下近年来最让人醍醐灌顶的大作——生成对抗网络(GAN)。&/p&&p&GAN要解决的,是让机器根据数据学会画画、写文章等创作性问题。机器画画的目标函数怎么定?听起来是一头雾水。我们早年做类似的语音合成问题时,也没什么好办法,只能找人一句句听来打分。令人拍案叫绝的是,Ian GoodFellow在定义这个问题时,采取了下图的巧妙框架:&/p&&img src=&/v2-a25eab4efe_b.jpg& data-caption=&& data-rawwidth=&502& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&502& data-original=&/v2-a25eab4efe_r.jpg&&&p&既然靠人打分费时费力,又不客观,那就干脆让机器打分把!好在让机器认一幅特定语义的图画,比如说人脸,在深度学习中已经基本解决了。好,假设我们已经有一个能打分的机器&i&&b&D&/b&&/i&,现在要训练一个能画画的机器&i&&b&G&/b&&/i&,那就让&i&&b&G&/b&&/i&不断地画,&b&&i&D&/i&&/b&不断地打分,什么时候&b&&i&G&/i&&/b&的作品在&b&&i&D&/i&&/b&那里得分高了,就算是学成了。同时,&b&&i&D&/i&&/b&在此过程中也因为大量接触仿品而提升了鉴赏能力,可以把&b&&i&G&/i&&/b&训练得更好。有了这样定性的思考还不够,这样一个巧妙设计的二人零和博弈过程,还可以表示成下面的数学问题:&/p&&img src=&/v2-0ec4acf9c082afd830ef0e_b.jpg& data-caption=&& data-rawwidth=&893& data-rawheight=&141& class=&origin_image zh-lightbox-thumb& width=&893& data-original=&/v2-0ec4acf9c082afd830ef0e_r.jpg&&&p&这样一个目标,优雅得象个哲学问题,却又实实在在可以追寻。当我看到这个式子时,顿时觉得教会机器画画是个不太远的时间问题了。如果你也能对这样的问题描述感到心旷神怡,就能体会为什么这才是最难的一步。&/p&&p&&b&一个团队的定海神针,就是能把问题转化成目标函数的那个人——哪怕他连开源工具都不会用。&/b&100万找到这样的人,可真是捡了个大便宜。&/p&&p&在机器学习领域,算法工程师脚下的进阶之路是清晰的:当你掌握了工具、会改造模型,进而可以驾驭新问题的建模,就能成长为最优秀的人才。沿着这条路踏踏实实走下去,100万并不是什么问题。&b&什么?您说还有300万的呢?这个不用眼热,人家只不过把你写代码的时间都用来跳槽了而已。&/b&&/p&&hr&&p&[我是&a href=&/people/9efbf8046bca& class=&internal&&@北冥乘海生&/a&,想吸收更多负能量,请大家关注我的公众号“计算广告”(Comp_Ad)和知乎专栏“&b&&a href=&/c_& class=&internal&&计算广告&/a&&/b&”!]&/p&
公元七世纪,在车迟国国家气象局组织的一次求雨活动中,虎力、鹿力、羊力三位大仙成功地祈下甘霖,于水火中救了黎民。老国王虽然不明就里,却从此尊他们为国师,奉道教为圭臬。本世纪,算法工程师们的境遇也差不多:早些年,信奉糙快猛主义的大佬们觉得他们…
互联网计算广告从业快三年了,让我来告诉你吧,工作大概是这个样子:&br&&br&每天的最重要工作就是跑数据!&br&每天的最重要工作就是跑数据!&br&每天的最重要工作就是跑数据!&br&重要的事情要说三遍!!!&br&&br&想象的算法工作是这样的:拿到最近某大神新发的Paper,或者自己钻研理论推公式产出理论成果,通过并行编程实现其支持大规模数据训练,然后打败现有模型,ctr提升200%,收入提高200%,此训练工具在工业界广为流传,升值加薪赢取白富美,出任xxx...&br&&br&但是现实中往往是这样的:这个特征可能对ctr预估是有用的,然后-&特征调研跑数据-&生成训练数据跑数据-&模型效果不好请回到特征调研-&小流量实验跑数据-&实验效果不好,回到特征调研-&全流量跑数据-&效果不好请回到特征调研-&done,你终于有产出了,效果是ctr提升:0.2% !!!!!!&br&&br&或者是策略升级,你想破脑子想了一个策略,然后,花了两个月做实验,策略调研跑数据-&策略模型训练跑数据-&策略小流量跑数据-&策略实验对比跑数据-&策略全流量跑数据。然后这个策略尼玛后来发现是:负 向 的!没错,你这两个月产出是0。艹&br&&br&神马算法,先要把hql、mr、streaming其中一种写的炉火纯青,不然你啥也干不了,是的,就是-啥-也-干-不-了!!&br&&br&先写这么多吧
互联网计算广告从业快三年了,让我来告诉你吧,工作大概是这个样子: 每天的最重要工作就是跑数据! 每天的最重要工作就是跑数据! 每天的最重要工作就是跑数据! 重要的事情要说三遍!!! 想象的算法工作是这样的:拿到最近某大神新发的Paper,或者自己钻…
1. 20万。&br&北京的一线二线互联网公司给应届生的白菜价格:科班出身,算法相关方向的硕士生基本都能拿到;优秀的本科生(ACM铜奖之上或有一定深度的项目经验)无算法相关经历有一些也能拿到,公司愿意培养你;博士生,研究经历一般的能拿到。其实这里波动范围很大,有些公司会直接开出30万到40万的应届生offer,应届生是公司的未来,优秀的应届值这个钱。算法工程师不要说和学历无关,恰恰行业内都重视学历,重视你是否是科班出身,硕士期间做过机器学习,模式识别工作的明显和普通候选者有差别。一般情况下,本科生基本不会被招聘到算法岗位,研究生一般都经过研究锻炼,算法工程师需要该能力。这不是歧视本科生,行业现状如此。&br&&br&2. 50万。&br&应届就进入一线和二线互联网公司做算法,一般BAT工作两到三年出来的优秀者(在相关方向有熟练的把握,具备一定深度,例如广告算法涉及的各个环节,相关做法以及能带来多少效果)能拿到该数目甚至更多;二线公司出来的可能只能到30至40万;优秀博士生应届毕业(深入研究方向,有多项成功的研究经历)就能到该数字甚至更多。想表达的是大家都注重出身经历。当然我说的是大致情况,我有一个师弟,硕士就是搞模式识别相关,在国企搞一年解决了户口,去了阿里给了p6,40万。我有一个同届同学,在创业公司搞了3年半,然后去了腾讯,T3.1,给了60万。运气占很大成分,例如对方缺人,急需,这时薪资一般都不是问题。&br&&br&3. 100万。&br&阿里P7或p8,百度T7以上,腾讯T3.2之上,二线公司的高级技术经理/总监(非普通级别技术经理),融到很多钱的创业公司的算法专家,能达到这个数目。一般是那些在算法方向工作五六年之上,在本方向积累很深,并了解其他相关方向,对行业进展了如指掌的人。&br&100万有一定难度,但对于有些人来说很简单,这也和岗位匹配有关,例如一些重视数据算法的公司愿意砸钱招人你很容易到这个数,一些不重视数据算法的公司也许你花很多年也到不了。&br&我还没到100万,可能没法有过多的陈述。认识一个师兄,腾讯呆到6年的时候,100万,级别3.3。一个同学,硕士毕业工作五年,知名ai公司,近期要跳槽,人家给出120万。&br&楼主说的‘’你现在工资多少,我给你加多少‘’,尽管听上去很粗暴,但是行业内恰巧如此。只要你的级别够了,达到了薪资范围空间,例如百度T7能够上100万,hr就会以你当前工资为基准,去和你谈,别想着当前30万,人家给你100万,你当前70到80万才有一定机会。当前的工资决定了你下一次跳槽会涨多少,我们需要正视这种现象。&br&&br&算法行业很火爆,工资高,但门槛也高,现在有很多人去参加培训或者自学,想转到算法行业,大家都努力这是好事,但是你不得不面对一个残酷的现实:在用人单位眼里,大部分培训或自学要比科班出身低一截。你工作两三年,然后去参加培训、去应聘,你将可能是去和应届生竞争,如果你没有学扎实,并且有较深入的实践,超出大部分人的水平,用人单位更愿意招科班出身的应届生。因此,请更努力,不要浮于表面,我面试的时候遇到太多这种候选者了,甚至为他们感觉可惜,大多人被耽误了。
1. 20万。 北京的一线二线互联网公司给应届生的白菜价格:科班出身,算法相关方向的硕士生基本都能拿到;优秀的本科生(ACM铜奖之上或有一定深度的项目经验)无算法相关经历有一些也能拿到,公司愿意培养你;博士生,研究经历一般的能拿到。其实这里波动范…
我应该也算是机器人算法工程师了,我所在实验室就叫学习算法与系统实验室(LASA, Learning Algorithm and System Lab,&a href=&///?target=http%3A//lasa.epfl.ch/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learning Algorithms and Systems Laboratory (LASA)&i class=&icon-external&&&/i&&/a&)。那些说没有这个职位的就不要闹了, robot software and algorithm engineer是一个很大的市场空缺。&br&&br&&br&&b&简单的说, 最深的体验就是:You have to take someone's shit. (受虐,无处不在)&/b&。你需要懂的东西很多,需要你一次次走出自己的舒适区域。&br&&br&我只能以我的经历说一下:&br&&br&2011年,我刚到实验室,实验室有个女博士后(postdoc)在做&b&抓取规划&/b&(grasp planning),我老板让我一起做这个项目,我研究室也是做的这个,所以可以很快的上手。但是,为了用一个优化的算法(IPOPT),整个规划(planning)是用AMPL(&a href=&///?target=http%3A///resources/the-ampl-book/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The AMPL Book&i class=&icon-external&&&/i&&/a&)写的,Bell实验室出品,速度也是很好的,但是那个语法完全虐死人。我保证你们都没有用过,用过之后就不想再见到这货了。经过半年的努力,我也算是走通了整个MTALAB到AMPL+IPOPT的流程,然后程序要在CMU的一个服务器(server)上跑一个星期,得到了很多花样的炫酷的grasp(比如一个简单圆柱体大概得到3000+个不同grasp)。&br&&br&然后呢,当然要把这些grasp在仿真里面显示出来。当时实验室在使用一款叫RobotToolKit(&a href=&///?target=https%3A///epfl-lasa/robot-toolkit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - epfl-lasa/robot-toolkit: The robot simulator and interface of LASA&i class=&icon-external&&&/i&&/a&)的自己开发的机器人仿真软件,没有说明文档,没有人有太多时间教你,关键是我当时连coding也是很渣的(当然现在也很烂。。。)。好不容易弄懂了整个逻辑,也会仿照着别人的东西写一些demo了。在simulation里面一跑,各种grasp不能实现,需要把物体摆在机器人工作空间某个非常合适的位置,恰好IK(逆运动学)可以找到合适的关节角。总之,3000个grasp,做了一下分类(简单clustering), 最终挑选出还能看的也就下图20个。为了这20个grasp,我几乎花了两三个月的时间。但最终也算知道这个仿真软件的一些基本东西了,也知道所有research中你看到的仅仅是冰山一角。&b&走到这一步,聪明的人就停留在仿真了,仿真的世界真的很美好&/b&。&br&&img src=&/8b5d570f8a49cc9b9989_b.png& data-rawwidth=&626& data-rawheight=&624& class=&origin_image zh-lightbox-thumb& width=&626& data-original=&/8b5d570f8a49cc9b9989_r.png&&&br&这不是结束!&br&我当然不满足于虚拟的世界,接下来才是整个作为一个机器人算法工程师的受虐之路的开始:&b&算法实现&/b&。所有的机器人算法都是要用实践来检验的,直观的将就是你要做一个demo,最好是在实际的机器人上。终于要上机器人玩了,当时还有点小激动,用的还是iCub,就是下图这货,看起来十分萌。&br&(题外话,整个四年,因为压力,可乐喝了估计有1000+多瓶了)&img src=&/6e00cd418dc5c1c798ece_b.png& data-rawwidth=&533& data-rawheight=&395& class=&origin_image zh-lightbox-thumb& width=&533& data-original=&/6e00cd418dc5c1c798ece_r.png&&手上还有当时的视频,就不放了,简单的说一下。iCub是线驱动(cable driven),整个手臂的定位精度可能在2cm左右。整个手指关节定位精度,我只能说5度左右吧,实际上更差,每个手指末端大概能提供1N的力。实际中,绝大多数(90%以上)的grasp在机器人上都没有办法实现出来。机械臂到不了,手指又不准,手指力又不够,现实中的物体的摩擦,重力,材料等等特性又没有考虑。下图中看到的,基本上是我和那个postdoc花了几个星期得到的稍微看得过去的grasp,其中又有无数的hacking。&b&基本上一个做grasp的走完这一步,已经要怀疑人生了&/b&。&br&&img src=&/ead2686cddfe8b3a9f943_b.png& data-rawwidth=&610& data-rawheight=&512& class=&origin_image zh-lightbox-thumb& width=&610& data-original=&/ead2686cddfe8b3a9f943_r.png&&&br&&br&在这个hacking的世界里,我折腾了大半年,看看下图的手指末端的海绵,还有程序中各种小的技巧,总算也可以用KUKA LWR加上Barrett hand做点简单的grasp了(&a href=&///?target=https%3A///watch%3Fv%3DwSzfmrfDx60& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/watch?&/span&&span class=&invisible&&v=wSzfmrfDx60&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)。&br&&br&&img src=&/bdd2cad716e665c9ff7cbe_b.png& data-rawwidth=&1106& data-rawheight=&793& class=&origin_image zh-lightbox-thumb& width=&1106& data-original=&/bdd2cad716e665c9ff7cbe_r.png&&&br&&br&如果这就是结束,那生活也太美好了!整个PhD真正的大招是上图右下角的那个&b&触觉传感器&/b&(tactile sensor) --Syntouch(&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SynTouch, LLC&i class=&icon-external&&&/i&&/a&)。这一个传感器报价8000刀,一个手上要用三个,显然是一个暴利行业。当时作为世界上最早使用的整个传感器的实验室,他们只提供了一个很简单的API,可以读取数据。数据的意义不知道,反正传感器及其敏感,你说话都可以引起数据的变化,我要做的就是从中提取对grasp有用的信息并且用到grasp里面去。但是什么是对grasp有用的呢?怎么用呢?每个人都以为自己知道,但实际上又没有几个人知道。这才是最最受虐的,你根本不知道你的目标在哪里。&br&&br&于是乎,我在老板的领导下,一步步走到坑里,自己写算法(GP,GMM,SVM, NN,K-Means。。。。)标定了接触点的位置(精度0.3mm),接触力的大小(精度法向0.1N,切向0.3N),估计物体的重量,估计摩擦系数,估计物体动力学参数。。。&br&&br&&br&还些东西就是我上面说的辅助性工作,但是是机器人算法中不可缺少的。这一年把我虐到胃溃疡加胃出血,这也是做机器人算法的很多时候的陷阱,你感觉每天都很忙,但好像又什么都没有做出来。这就是雷总说的战术上的勤奋,掩盖了战略上的懒惰。&br&这时,一个日本教授(Kenji)来到我们实验室(号),一切都是命中注定的感觉。在几次讨论后,突然间发现这个教授的&b&控制算法&/b&可以和我做的触觉传感,通过机器学习算法结合起来。然后就在2013年4月到2014年3月,灌水了几篇可以毕业的东西 (&a href=&///?target=https%3A///watch%3Fv%3DAIt75lkogqE& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/watch?&/span&&span class=&invisible&&v=AIt75lkogqE&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///watch%3Fv%3DUsPwmrYszbU& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/watch?&/span&&span class=&invisible&&v=UsPwmrYszbU&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&, &br&&a href=&///?target=https%3A///watch%3Fv%3DZ-4YTHy1GaI& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/watch?&/span&&span class=&invisible&&v=Z-4YTHy1GaI&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&).&br&&br&到目前为止基本走了: &b&规划(planning+simulation)--& 实现(implementation)--& 传感 (perception)--&控制 (control)&/b&。当然这里面每一步都是从很多论文的合作者那里学到了不少的东西,这也是一个机器人算法工程师的必备能力:快速学习。&br&&br&这样一遍虐下来,你会发现到处都是问题,好像什么问题都没有被解决。然后就到时候回头看看了,是时候找出每一个环节的最短板了。 &br&强烈建议对此感兴趣的可以读一下,亚马逊抓取挑战赛的赛后经验。&br&&a href=&///?target=http%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&4&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A//www.robotics.tu-berlin.de/fileadmin/fg170/Publikationen_pdf/apc_rbo_rss2016_final.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&robotics.tu-berlin.de/f&/span&&span class=&invisible&&ileadmin/fg170/Publikationen_pdf/apc_rbo_rss2016_final.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&如果有人感兴趣,以后再写下后面的历程了(都是教训)。&br&&br&如果你看到了这里,请接着看完下面的硬广告!&br&------------------------------------------------------------------------------------------------------------------------------&br&0. 硬广告一条&br&*** 本人已经决定全职回国创业,从事工业机器人的智能系统开发,一年内坐标武汉,未来坐标深圳与欧洲。目前资金(&2M $),人员配置都基本完整(海内外博士,硕士加上主要机器人厂商工程师),但是还是希望有志同道合的伙伴能够加入。如果你满足以下一条或者几条,欢迎勾搭:&br&
(0)coding足够好,有实际经验最好;&br&
(1)对机器人硬件,软件,算法等基础知识有足够了解;&br&
(2)喜欢折腾各种硬件,包括传感器,机械结构设计等;&br&
(3)熟悉机器学习及其算法实现;&br&
(4)想做不一样的事情;&br&
(5)其他你自己认为你可以的;
我应该也算是机器人算法工程师了,我所在实验室就叫学习算法与系统实验室(LASA, Learning Algorithm and System Lab,)。那些说没有这个职位的就不要闹了, robot software and algorithm engineer是一…
我不算工程师,只算打杂的。。还是说说我老板吧,确实太佩服他了。&br&&br&我老板的title就是Research Engineer&Scientist, 之前是读cs的phd,主要做的是机器学习。&br&&br&他的工作内容包括:&br&1)跟大老板讨论idea,讨论到底可不可行,能不能做。。很多也是浅尝辄止,尝试了一下效果并不好就弃坑了。&br&2)会读很多paper,而且速度惊人。每年机器学习的一些会议icml,cvpr、acl都会关注,然后会发邮件列出一些他觉得不错的paper给我这个low b看。不过确实太多了,我看paper速度也没那么多,其实很多时候我就划水了。业界的东西他好像看的主要是书,课本那些,估计是自己不算太懂也在学习吧。&br&3)全栈工程师,手速很快。我们为了开发比较快,很多时候都是用现成的api,哪个api写得比较好就用哪个,当然还会根据需求改一下。所以看老板写模型,python,java是主力,为了给人展示自己也会做一些前端,用得很6,除此一些比较非主流的语言也是秒好。比较佩服他的地方是能迅速判断完成一个特定的task需要什么工具,然后读api文档很快就掌握了。&br&&br&工作以外,平时很geeky的一个人,吃饭的时候也喜欢聊量子计算机到底合不合理之类我觉得不是专业的很难搞懂的话题,然后我就思密达了。还有个例子,他在纽约选房子是自己写了个程序,用google earth判断周围绿化和交通这样选址的。
我不算工程师,只算打杂的。。还是说说我老板吧,确实太佩服他了。 我老板的title就是Research Engineer&Scientist, 之前是读cs的phd,主要做的是机器学习。 他的工作内容包括: 1)跟大老板讨论idea,讨论到底可不可行,能不能做。。很多也是浅尝辄止,尝…
&p&头条略高就去头条啊,而且加班还有加班工资,有啥不好?&/p&&p&再说了,人总是要换工作的,又不是让你做到退休,前期不需要考虑的这么周详。反正人的想法是会变的,你现在觉得这样好,长大了可能就不一定了。&/p&&p&e.g.&/p&&p&刚毕业那会儿我也觉得上海多好啊那些人拼命考试折腾自己出国干啥。&/p&
头条略高就去头条啊,而且加班还有加班工资,有啥不好?再说了,人总是要换工作的,又不是让你做到退休,前期不需要考虑的这么周详。反正人的想法是会变的,你现在觉得这样好,长大了可能就不一定了。e.g.刚毕业那会儿我也觉得上海多好啊那些人拼命考试折腾…
招行。放着总行编制不要,放着落户额度不要,你在想啥?&br&&br&====好吧,我觉得还是多补充两句吧====&br&&br&1、技术能力上,招行一点都不会比点评差。你想过没有,为什么招行改一行代码要打报告,而点评不用?真的仅仅是管理制度上的差异么?有没有系统安全上的考虑,银行系统和UGC系统,究竟谁出BUG更严重,谁改错一行代码的后果更严重?&br&&br&2、技术驱动的公司是好公司么?BAT里谁是技术驱动?就算是百度,现在也不仅仅是靠技术驱动吧?一个互联网公司要健康持续的发展,是要多条腿走路的,是项目和产品的早期可以是产品驱动,中期可以技术驱动,后期可以运营驱动,有必要的时候可以大家轮流一起驱动,XX驱动这个问题是非常复杂的,首先如果你认为点评是技术驱动,因此技术比招行牛逼,那就错了。XX驱动的意思是说谁更具备话语权,可以引导公司的发展方向,你觉得点评是么?我觉得不是。&br&&br&3、招行的内部管理和点评的内部管理,究竟谁更差?这个问题,每个人看的角度不一样好么?我不评论,但我要告诉你的是,没有十全十美的公司。&br&&br&4、关于期权。第一,你进入的时间太晚,就算点评能上市,你的期权也没多少,更何况,谁也不知道点评什么时候能上市;第二,期权有解冻期,给你10万股(放心,不可能的),也至少要求4年分期解冻,从你入职后的第二年开始。你都不知道点评上不上得了市,什么时候上市,上市后的股价咋样,你就觉得期权能给你带来多少帮助么?&br&&br&这里说一个笑话,在某公司的时候,某COO说,来,签字,这笔期权就是你的了。开心么?我看了他一眼,告诉他:老大,你先把公司弄上市再来问我这个问题。&br&&br&5、关于两家公司的一些题外话。点评,在我看来,未来的道路会非常艰难。单纯的UGC真的是壁垒么?给腾讯投资之后,点评还有没有机会成为一个平台,用户还能不能捏在自己手里?我非常非常怀疑,这从最近点评重提3年前甚至更久以前想做的会员积分业务就可见一斑,可坑爹的是,这个业务的汇报对象从某个VP降到某个总监,这是想清楚平台价值的表现么?我存疑。招行,可以说是公认的国内银行中互联网程度做的最好的了,所以,我不知道你对技术的担忧是什么,真的不知道。&br&&br&6、关于户口、编制、公积金。以前在盛大的时候不觉得,后来离开了发现,盛大7%公积金+7%的补充公积金绝对是神物。申请公积金贷款的同学和公积金贷款还贷的同学都懂多出来7%的补充公积金意味着什么。等你要买房子了,你就懂了。编制,你知道国内有工龄这件事么,你知道无编制的概念是什么么?有编制绝对比无编制要好的多的多;至于户口,就不用说了。&br&&br&关于编制,还有一个笑话。&br&&br&我去某国有通讯运营商面试的时候,他们告诉我,他们能给我的薪水是我当时所拿薪水的一半,但是他们可以给我的是内部编制,并且告诉我,内部编制基本上已经不再会有了。&br&&br&于是,你知道不,如果不是当时薪水太低了,我就真的冲着编制去了。可是你面前的选择呢?点评的薪水、公司的发展潜力有高到需要放弃编制、户口这些条件么?&br&&br&至少,我没看出来。&br&&br&最后,友情提醒一句,7年居转户政策 不等于 有居住证且7年在任何公司呆着都可以 拿到上海户口。&br&&br&好好去看看政策。&br&&br&顺便感叹一句,点评的步子真的快要扯到蛋了,应届毕业生给11K月薪,这个世界太疯狂了。
招行。放着总行编制不要,放着落户额度不要,你在想啥? ====好吧,我觉得还是多补充两句吧==== 1、技术能力上,招行一点都不会比点评差。你想过没有,为什么招行改一行代码要打报告,而点评不用?真的仅仅是管理制度上的差异么?有没有系统安全上的考虑,…
进入工业机器人领域就是从算法工程师做起的,没邀强答一下,哈哈。&br&&br&工业机器人的算法工程师其实和其他领域的算法工程师的工作流程没什么大的区别,一般都是:&br&&img src=&/dde730a2d1d2_b.png& data-rawwidth=&642& data-rawheight=&501& class=&origin_image zh-lightbox-thumb& width=&642& data-original=&/dde730a2d1d2_r.png&&&br&很多时间是在看论文,还有很多时间在研究为什么实际结果和仿真的不一样,剩下的时间在敲代码。&br&&br&国内绝大多数工业机器人公司都还没有上规模,很少有专门的只做算法预研和仿真的部门,因此要求算法工程师需要同时具备理论研究、推导、仿真以及编程实现的能力,Matlab/Python + C/C++是基本要求。&br&&br&把主要工作内容总结一下,就是Bruno Siciliano他们所写的那本书名:Modeling,Planning,Control:&br&&ul&&li&Modeling,包括运动学建模,动力学建模,柔性建模、摩擦力模型等等,模型是规划和控制的基础;&/li&&li&Planning,包括路径规划,姿态规划,速度规划等;&/li&&li&Control,除了伺服控制外,在控制器层面上主要包括力控,柔顺控制、拖动示教、视觉伺服、抑振等;&/li&&/ul&机器人算法的方向非常广,上面说的不一定全部掌握,岗位要求不同侧重点就不一样。但是最好都了解一些,因为你的算法或多或少都会用到其他方向的知识,或者受到其他方面的限制,多了解一些有助于加快解决问题的速度。&br&&br&除了这些基础的算法,还会遇到一些与实际工艺相结合的算法开发,比如说弧焊领域和点焊领域,对速度规划的要求就完全不一样,这个根据每家公司的方向不同会有所变化。&br&&br&算法做到底层就是数学,任何想在算法方面有所发展的同学请一定学好数学。(数学好也是我们招聘算法工程师的硬性要求)&br&&br&国内工业机器人行业的发展落后国外好多年,我们是在追赶别人的脚步,所以参考国外机型对标研发的情况比较多。&br&每每看到国外厂商推出新机型或者新的宣传视频展示卓越的运动控制水平时,心里就会有很多感叹,妈蛋,差距好大。&br&&br&“我擦,xx家的机器人跑的好快,研究研究咋搞的。。。”&br&“我擦,xx家的机器人这功能咋实现的,快去找找有木有发论文。。。”&br&“我擦,xx你修了1个bug,搞出来3个新bug,快来看看怎么回事!”&br&&br&国内机器人现在太浮躁,技术研发和积累是渐进的,需要时间积累,基本不会有“弯道超车”的可能,别被专家忽悠了。&br&&br&按部就班往往是最好的方式。&br&&br&专栏:&br&&a href=&/onionbots& class=&internal&&知乎专栏&/a&
进入工业机器人领域就是从算法工程师做起的,没邀强答一下,哈哈。 工业机器人的算法工程师其实和其他领域的算法工程师的工作流程没什么大的区别,一般都是: 很多时间是在看论文,还有很多时间在研究为什么实际结果和仿真的不一样,剩下的时间在敲代码。 …
有些项目决胜的关键点靠的是思路 市场 设计 架构 比如微信 在这些项目上追求机器学习技术成长就是南辕北辙&br&&br&有些项目技术已经成熟了 谁都能做的差不多 这些项目 就别被机器学习这些术语蒙住眼睛 他们本质上就和用现成代码搭个论坛差不多 也没什么技术&br&&br&但是 有一些项目是真正困难的&br&&br&以做工程来类比 困难的项目 我们不敢交给新手负责 因为新手会把架构做的一团糟 最后结果很明显 就是项目失败&br&&br&机器学习项目其实也是类似的 大家也许有一个感觉 任何人随便发明几个特征 找点数据跑一下 都能出结果 所以 好像机器学习项目不容易失败&br&&br&但是 什么是项目的失败? 工程项目的失败是做不出来 这很清楚 机器学习项目的失败按照李航老师的说法是:项目的效果达不到用户的期望。&br&&br&一个项目需要90的accuracy 只能做到80那就是失败 竞争对手有90的accuracy 我们只能做到80 那也是失败&br&&br&所以 真正困难的机器学习项目 需要大量的知识和经验&br&&br&-------&br&&br&经验和知识真的有价值吗?&br&在传统工程项目中我们从不怀疑 因为 老手总是能做出来 而新手总是搞得一团糟&br&但机器学习不是如此 随机性总是存在 运气好的新手有时会比老手做出更大的贡献&br&&br&但是 从长远来看 随机性会被无数出的尝试平滑下来 每个人都会收敛到自己真正的能力&br&&br&------&br&以我个人的浅见 最宝贵的经验不是书上或者论文中明白写出来的 &br&而是一整套方法论&br&1 问题是什么?&br&2 用什么指标来度量?&br&3 问题的复杂度是什么量级?&br&4 模型不好 本质上就是模型复杂度没有匹配问题复杂度 哪里是模型复杂度的瓶颈?&br&** 标注数据&br&** 人的智慧 创造有价值的特征 还是说可以用深度学习来创造feature?&br&** 海量用户行为数据&br&** 模型的调整 过于简单的模型 相当于强行约束了复杂度的上限 使得明明有海量的数据硬是用不上&br&5 找不到便利的数据和特征 就可以想想是否能把问题分解成子问题 也许在子问题空间下 你能想到更好的特征 数据和模型 同时分解了问题 就能够引入更多的人员来并行工作&br&6 知道怎么做干净的实验 系统性的探索所有的可能性 排除无关因素&br&&br&系统性的做事帮助我们理解问题 就算最后失败了 也能清楚的说服别人 是资源还是技术水平造成了项目的失败&br&而混乱的做事风格 经常给人这样的印象 这个项目失败了 但我也不知道为什么 反正我就是没做出来&br&&br&在所有的经验中 狭义的模型和特征工程只是第四点的一部分而已&br&但是剩余的部分也都是技术(与具体的应用领域无关) 是建立在对机器学习的能力与界限有清楚认识的基础上的一些抽象&br&&br&-------&br&&br&在说一句深度学习 请别被市场宣传迷惑 想清楚深度学习解决了什么问题? 把它融入自己的方法论&br&&br&知道什么时候该用深度学习 什么时候不该用 能解决问题的人才是市场欢迎的人&br&&br&另外 你的价值取决于供需关系 做深度学习的人 也要想想 大家都能搭demo 都会看论文 也都能实现算法 我的独特之处是什么?
有些项目决胜的关键点靠的是思路 市场 设计 架构 比如微信 在这些项目上追求机器学习技术成长就是南辕北辙 有些项目技术已经成熟了 谁都能做的差不多 这些项目 就别被机器学习这些术语蒙住眼睛 他们本质上就和用现成代码搭个论坛差不多 也没什么技术 但是 …
现在的毕业生动不动就,"体制内把人废了" "体制内学不到技术,学不到东西"。&br&
好像觉得自己有多了不起,好像觉得体制内单位成天就是 喝茶 看报纸,好像觉得体制内成天就是混人际关系,外面就是纯靠真本事。好像觉得自己nb得很,出去闯几年 买方买车娶老婆 没问题。&br&&br&
凡是抱有这种想法的,最后都很惨。
现在的毕业生动不动就,"体制内把人废了" "体制内学不到技术,学不到东西"。 好像觉得自己有多了不起,好像觉得体制内单位成天就是 喝茶 看报纸,好像觉得体制内成天就是混人际关系,外面就是纯靠真本事。好像觉得自己nb得很,出去闯几年 买方买车娶老…
推荐选Java开发岗,理由如下:&br&&br&1. 一个优秀的开发职位并不是所谓的吃青春饭,每个岗位都有职业发展的路径,开发岗也是如此。对很多人来说,开发确实是吃青春饭,因为他们不懂得如何提升自己对公司的潜在价值或者不明白如何更加聪明的完成任务。每个人都会成长,第一年进去需要一周完成的工作可能在有经验后只需要半天,这种差距是非常大的。如果你打定主意选开发岗,请一定要坚持学习,让自己能更高效的完成工作,渐渐的等你能力到了一定水平,就可以开始带团队了。开发如同做菜,写出来的代码是有质量之分的,做菜的不只是为了能吃,而且是为了好吃,只有好吃的饭店一般生意好价格贵。&br&&br&2. 算法岗的门槛其实是很高的,人才也比较稀缺,总体看发展空间是比较好的。但是算法岗的主要问题在于如何量化你的产出。写代码做开发非常简单,你完成了一个任务/项目,有了经验,这是简历上实打实的东西;相比之下,做算法的人如果不知道该如何有目的地量化地体现自己在公司业务中的价值,只是单纯玩算法跑数据,个人感觉是不会有太大发展前景的。考虑到你的背景相比很多做算法的人(比如科班PhD毕业)存在很大差距,你从事这个方向的起步瓶颈会大于行业平均水平。就你描述而言:数学不好,算法不扎实,做这个方向也是很吃亏的。&br&&br&3. 就你的算法岗职位描述而言,这是比较entry level的算法岗需求,从具体业务的角度看,短期内积累的经验并不能帮你找到其他公司相似的职位。做算法的活,有脏活累活也有比较需要智商的高端活,entry level的工作做太多并不能帮你了解那些高端活是怎么做的,带你做东西的mentor可能也不会给你耐心解释算法或者背后的数学。快速提升自己算法背景的最好途径是接受正规的科班训练(读个相关方向的Master或者PhD)或者自学,而不是去公司里练手,因为每个公司的算法需求都不一样,在一个公司习得的技能不能第一时间用到其他公司(相比开发岗,成长经验效益低很多)。&br&&br&4. 从稳定的角度看,可能做Java开发岗会比较稳定,因为一个算法岗如果不能给公司带来直接价值,可能会先被裁掉吧。但是一批合格的Java程序员是很多技术公司的顶梁柱,一般都愿意优先养着。&br&&br&本人是算法向,对开发向的了解可能比较片面(主要来自周围的同学),请自己斟酌。当然做算法的一个福利就是能接触到更多优秀的人,这点其实挺重要的。
推荐选Java开发岗,理由如下: 1. 一个优秀的开发职位并不是所谓的吃青春饭,每个岗位都有职业发展的路径,开发岗也是如此。对很多人来说,开发确实是吃青春饭,因为他们不懂得如何提升自己对公司的潜在价值或者不明白如何更加聪明的完成任务。每个人都会成…
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 svm算法结果 的文章

 

随机推荐