只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 网站建设哪家公司好 >  算法工程师大致是做什么的?


算法工程师大致是做什么的?

发布时间:2019-09-12 18:07:06  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
真的不是我看不起你...非科班,就光这一条短时间内你成不了算法工程师,最惨的甚至一辈子都不可能。为啥?算法工程师是计算机行业里有一定难度的一类分支,算法工程师往往会根据产品的业务特点,提出一个或者一系
算法工程师大致是做什么的?

真的不是我看不起你...非科班,就光这一条短时间内你成不了算法工程师,最惨的甚至一辈子都不可能。为啥?

算法工程师是计算机行业里有一定难度的一类分支,算法工程师往往会根据产品的业务特点,提出一个或者一系列数学或者程序方案,以提升业务处理的速度和准确度。想入这个行业数学建模是最基础的。

然后说回你的学历...嗯

一套算法往往是一个产品的灵魂和核心,重要性可想而知,一般小型的外包项目没必要弄个算法工程师,码农们背过的基本算法就够了。

换个角度,如果你是一个大公司的把老板,你会把公司产品的核心工作交给,一个你不熟悉的非科班的毕业生来做么?风险太大了,有可能他是个天才,一瞬间就把我的系统改的更牛逼了。但是世界上有几个天才呢?去看看张雪峰老师的视频受受刺激吧。


至于知否要入IT,推荐你看我这篇的回答:22岁,三本汽车专业毕业,想转行学it?


如果真的很想做入这行,我建议从最基础的码农做起,算法这个作为一个目标很好。

另外提到一点,程序员最忌讳的就是一不懂就伸手的习惯。如果有很多专业词汇不懂,证明你离你的目标还欠缺这些词汇相关东西,去百度去学,一点一点去查,最后你会发现,你已经离你的目标很近了。


最后送一句《火星救援》里的经典台词

You solve one problem, and you solve the next one, and then the next. And If you solve enough problems, you get to come home.
当你解决完一个问题,再去解决下一个问题,以及下一个,当你解决足够多的问题的时候,你就能回家了。


PS:@日耳曼少女 真巧每次类似的问题都能碰见你

这个职业搞的东西很多呀 语音转写 图像识别 验证码破解 推荐 CTR预估 风控 量化交易什么的 很多


数模我觉得没有必要搞 现在很多数模都很水其实意义不大 kaggle含金量高多了

有空不如把恩达的那两套课程啃完 还有李航那本统计学习方法 或者 西瓜书

如果你还有精力再把飞飞那套也啃了(cs231n)

如果你还还有精力 PRML 斯坦福还有个NLP的 课程号我忘了 你搜一下


不知道你们学校有没有本科就进实验室的项目,有的话可以找这个方向的实验室去好好搞一搞


顺便说一下背景可能是硬伤,这个岗位要本科生的比较少,或者说对本科生的要求比对研究生的高得多

第一,你才大二,现在有志成为算法工程师是好的,但是,你才大二,一口吃不了胖子,算法对数学要求特别高,你要做的就是学数学,高数,离散数学,概率论,统计学都要学;
第二,算法工程师对学历要求高,最低也要是硕士学历,你才大二,不如好好准备考研去国内顶尖大学甚至国外学CS;
第三,想成为算法工程师的想法是好的,但是你要掂量自己是不是合适干这么工作,等你研究生毕业的时候你在说我想成为算法工程师,那恭喜你!
第四,算法对编程能力要求高,与其在知乎上看这些无聊的回答,倒不如去参加ACM大赛,参加数学建模竞赛,锻炼自己这方面的能力,说不如去做,行动和执行力才是决定你的未来的钥匙;
第五,锻炼自己的英语能力,国内不排除有好的算法书,但是你爱吃人家咀嚼过的东西还是爱吃原生的?自己去消化去参悟算法这一门博大精深的知识。
第六,算法分好多方向,目前最热门的是机器学习算法工程师,本科所接触的算法都是很基础的算法,要想成为算法工程师,一句话,学历才是敲门砖!
ZX某5G技术准算法工程师拙见!
敬请批评非专业人士回答,我也有不少本科同学转行做了算法工程师,他们本来的方向有电子商务,也有控制工程。不过有个共同特点,数学功底深厚,这也是他们可以考上知名院校软件工程硕士的原因。
算法工程师太吃香了,我们和他们合作时都非常羡慕他们的待遇。不过我们的规划设计跟他们比起来技术难度的确难以差强人意。
具体很多算法我也没有深究过,他们只给了我们一个接口,就可以套用。不过效率远比自己写的好得多,我们自己的需要把大数据在主机上跑一个星期,他们的可能就几分钟。大大提高服务器利用率。为什么要邀请我,我连算法工程师是干啥的都不知道
参加ACM打败tourist乱答一发。。

楼上别再扯什么科班就一定很牛逼啥的了,说的好像各位大佬身边都是大佬似得,知道现在科班水成啥样了么?

研究生都能水。。。到渠成 为啥搞算法?听上去高大上,绝大部门公司里面赚的没有搞产品和方案的工程师多。这个问题想清楚再往下走,不然两头都捞不着。

举个例子,一般公司裁员如果按部门来的话,最先走研究部门,再走产品部门,最后再砍市场和销售...

算法工程师 广义上是指搞算法的 除了机器学习之外 还包括控制算法啊 图形算法啊 slam啊

狭义上 现在谈算法工程师一般指的是 搞学习和大数据的 俗称调参侠。

你说“有意往算法工程师方向学习。但是一直找不到具体的关于这个职业的解释“

也就是说你是在向往一个你自己都不知道要做什么的岗位学习?

很多时候,方向比速度更重要。

Wiki上有对于算法工程学的解释,可以参考: Algorithm engineering

学习算法的话,《算法导论》是必学的,国内有翻译好的。WIKI: Introduction to Algorithms

在《导论》的基础上,你还要选择你的研究方向。除非你做科研,那么这个方向的把握更多取决于在实际引用的价值体现。比如说,针对数据存储,新的/优化后的算法可以节省时间/空间;针对数据安全反面,新的/优化后的算法可以节约时间或者有更好的保密性。因为相对高的应用价值,这些研究方向都会得到大型IT企业的青睐。

你才大二,不懂的很多也不奇怪。努力吧。

2019年,重新编辑一下这个答案。

学校教授的算法和公司需要的算法有很大的出入,尤其是如果你不是科班计算机专业的。

一般互联网公司所谓的要找算法工程师,一般做这么几个领域

  1. 推荐算法和协通过滤算法,就是各种推送系统的设计机制,这个无他,熟练工种+各种商业强推需求。
  2. 大数据分析,还是集中在推送系统里面,另外做广告竞价用的也比较多。
  3. NLP,自然语言分析,还是在广告,推送系统,搜索工具这些产品中应用,这个无他,纯熟练工种,要知道绝大部分的公司是没有专门的团队做nlp的,一线公司除外。
  4. 语音信号处理,比如回路噪声抑制什么的,一般用在语音聊天,语音识别的前端检测,像现在做智能音箱的这些公司,多少都需要搞一些
  5. 图像处理,尤其是基于OpenCV的图像处理算法,一般产品里有做美颜,滤镜什么的特别喜欢招这块的小朋友,近一两年有被做深度学习的取代的趋势。最近google出了arcore,所以让不少小公司也能出一些效果很好的换头类应用。
  6. 深度学习,当然,不要以为这个领域大部分公司能做到什么程度。首先,国内的大部分公司,号称做ai的,集中在做人脸识别,这块做的太成熟了,基本上现在上手也就是搭框架,什么rcnn,yolo,vgg,alexa,这些都需要去研发么,不,你能把模型跑起来就可以了。说白了会用工具,知道基本调参方法,就能去做了。其次,正儿八经用到DNN,RNN,CNN的地方,一般都没什么鸟数据可用,所以低端的岗位最后会变成收集数据和标记数据的马仔。
  7. SLAM,集中在机器人定位导航上,比如无人车,扫地机器人,这个方向已经很专了,和上面的那些大路货不是一个层面的,要有好的团队,好的导师才能带你入门,国内这个方向的团队实验室来来回回就那么几个。
  8. VR,AR领域,涉及到的包括视频跟踪,SLAM,raytracing,几何投影等等,实际上是一个综合的领域,目前主要是做计算机视觉的转行做这块。
  9. 传统的算法范畴还包括:所有的业务逻辑流程设计,随机数生成,校验,加密解密,压缩算法,但是这种类型的算法不需要专门一个算法工程师来做,都是程序员搞定的。

接下来的,是非互联网的算法工程师做的工作,这些内容,不是学学计算机就搞得定了,一般都是特定领域

  1. 医学影像处理,三维图像重构,用在B超,CT成像上,这个是医疗方向的。
  2. 通信基带信号处理,网络优化算法,这一块其实很式微了,毕竟高大上的算法小公司没成本去实施。
  3. 音频滤波,用在HiFi产品,比如车载音响,手机厂商,圈子其实蛮小的。
  4. 控制算法,自适应滤波算法,用在机械领域上,比如机械臂行程控制,稳定性。
  5. 有限元算法,这块从雷达,机械,电磁学,到服装设计,都有很有价值的应用。
  6. 统计建模,stochastic calculus,点估计,主要是量化金融行业,某些行业的信号检测也会应用到这块的技术
  7. 信号处理,比如插值,频谱分析,盲信号分离,压缩感知,物联网大部分应用会涉及这一块。
去图书馆借一本算法书,读一遍,甚至不要读完,你就知道自己适不适合了。

近年来,算法工程师越来越成为热捧的香饽饽,薪资待遇高、发展空间大、岗位需求多。光是薪资,很多人轻轻松松就能拿到50万的年薪。此外,今日头条、抖音崛起后,推荐算法工程师等岗位也缺口越来越大。

如果要我用一句话来简单说算法工程师是做什么的,那就是,用机器学习的方法来实现人工智能和数据挖掘。

具体地,我们先来看看现在各大公司的算法工程师岗位的技能要求,你就可以知道这个岗位是做什么的了。

首先,来看看阿里的算法工程师招聘要求

总结一下一名算法工程师需要的技能树

  • 需要掌握计算机语言:Python,C++, SQL
  • 需要掌握的算法和数据结构知识:二叉树、链表等基本的算法和数据结构知识,达到LintCode上的算法题水平即可。
  • 需要掌握的统计学知识:能看到简单的统计学概念、符号即可
  • 需要积累的经验:Kaggle上的一些数据挖掘项目、特征工程、机器学习模型。

小私心推荐一下九章算法的《人工智能集训营》,由美国硅谷的老师授课,课程含括20+项目10+模型,并提供一对一简历修改、模拟面试、和内推。前不久有一个学员刚在老师的帮助下拿到keep算法工程师岗位offer。你现在才大二,从现在开始往这个方向努力,一定可以实现你的目标。

日常生活

数学博士的时候,通常的日子是这样的:

根据论文或者某个讲座得到的信息来提出某个数学猜想 -> 然后开始在 Google 上搜索论文 -> 再花费几周到几个月的时间来读论文,并且思考这些论文的优点和缺点 -> 思考 -> 思考 -> 思考 -> 继续读更多的论文 -> 思考 -> 思考 -> 思考 ->…-> 放弃。。。。

在互联网公司做机器学习的时候,通常的日子是这样的:

根据行业的PPT或者业务中的某些痛点来提出技术方案 -> 然后开始收集数据,不仅要问遍组内,还要去其他组收集各种各样的需求 -> 根据之前的技术方案来进行数据的预处理 -> 撰写特征工程 -> 训练模型 -> 调参 -> 调参 -> 重新收集数据 -> 数据的预处理 -> 收集更多数据 -> 调参 -> 调参 -> 调参 ->…->放弃。。。。

业务理解

就做机器学习的经验来看,通常来说在做业务之前,一定要清楚的弄明白项目的业务需求是什么,弄清楚这个问题是什么比一开始就写代码重要得多。意思就是在回答问题之前,一定要把问题的内容弄清楚。有的时候,虽然看上去是一个很大的需求,但是实际操作起来的时候使用一些简单的办法也能够达到项目指标。有的时候,虽然看上去很简单,但是实际操作起来并不是一件容易的事情。从之前做理论数学的经验来看,通常数学里面的一些问题是是非题,不能够添加条件的。在PDE 等方程领域,定理的条件越多,表示定理越不值钱。不过在工作中,这些条条框框会相对减少很多,只要能够达成项目目标,无论是添加样本,添加特征,添加服务器数量其实都是可以的,并且要把机器学习模型和业务指标有机结合才能够达到最终的项目指标。

一般搞数学科研的时候都是单打独斗,通常来说都是自己干自己的事情,别人也没办法帮自己。但是在工作中是不一样的,工作中除了干好自己的事情之外,周边的很多资源其实是可以在一个合理的范围内去争取的。无论是人员的数量,还是人员的种类,只要最终能够达成项目目标即可。无论是算法人员,还是开发人员,产品经理,最终都是要为一个项目的结果负责的。之前听过一句经典的话“失败的项目里没有成功的个人”,因此,无论怎么做,最终都要保证项目尽量成功。

数据清洗和特征工程

而在机器学习算法工程师的日常生活中,除了上面的小段子之外,其实最重要的是样本层和特征层的处理工作。在学术界,都是使用开源的数据,别人都已经完全标记好了,学术圈的人通常来说只需要在这些数据的基础上提出更好的模型,更创新的算法即可。但是在工业界就完全不一样了,不要说有人帮你标记数据了,有的时候连数据在哪里都不知道,数据的质量如何也不知道,因此更多的时候是进行数据的处理和清洗工作。之前做一个项目的时候,准确率和召回率始终上不去,但是等把样本里面的脏数据清理掉之后,模型的效果瞬间提升了一个档次。在脏数据面前,再好的模型都是没有用的,在训练模型之前,一定要先看一下数据层的问题。

除了数据的问题,通常来说在一些场景下,样本的数量并没有那么大,因此深度学习等方案不一定特别适合。在这种情况下,一般就会使用传统的机器学习方法,并且会使用一些基于业务的特征工程。这种时候就需要机器学习从业者对业务有一个精准的理解,只要业务理解得好,有的时候写一些简单的规则就可以解决问题。特征工程也是机器学习里面的一个重要问题。

持续学习

在人工智能这个领域,无论是 CV,NLP,还是机器学习,里面的技术迭代都是非常快的,而且是需要相对专业的人才能够从事这些领域。在这种情况下,机器学习从业者的持续学习就显得尤其重要,几年前的技术在新的业务场景下就未必适合,可能需要使用其他的模型或者框架才能够更好地解决问题。所以,除了完成日常的搬砖工作之外,建议每天抽一点时间来阅读论文,保持对业界技术的跟进和迭代。不过这个行业感觉鱼龙混杂,有的时候论文或者PPT里面的技术框架其实没有办法复现,能够精准地判断哪些方案好,哪些方案差绝对是算法工程师必备的关键能力之一。

编程能力

如果是在工业界的话,编程能力是非常重要的。因为从事算法的人通常来说会有一些算法上的优化,工程上的改进,数据分析之类的工作。在这种情况下,首先需要有一定的业务直觉。而业务的经验积累需要通过各种各样的基础数据提取,在海量的数据分析工作中逐渐积累的。在这种情况下,提取数据的工具就是必须要掌握的,例如 SQL 等。其次,分析数据的工作也是必须要具备的,无论是使用 SQL 来进行分析,还是使用 Python 来做数据分析,都是自行编程解决的。再次,在从事机器学习方向的时候,不可避免的就会进行算法的效果对比。而在这种情况下,算法的效果对比是需要机器学习从业者通过写程序来实现的。最后,工业界的算法通常来说都强调上线,如果能够自行把离线,上线,效果验证,ABTest都做完,其实是最好的状况。在这种情况下,通常 Python 就不太够了,需要使用 C++ 或者 Java 等其他编程语言。因此,熟练使用多种编程语言也是一个算法工程师的能力。

2019年3月9日

整理语料,下载开源算法工具集,跑出结果,优化参数,继续跑出结果,继续优化参数,汇报工作指出难度,继续跑出结果,继续优化参数,汇报工作指出难度,准备离职,准备简历,面试时汇报算法成绩,准备入职,正式入职,整理语料,下载开源算法工具集,跑出结果,优化参数,继续跑出结果,继续优化参数,准备买房,受推荐面试,夸大算法成绩,正式入职,招募团队,指导他准备语料,指导团队下载开源工具集,指导团队跑出结果,指导团队优化参数以及优化结果,汇报工作夸大成绩,继续指导团队优化参数和结果

前面的回答已经有很多大神解释了是否要学好数学,那么小宅就来和大家分享菊厂一位无线算法工程师的故事吧,希望对大家了解算法工程师这个职业有所启发。

有人说,“算法是无线通信的灵魂”,这话一点不假。回头看无线算法20年来的征途,我们的“理想”并不是个虚无缥缈的东西,它渗透到了无线的每个角落,决定了芯片的每一步发展,影响了算法人的每一次抉择……

“三十岁之前,路总是很长,我们总是展望。三十而立,就再也不敢展望了,低头赶路吧。” 这是王小波在《三十而立》中说的。但是,我在三十岁时听到的话,跟它恰恰是相反的。

2005年,三十岁的我,刚入职华为,进入3G算法项目组。同事告诉我,别顾着埋头赶路,我们做无线算法的,是有理想的,要引领无线通信的变革。

算法是什么?生活中的算法无处不在,当你按下电梯按钮的时候,电梯运行的算法帮你最优化调度资源,缩短等待时间;当你驾车穿行于早晚高峰的时候,交通运行的算法根据变化的车流量实时调控红绿灯,帮助车辆行人更有效地通行……

无线算法也是如此,它通过一系列复杂的数学公式和指令解决无线通信中遇到的各种棘手问题,让用户可以随时随地享受高质量的语音、视频、上网等体验。

据说算法刚起步的那几年,团队有一个预研部,很多人曾开玩笑说,他们做的不是预研,是预言,因为第一款商用芯片里的算法必将从这里诞生,将影响数以万计的人。

2002年的一天,能担当大任的算法似乎出现了。外场测试传来消息:一款“干扰对消算法”(IC)的样机通过了测试,提升了50%的系统容量!理论上,如果实现了IC,就能通过消除噪声达到让运营商在同一频段上多服务一倍用户的效果,对于用户来说,通话体验也将大大得到提升。

但是,这款样机带来的激动心情根本没持续多久——性能提升了一倍,但复杂度却提升了三倍,这种划不来的做法,直接否定了它商用的可能。IC特性的复杂,让它成为通信领域的人人都想吃,但人人不敢碰的香饽饽。算法组只能忍痛放弃这款样机,转身研究其他的特性。

那个冬天寒冷异常,到2003年底,团队成员已经从近30人,减少至不到10人。还在坚持的有从1999年就开始进行无线算法研发的元老级人物,李化加。

2004年,团队终于向公司争取了部门公开招聘的机会,收到了至少500封简历。“要做最好的算法,就得最好的人才。”李化加亲自筛选和面试,凭着一股宁缺毋滥的劲儿,抵住了人力紧缺的压力,最终只留下了最想要的5个人。

从这时候开始,整个算法组开始形成了一种心照不宣的学究气质。李化加跟汪少波等人,像学校实验室师兄师姐们一样,投入大把时间对新员工们进行点对点的技术细节讨论,包括如何研究、如何开展算法设计、如何进行文档写作,每篇分析文档都是千锤百炼后才能同意归档,好多习惯都在那时候被奠定下来。

2005年的我初来乍到,听到前辈们的故事,虽未经历始末,但硝烟四起之感丛生。这年年底,在一款芯片的算法设计即将被冻结的紧要关头,李化加匆匆找到汪少波,说他在业界技术调研的时候,想到了一个以低复杂度实现IC特性的灵感。

那时候,算法的特性都是要做到硬件里去的,也就是说,算法一旦设计完成,就无法再改动——不仅这一版的芯片要依照这个算法去生产,下一版的算法还要跟这一版的算法能配合运作。算法的路只能向前,不能回头。

可是IC特性能够减少噪声扩大容量,实实在在提升每个用户的体验,所以,即使算法的每一步都承担巨大风险,即使这款芯片已经到了算法交付的最后环节,他们还是当机立断,决定把IC这个特性加进去!

“不做IC,这款芯片顶多是性能上的优势,而性能优势是很容易被超越的。做IC,我们就实现了友商还实现不了的特性,这是算法的竞争力。”汪少波的这句话,在三年后的沃达丰比拼上,得到了印证。在那场业界关注的技术比拼上,这款芯片的迭代版本,为华为拿到了第一名。CCPIC(控制信道并行干扰对消)这个名称,由李化加和汪少波开创,到后来成为了华为的专用术语。

“杀敌一千,自损一千二”的理论漩涡

每个人的一生,总会有自己的“关键时刻”。对我而言,那就是2007年。这一年,中国移动决定在珠峰海拔5200米、6500米处采用华为设备建设移动通信基站;这一年,我被任命为第一版商用IC算法的设计人。

带着初生牛犊不怕虎的冲劲,我们设计出了新的IC版本。然而,在推导的过程中却出现了一个奇怪的现象,就是在消除干扰信号的过程中,也损伤了信息本身有用的信号。就像消灭敌人的时候,自己人也受了伤。如果消灭的敌人大大超过自己人,问题不大。可万一出现“杀敌一千,自损一千二”的情况呢?

这正是算法区别于其他专业的地方,即使是一个小小的理论假设,我们也无法视而不见,或者暂时搁置,因为谁也说不准,现在的理论假设,是否会成为最后压垮整个算法设计的致命稻草。

可是,业界友商没有实现IC的先例,学界论文也没有这个问题的相关描述——我很清楚,可能要做第一个吃螃蟹的人了。

攻关组马上成立,除了“苦思冥想,连续作战”,没有捷径。探讨、推导、测试、验证,循环往复。在接下来两个月时间里,我们从什么是信号、什么是噪声这些最基本的概念出发,一点点抠细节,探寻问题的本质。那些攻关的晚上,我经常做一个梦,在梦里我自己变成了信号,和干扰信号大战三百回合。每每醒来,浑身是汗。

钻得深了,我才得以留意到以前没有注意过的运算细节——我们的算法里引入了一个特殊项,既包括信号,也包含噪声,这就是为什么在消除噪声的同时,信号也有损伤的原因。找到关键突破点后,我们经过准确的运算分析,得出了一个意外结论——“杀敌一千,自损一千二”只是理论推测,真实场景根本不会发生。

揭开这个苦苦追寻的答案,压在我们胸口几个月的大石终于卸了下来。理论漩涡的平息,也让我们吃了一颗定心丸。

一颗“螺丝钉”扭转乾坤

理论问题得到了解决,算法设计也顺利进入收尾阶段。然而,测试结果却犹如晴天霹雳:性能提升的效果极其不稳定,对用户的影响就是一会儿信号好,一会儿信号差。这种情况真是称得上“血案”级别,别说做业界最好算法的雄心,连商用的信心都快没有了。

而且,目前这个阶段不可能对芯片本身进行任何改动,唯一能接受的只能是修改可编程部分。就好比临近交房,设计师对房子图纸不满意,想重新改造,打破一面墙,再造一个门,可是急于入住的房主能接受的,只是挪动一个螺丝钉。

下班时,只有路灯在等着我。它们有的昏暗无光,有的明亮异常,有时把我的影子拉得很伟岸,有时甚至让我找不到自己的影子。做算法,孤独的时刻有很多,但从来没有一次像那天一样强烈。

那段时间,定位组、开发组、测试组、攻关组的同事成天混在一起,每天早出晚归。当时每排除一个疑点,项目经理都激动地请大家吃饭,后来有人都忍不住说,“还是搞定了一起请吧,不然要把你吃的倾家荡产了……”

四个月的时间,上千次的测试精品真,日日夜夜的归纳推演,我们终于找到揪住了“嫌犯”:定点过程中的不当截位。通常的截位应该采用四舍五入方式,而我们为了实现方便,采用了直接丢弃的方式,相当于“九舍无入”。通常“九舍无入”都没有大问题,但当多个芯片合并时,舍入误差被急速放大了,正是这个“小”误差,酿成了这次的大错误。

当时,入职仅两年的朱有团灵机一动,提出了一个“负数加1”的方案——只对数值的最后一个比特进行更改,就达到了“四舍五入”的效果,用非常小的代价解决了这个非常棘手的问题。本来要砸墙的房子,真的靠旋转了一颗螺丝钉就扭转了乾坤!朱博也由此一战成名,还荣获了当年公司级的金牌个人。

后来我们才知道,原来友商也一直在寻求IC的商用化模式,只是没有做出有效的算法,于是走了另外一条降低干扰的路径。在沃达丰的现场比拼中,技术分值华为第一,不得不说,IC算法确实是助力登上宝座的最大利器。IC商用化的传奇就此开启,华为基站的接收能力再未遇过来自友商的实质挑战。

送上门的真经,我们没有要

2009年,我们急切地把视线拓展出去,以期寻找新的突破。巧的是,友商Q基于产业发展的考虑,主动与华为无线达成战略合作意向,向华为分享他们掌握的IC技术。

拥有丰富的IC运营经验,保持CDMA系统最重要的基本专利,连世界公认的算法巨匠都曾供职于此,友商Q理所应当是我们膜拜的“佛祖”。同事们都戏称,这简直是一次千载难逢的“西天送经”。

果然,它的算法设计能力带给我们的震撼是巨大的。其中最令人称奇的是,他们可以通过对消历史信息来提升性能。这种设计,不仅是我们从来没有过的算法思维,也更达到了我们从未达到过的卓越性能。不用苦苦搜寻,无需反复求证,我们只要在这个基础上稍做优化,就会得到日思夜想的算法“真经”!我兴奋异常,其他小伙伴们也难掩激动之情。

然而,伴随着交流的深入,我们却发现了这种算法的“阿喀琉斯之踵”:为了拥有足够多的历史信息,这种算法要将每个用户的重传率设得比较大。容量固然可以提升,但时延也会变长,给用户的感知就是增加了等待时间。

一边是卓越的性能增益,这是算法人梦寐以求的目标;一边是提升用户的体验,这是算法最朴素也最深刻的奥义。每个人的心中好像出现了一座天平,到底要往哪边倾? 大家都犹豫了。

“不能为了一张好看的成绩单,让用户的体验受损。”讨论会上,黄心晔的一句话掷地有声。上上下下一致同意,我们要舍弃跟进友商的算法设计。“佛祖”送上门的真经,被我们拒绝了。

不过,他们的思维方法却极大地激发了我们的灵感。在信息的传送过程中,既有传送成功的信息,也有传送失败的信息,友商没有对后者进行快速对消,我们是不是可以补上这个空缺?

为确保方案的有效性,我们在精品真平台上全方位对比了我们和友商Q的方案,结果表明,设定短时延下,我们的算法优于友商,设定长时延下,与友商基本相当。为了万无一失,我们累计梳理了50多个可能的影响因素,并在样机项目中逐一排除其影响。最终这个特性顺利交付,实验室测试的结果不负众望,40%以上的增益实实在在地呈现在面前。

自掘三尺地,新一轮自虐行动

4G商用加速发展,3G新版芯片如何推出新的算法特性?不破不立,我们准备先自掘三尺地,从版本的现有问题中,尝试挖掘金矿。

有人开着车沿着测试外场不停转圈测业务数据,有人缩在实验室里一遍遍分析性能曲线,还有人抽丝剥茧梳理方案和应用场景,终于找到了IC算法新的增长点。原版本的设计有一个“毫不利己,专门利人”的特点——控制信道给其他信道提供增益,自己却不能享受增益,这其实阻碍了整体性能的提升。既然如此,我们能不能把它变成“利人又利己”呢?

问题找到了,但给出解决方案更非易事。李**、杨**等团队的“最强大脑”们,立马成立几个小分队,多方向地尝试思考。有人提出改变现有的并行处理方式,而让多个用户串在一起,前一个用户对消掉的干扰,可以提升下一个用户的性能,间接实现“利己”。理论验证这个办法确实有效,但操作起来工作量太大,不适合全面施展。

这个角度的思考倒打开了我们的思路,我们决定尝试在现有方案上增加一次并行处理,迂回地解决“利人又利已”的难题。当然,这绝非是描述的这么简单,大量的配套方案和针对性改进才是真正的“幕后英雄”。

还能不能再往前走一步?当目前方案已经获得验证之后,我们展开了新一轮的“自虐行动”。受友商Q思路的启发,我们有了新的想法:如果能在信息还未出发之前,预测它将会带上哪些“行李”,对消掉不必要的东西,就能给旅途减负。把这种思路和并行方案嫁接起来,新的方案呼之欲出了!

整整两年内,从毫无头绪到渐露曙光,从单点试探到全面开花,我们发挥想象,给出了绚烂的算法方案。干扰对消算法最终浴火重生,在本以为到达巅峰的情况下,又提升了15%的系统容量。

攀登不止,初心依旧

从初创小团队的摸索,到与瑞研专家的合作,再到现在与法国、俄罗斯、德国、美国等至少7个国家的联动……历经近20年的光阴,算法团队经历了从纯粹国产、中外协作、到全球深度融合的成熟之路。全球智慧、理论大家和实践能手的无敌组合,让我们对5G算法的研发充满了信心。

我一直很喜欢孔子说的“知不可为而为之”这句话。对于算法人而言,这句话的意义便是,做事不问可不可能,但问应不应该。别人能做到,我们应该也能做到。别人做不到的,我们应该抢先做到。我们已经做到的,还应该要做到更好。

一首小诗和所有的算法人共勉:

我不是思想家,我引领无线通信变革。

我不是指挥家,软硬件系统因我而协奏。

我不是发动机,我驱动无线核心竞争力。

我是数学公式,更是理论与工程的完美统一。

你们看不到我,但我在你身边。

我是算法,无线通信的灵魂。

“我们做无线算法的,是有理想的”,三十岁那年听到的话,似乎又在耳畔响起。

《华为人》版权所有,请勿转载

算法工程师,在很多情况下,已经成为程序员的一类了。或许原本就是程序员的一类。一家公司的岗位,有C++程序员,有JAVA程序员,就也有数据挖掘程序员,只不过通常叫做「算法工程师」、「数据挖掘工程师」或「机器学习工程师」等。

我要描述的现象,当然不会出现在所有公司所有部门,然而确实会出现在一些公司一些部门。(我可没说是我现在所在的公司我现在所在的部门)

数据挖掘的意义原本是找出某一业务场景下的最优方案。然而在实际的工作中难以判定一个方案到底有多优秀。例如(以下均使用准确率作为评价指标,其它指标同理),某问题基线60%,我给出一个90%的方案,然而其他人随便用一些简单的机器学习算法就能得到95%,那么我的方案是相当差的;另一个问题基线同样是60%,我给出一个70%的方案,其他人即便拼尽全力也难以突破65%,那么我的方案是相当好的。所以要评价一个方案是否优秀,一个合适的办法是叫几个人同时来做一个项目,然后比较这些方案的成绩。这在实际的工作中显然难以实现。

在这样的情况下,大家就不太关心方案的质量了(有一些人认为90%一定是好方案,70%一定是差方案,任何项目只要做的足够好,一定能达到90%)。我随便做做,做到90%,你也不知道我做的有多差;我认真做做,做到70%,你也不知道我做的有多好——可能还会嫌我的效率太低。(大家其实更关心方案的逼格)(然后有很多算法工程师都不能或者不愿意设计合理的评测方案。我见过一个部门做啥准确率都能到90%)。

于是算法工程师的主要工作内容就是实现。一个项目,只要能输出预测结果就算完成了;而输出预测结果,无非是编写一些提取特征和调用机器学习算法函数的代码,这与其它类别的程序员并无区别。一个JAVA程序员改行去做数据挖掘程序员不比去做C++程序员困难,

最后是题外话。一大群人同时做一个项目的情况,也确实存在,那便是在数据挖掘竞赛中。我认为在数据挖掘竞赛中做的事情是真正的数据挖掘。如果让我来判断一个人的数据挖掘水平,我会先问他是否参加过数据挖掘竞赛,是否拿过数据挖掘竞赛的名次。

我觉得大家回答的都好长好专业,我回答一个外行也能看懂的答案吧

当你打开饿了么这个APP的时候,首页会给你一堆餐厅,这些餐厅为什么是你看到的样子呢。
这里有两个大的东西决定,一个是搜索工程然后就是算法工程。

搜索工程决定了,例如根据你所在位置,把一些合规的餐厅,销量高的餐厅,开门的餐厅召回来,例如它召回了 A、B、C、D、E、F、G

算法工程的眼里,他们会有一个优化的目标,例如要让你看到餐厅后,更容易去下单,此时优化的目标是转化率。算法的同学就会把你所有订单作为正样本,点过没下单的作为负样本;再把餐厅、你个人情况等各个维度的数据作为特征;训练一个模型出来;然后用这个模型给这些餐厅打分,打分高的,你越容易去下单,让后就把他们排前面。

当然实际的规则比这个复杂,但是基本上就是这样的。

不同的算法同学,训练模型、优化的东西不一样;对于广告的同学,他们优化的是平台收入,物流的同学他们可能是根据历史订单配送时间预估配送时间等等。直觉上,凡是那种你有一大堆历史数据,然后可以根据这些数据发现一些潜在规律的事情都可以用算法工程来解决。

默认你想做机器学习相关算法。

先回答答主问题:

(1)这个职业,得看公司,我朋友腾讯优图实习过,据透露就是给一个课题,自己做看文献,找到方法(算法)完成这个课题即可,不需要高超的编程技巧,有专门人优化代码。还有一些公司,估计就像其他答主所说,清洗数据多一些,因为大多数算法能够有好结果的前提就是,数据质量要好(脏数据少,特征选的好等等)。

(2)数学建模建议搞搞,因为数模的流程就是,了解课题背景,清洗数据,寻找解决办法,即设计模型和算法,最后就是算法实现和评估。这一套流程就是一个做算法的人要经历的过程,所以这是一个很好的锻炼机会。

接下来是给答主的学习建议:

首先,本人曾经和题主相同,大学并不是计算机专业(控制科学),有了几次建模和编程经验后,发现自己对计算机这类事情更感兴趣;当时“大数据”这个概念也炒得火热,还有不到两年年多毕业的我想找个高薪职业,于是开始学习数据库方面的知识;但是也就是短短半年,我就经历了oracle的没落到mysql的崛起,从辅导机构“DBA越老越吃香”的噱头到DBA面临失业的窘境,从“DBA:data-based architect”的垂死挣扎到java大数据开发的流行。这种落差让我开始慌张,我开始从新思考当初学习数据库方面的知识是不是仅仅是因为钱。结果是肯定的,于是我仔细的分析了自己,发现其实自己对数学和算法和编程比较感兴趣,于是就走向了算法之路。

我做的第一件事就是在知乎发了个帖子(大家可以点开看),内容大致是:我想学算法,我该怎么办。得到的结果,大致和这个帖子类似,有的答主给了诚恳的建议,有的直接嘲讽。(这里顺便就安慰一下题主,你可比我当时幸运多了,你大二就已经想清楚你要搞算法,我大三才结束才明白过来。)于是我做了第二件事,考研,跨专业,六个月,成功第一名上岸,目前研二,研究方向是深度学习和遥感图像。所以我可以,你也可以。那么怎么才能在算法之路上走的快点呢,就是我做的第三件事--不断的学习。

由于你暂时大二,不做科研,我就从入门和应用的角度,简单说一下你都要掌握什么。

(1)数学基础是一定要有的,作为工科生高数、线代和微积分这三门基础课想必你已经学了,建议你再学一下凸优化(中文图书更多叫“最优化方法”)。

(2)接着就是算法,显然是要推荐吴恩达的机器学习视频的,coursea上有中文字幕,讲的比较通俗,容易入门。如果英语不是很好,可以看一看周志华的西瓜书和李航的统计学习方法,经典的算法就那么几个,首先应该掌握基本思路,如果优化推导实在看不懂,可以先放一放,多看看数学,时不时再回顾一下,时间久了就懂了(学习方法这种事我就不多提了)。至于深度学习,我当时入门就是直接看的论文,所以没有推荐的书,但是吴恩达也有视频,虽然更偏向工程,但是用来入门也是可以的。

(3)最后肯定就要实现了。首先可以做一个快乐的调包侠,用scikit-learn包试试各种不同的机器学习算法(官方文档对算法的介绍也挺不错的),tensorflow可以用来搭建深度学习框架,做做网上简单的小项目。当然调包不是长久之计,慢慢的就要学着从简单的算法开始,自己实现,这样才能更深刻的理解算法。

以上就是入门,上述三点不是串行的,你可以先学算法,然后发现有不会的数学,再回去补一下相应的知识,学完这个算法就调调包试一下,反复循环。

如果入门之后发现真的感兴趣,那么就建议你考研了,选个好导师,继续研究,发现问题解决问题真的比编程好玩多了(反正我是编吐了,想去欧洲读博,做稍微理论一点的方向,比如复杂度啊图论啊博弈论啊等等,有答主了解这类方向的导师吗,求推荐)。

有很多小伙伴可能都对未来的工作内容有所好奇,不知道所谓的算法工程师到底日常在做什么,而我以后能不能胜任?

继续看下来,或许能解开你的疑惑~>_<

下面的内容将通过对比比较接近算法工程师日常工作内容的kaggle比赛和算法工程师真正的日常任务之间,存在的不同侧重点~

你有没有参加过Kaggle比赛?如果你正在学习,或者已经学过机器学习,那么很可能在某些时候你会参加一次。这绝对是将构建模型的技能应用于实践中的好方法,我在学习时花了很多时间在Kaggle比赛上。
如果您以前参加过机器学习竞赛,那么您的工作流程(步骤)可能看起来像我的一样:

  1. 下载一些数据(可能是一个或几个CSV文件)。
  2. 也许做一点数据清理,或者数据集可能已经足够干净了。
  3. 执行一些预处理,例如将分类数据转换为数字数据。
  4. 通过各种合适的模型运行数据,直到找到最佳模型。
  5. 花费很长时间在超参数调整,特征工程和模型选择上,因为一个非常小的改进可能意味着你在排行榜上升几个位置。
  6. 结束


但是,如果您正在为实际业务应用程序开发机器学习模型,则该过程将看起来完全不同。我第一次在业务场景中部署模型时,这些差异非常令人惊讶,特别是在工作中的某些阶段花了很多时间。在下面的文章中,我想描述在业务环境中开发模型的过程,并详细讨论这些差异和解释它们存在的原因。在商业案例中,工作流程将有更多的步骤,可能看起来像这样。

  1. 将业务问题翻译成数据问题。
  2. 考虑机器学习模型如何连接到现有的技术栈中。
  3. 花费大量时间提取,转换和清理数据。
  4. 花费大量时间进行探索性分析,预处理和特征提取。
  5. 建立模型。
  6. 选择能够以最少的工程量集成到现有技术栈中的最佳模型。
  7. 考虑到业务价值,优化模型直到“足够好”。
  8. 部署模型。
  9. 在生产中监控模型。
  10. 必要时重新训练。
  11. 构建版本2。
  12. 继续,直到模型不再有业务用途。

在本文的其余部分,我将详细介绍每个步骤。

您需要将业务问题翻译成数据问题

在Kaggle比赛中,要解决的问题将在前面明确定义。例如,在最近一项名为“Severstal:钢铁缺陷检测”的竞赛中,您将获得一些准备好的数据,并以数据问题的形式明确说明问题。

今天,Severstal使用来自高速摄像机获取的图像推进缺陷检测算法的改善。在本次竞赛中,您将通过对钢板上的表面缺陷进行定位和分类来帮助工程师改进算法。

在实际业务问题中,您不一定会被要求构建特定类型的模型。团队或产品经理更有可能遇到业务问题。这可能看起来像这样,有时甚至可能没有明确定义问题。

客户服务团队希望减少业务回复客户电子邮件,实时聊天和电话所需的时间,以便为客户创造更好的体验并提高客户满意度指标。

根据此业务要求,您需要与团队合作,在开始构建实际模型之前,计划并设计此问题的最佳解决方案。

发数据并未“清洗”(不干净的数据)

您使用的数据几乎肯定不会被“清洗”。通常会有缺失的值。日期可能格式错误。值,错误数据和异常值可能存在拼写错误。在你真正建立模型的任何地方之前,很可能花费大量时间来删除错误数据,异常值和处理缺失值。

您可能必须从不同来源中获取数据

同样,您需要的所有数据可能不是来自一个简单的来源。对于数据科学项目,您可能需要从以下任意组合中获取数据:SQL查询(有时跨多个数据库),第三方系统,Web抓取,API或来自合作伙伴的数据。与数据清理类似,这部分通常是项目中非常耗时的部分。

特征选择非常重要

在机器学习竞赛中,您通常会有一个给定的数据集,其中包含可在模型中使用的有限数量的变量。功能选择和工程仍然是必要的,但您首先要选择的变量数量有限。在处理现实问题时,您很可能会访问大量变量。作为数据科学家,您必须选择可能产生良好模型的数据点来解决问题。因此,您需要结合使用探索性数据分析,直觉和领域知识来选择正确的数据来构建模型。

发构建模型占流程中的最小的比重

与花费在选择,提取和清理数据的所有这些时间相比,实际构建模型所花费的时间将非常少。对于特别是模型的版本1,您可能希望将模型用作基线测试,那么您可能在第一个实例中仅花费少量时间进行模型选择和调整。一旦业务价值得到证实,您就可以投入更多时间来优化模型。

调整模型比您想象中要花费更少的时间

在Kaggle比赛中,花费数周时间调整模型以获得模型得分的小幅提升并不罕见。由于这个小小的改进可能会提升你在排行榜上的几个名次。例如,在当前的Severstal 竞赛中,排行榜上位置1和2之间的得分差异目前仅为0.002。绝对值得花时间来提高你的分数,因为它可能会给你带来最高奖金。


来源:Kaggle.com


在商业中,您花在调整模型上的时间是成本(烧钱的)。公司必须按照您在此任务上花费的天数或周数支付工资。与所有事物一样,需要以商业价值的形式回报这种投资。模型的业务用例不太可能提供足够的价值来证明花费数天的时间来提高模型的准确性,增量为0.002。实际上,您将调整模型直到它“足够好”而不是“最佳”。

您不一定会使用最好的模型

这引出了我的下一点,即你不会总是使用最好的模型或最新的深度学习方法。通常,您可以使用更简单的模型(如线性回归)来提供更多业务价值。这花费的时间更少(因此搭建模型的成本更低)并且更易于解释。

您的模型必须连接到某个终端(endpoint),例如网站。此终端的现有技术堆栈将对您将部署的模型类型产生很大影响。数据科学家和软件工程师经常会在最小化两端的工程工作方面做出妥协。如果您有一个新模型,这意味着要对现有部署流程或大量工程工作进行更改,那么您必须拥有一个非常好的业务案例来部署它。

工作并不止于此

一旦投入生产,就需要对模型进行监控,以确保其在训练和验证过程中的性能和检查模型降级情况。由于多种原因,模型的性能通常会随着时间的推移而降低。这是因为数据会随着时间的推移而变化,例如客户行为发生变化,因此您的模型可能会开始在这些新数据上表现不佳。因此,模型还需要定期重新训练以保持业务性能。


此外,大多数企业将拥有用于部署机器学习模型的测试和学习周期。因此,您的第一个模型通常是版本1,以形成性能基准。之后,您将对模型进行改进,可能会更改功能或调整模型,部署更好的版本并针对原始模型进行测试。

在此模型不再存在业务案例之前,这两个过程都可能正在进行。

结论

这篇文章的部分灵感来自Chip Huyen的推文。


招聘机器学习从业者很困难的部分原因是,我在这里讨论的许多在商业中部署机器学习的现实都没有在这些课程中讲授。这就是为什么我喜欢实用的第一种学习方法,以及为什么我认为工业实习,实习和初级数据科学角色如此重要。

然而,隧道尽头有光,因为这个领域的技术正在迅速发展,有助于实现数据清理和模型部署等流程的自动化。但是,我们还有很长的路要走,因此对于数据科学家来说,开发软件工程技能,提高沟通技巧,以及拥有弹性和持久的思维模式,以及典型的数据科学家技能组合仍然至关重要。

谢谢阅读

如果对你有所启发,可以用你发财的小手点个赞~鼓励一下小编

欢迎关注公众号:AI算法与图像处理,各种干货等你来~
责任编辑:
热门阅读排行
© 16货源网 1064879863