算法工程师当前选哪个方向好?
1,计算机视觉;2,自然语言处理;3,风控;4,推荐系统?当前2020年 ,算法工程师哪个方向好? 从社会需求,工资待遇,未来发展方面讲。 个人经历:研究生和毕业后的第一份工作都是做计算机视觉,但是今年跳槽转方向了,现在在抖音做推荐算法。
当然,我并不是说推荐就比计算机视觉好。其实我觉得这些方向都挺好、挺有意思的,也都有很多挑战、没解决的问题。只不过在目前这个阶段的互联网公司,可能推荐、广告、搜索这三个方向是最容易落地的。CV和NLP或许还需要一段时间的沉淀和积累才能迎来爆发期。
工作两年多之后,我现在的想法跟读书时已经有一些不一样了,仅在这里分享一下对这个题目的见解。
【1】各个方向之间并没有很大的gap,作为工程师不要太局限了
我个人认为,在工业界只要代码能力不错+懂机器学习,CV、NLP、推荐、广告、搜索、风控这些方向都可以做的。在某一个领域做得比较深入的人,换一个方向也能在较短时间内上手。
我自己在面试推荐算法工程师的时候几乎没有推荐相关的经历,但是最终也顺利拿到了offer。
我原来见过有些做CV的同学只做一个具体的方向,比如2D的目标检测,对CV领域其它的热门方向比如语义分割、人脸识别等等都完全不了解。我感觉这就不太可取了,至少要保证一个大方向的主流方向都有所涉猎,最好能对整个AI领域的各个方向都有一定了解。
【2】在公司尽量去能够落地的核心业务
现在AI的行情虽不说"盛宴已过",但相较之前疯狂的时期,确实有所冷却。工业界也普遍更加理性了,不像几年前一样疯狂地追逐顶会数量之类的噱头,更看重落地和解决实际问题。
在这样的背景下,最好自己所做的东西对于公司来说是刚需,而不仅仅是锦上添花的噱头。
当然我并不是说CV就不是刚需了,这个得看业务场景。比如在机器人公司、在自动驾驶公司,那CV就是绝对的刚需,毕竟需要去感知周围的环境。但是在互联网公司的很多业务,CV在大多数场景下都不那么刚需了。
【3】对AI的长期发展还是要有信心
我还是坚信,在二三十年这个大尺度,AI是会给这个世界带来革命性的进展的。目前的低谷只是暂时的,未来世界的大趋势必然是智能化和自动化。
所以尽管算法工程师的行情已经渐渐从"诸神黄昏"演变成了“灰飞烟灭”,我还是建议有兴趣的人坚持这一条路。即使被行情所迫,暂时不能从事算法相关工作的同学,我也建议在业余课外学习一些跟机器学习相关的东西,保持对AI领域重大进展的关注。
已经在这行的同学,在被各种清洗数据、调参的琐碎工作折磨得生无可恋的时候,不妨仰望下星空。想一下这个行业未来激动人心的发展,想一下二三十年后AI已经渗透到千家万户的世界。相信多年之后再回首,会发现我们参与了一个最好的时代。
最后,发一个招人广告:
我们团队(字节跳动-Data-抖音/抖音火山版/直播团队)现在在招推荐算法工程师,欢迎来聊。
社招/校招/实习都可以,base北京或者深圳
详情见 熊风:【算法工程师招聘】字节跳动-Data-抖音/抖音火山版/直播团队 结论:没什么好选的,想在这个行业混就样样精通或掌握,什么都会,像前面答主说的多刷leetcode,好跳槽。
在这个行业也混了几年了,除了CV没做过,其他都做过。
有时候你想做什么不是你能选的,而是公司想做什么你就得做什么,领导想研究什么你就得做什么,客户想做什么你就得做什么?
另外让你满意的且刚好适合你的工作机会并不是那么好找。
所以当领导问你,会NLP吗,你要说我懂可以去研究一下,会风控吗?你说关于一些业务知识我去研究一下,会推荐吗?这个我会,您的需求是什么?
工业界的应用用到的算法没有什么难的,就那几个,也是经过了考验和证明的,最主要是能落地,所以只要你接到任务,找找开源学习一下,自己改一改,一个能勉强上线的应用就出来了,后续的,持续优化就可以了,优化到业务人员满意为止。
优化期间多读一读论文,找找灵感,对相应的优化目标提升,不断的去尝试,多试错。
任何工作,都是不断拓宽自己的边界,不要局限自己,所以算法工程师不光要懂算法,开发的活你也得会,让你设计一个系统你得会,多种语音你得会,多种技术栈你得会。
所以不要给自己限定界限,多学习,多研究,多刷leetcode,多总结,你才是一个合格的算法工程师。 今年跳槽到某银行,看到很多答主都在说风控可以把银行作为后路,我就抛砖引玉,讲一下银行业里对CV NLP风控 推荐这四个领域的应用情况吧。
风控
先说风控。银行的风控在模型层面不会太复杂,lr是最主流的,用得相对复杂一点的就是xgboost,绝绝绝大部分时候不会上深度学习的模型。在运行层面上,部分风控模型对时效要求非常高,实时交易风控的策略+模型一般都是50ms之内就要出结果,这一方面就决定了不可能上特别复杂的模型,另一方面,模型外面必定会套一层兜底规则,以应对模型超时的问题。
在模型的建模和分析层面,风控模型会特别注重PSI,KS,AUC,LIFT,GINI等指标,还会对每个变量的重要性,偏移等进行非常细致的分析,非常强调可解释性。因此风控主要还是结合业务场景做数据分析和特征工程这一块,还有一个非常重要但是很多做机器学习出身的人鄙视的,就是强业务规则,其实很多场景强业务规则if else就已经解决了一大部分问题了。现在不少业务规则还是先用数据分析的各类方法跑出来一些结果,然后手工把这些结果配进规则引擎里运行的。
另外, 虽然模型可能是python写的,但是结果分析与模型检验很多时候还是基于SAS来做的…至于这边用的一些新技术,主要还是基于图的一些算法,近一两年来也是逐步在落地在类似信用卡套现团伙侦测等场景。
推荐
再说推荐。当你打开银行的APP时,一堆眼花缭乱的弹窗、活动栏位就是银行的推荐系统推的东西了。这一块在大行或者股份制银行里面的都是有推荐系统在后面支撑的,其实近年来这一块倒是逐渐脱离手工化,一般手工只配兜底规则,不配/少配具体的栏位了。而用上机器学习的场景,用的deepFM/DIN之类的模型,相对而言与互联网的工业界在模型层面还不那么落后。
不过问题在于,虽然银行一般都会有一定的数据基础(至于数据脏不脏另计)可以用于推荐系统的模型食粮,但银行APP的核心还是转账交易与账单查询,推荐系统做的东西还不是银行APP的核心功能。换句话说,如果今日头条和抖音没了推荐系统在背后支撑,那这两款产品就完了,但是银行APP没了推荐系统,还是照样跑,只是盈利增长没那么快而已。因此,推荐系统在系统层级的重要性,以及领导的重视程度方面,其实是不及风控的。不过推荐系统也有一些好,比如做法整体更偏互联网化,比如更习惯于A/B test来看模型效果,而不是像风控条线喜欢做统计检验,等等。
CV、NLP
最后说CV和NLP。CV和NLP在银行中的应用地位相对有限。CV通常就是OCR和刷脸等,OCR用于识别一些进件材料或者票据,例如身份证,银行卡的卡面信息识别,各类发票等,这些都是非常成熟的产品,所以往往这些产品是直接外购的,不需要银行内部再造轮子。NLP的应用亦是如此,比如一些应用内的搜索,还有智能客服对话等等。一般来说,CV和NLP解决的问题相对而言更标准化,银行会更倾向于外购现有产品,或者通过外购+驻场定制化开发的方式来应用落地CV和NLP场景。换句话说,如果做CV或者NLP来到银行,更有可能做的是类似项目管理的工作,而不是实际的搭模型、算法开发方面。
所以综上所述,在银行里面,这4个方向中风控无疑是最接近核心的一个方向,但是这个方向其实和互联网行业的“算法工程师”做的区别还是不小的,无论是方法论方面还是语言(python<->sas)方面。推荐系统角色定位相对边缘,但是做事的方法和互联网更贴近,不过DAU,PV等数据量肯定不如互联网企业,反过来说,对于系统时效性要求也没有那么高。而CV和NLP来了很大可能不是做本行,而是转PM方向,能不能进,看有没有坑位,而不在于技术上的要求。不过现在在银行科技在转型的形势下,估计这种养老职位会越来越少。
update
讲一下现在银行业的一些新的发展方向(可能有别于互联网公司的)
第一个是联邦学习。联邦学习的解决的本质需求就是,数据持有方怎么通过各种加密/隐私数据通信的方法,能合法合规的把数据卖出去;对于银行侧来说,则是怎么去获取这些数据以应用在风控等场景。除了FATE开源背后的主导方微众外,还有不少公司也有在做联邦学习,比如自身就有很多数据的*讯、*节等,另外一类公司是只做框架,然后同时承担起数据中间商这么一个角色的,比如*盾、*新等。在实践过程中,还是会遇到很多问题,比如id撞库时如何把数据带出银行的数据库(合规审查方面);框架不统一,所以每接一方的数据都要重新开发(在联邦学习中并没有像SWIFT这样的全球通用的协议);训练过程对于网络带宽要求非常高,普通的专线都难以满足网络带宽要求,训练速度比通常的单机/非加密的分布式算法要慢100倍的量级,等等问题。不过,即使有这么多困难,银行业还是很愿意推进这个事情的进展,在新用户的信用评分、欺诈识别,信用卡团伙作案等等方面上,现在可能只有引人行等信息,但加入了其他的数据源,引入了外部数据,帮助还是非常大的。
第二个是自动机器学习,亦即AutoML。首先大家看到automl可能会想起NAS系列,但银行基本上不会用NAS的方法进行深度学习网络结构上的探索。automl的应用更多的是在传统机器学习(LR、GBDT等)方法中,进行自动拼表、自动特征工程和自动调参/模型选择上面。automl出现的背景主要还是银行往往是有很多数据分析团队,不过机器学习建模团队通常规模不会特别大,然而各个业务部门/条线的对机器学习建模需求很旺盛,但是各业务上的做算法模型又必须熟悉业务,因此解决办法基本上是两条路,一个是业务部门自行组建算法团队,另一种就是引入automl的方法/框架/平台,在尽量减少人力投入的情况,更快速的上线算法模型。不过这个比较偏机器学习平台的建设,和算法建模还是有点区别。
PS:这个答案说的是答主在某银行看到的现状,在银行业可能可能有一定的共性,但切勿套用在互联网和独角兽企业上。需要看互联网和独角兽的情况请参照其他回答。
第二次update
答主入职银行也两年多了。随着最近一年互联网多个方向承压,毕业新闻不断,所以很多人都想找银行之类的相对稳定的地方待,最近的评论区和私信在这方面的咨询倍增,也让我感受到了。不过,这两年在银行里也不像之前那样比较能划水躺平了,也开始卷起来了。究其原因我认为主要有两个方面。第一个是,银行的算法团队这两三年来吸收了不少从一二线互联网或者华为等公司过来的人,在工作氛围上带来了一定的“卷”风。第二个是,不论是互联网也好,还是银行也罢,相对好做的、效益明显的算法应用场景,大多已经有算法模型在应用了,甚至有的模型在一两年时间都迭代了五六版甚至更多的的,剩下的场景要么流量小预期收益低,要么技术难度大做不好,结果算法团队都削尖脑袋在想场景,想新的idea,自然也就卷了。
另外说一个点,前几年经济形势比较好,投资人都愿意砸钱给互联网开新业务的时候,互联网的产品可能并不那么在意投入产出,更多的是在抢占市场占有率、在试错,可以容忍一定时间内的成本大于收入;但银行不同,每个项目在做之前都要预估成本和收入,如果收入预期不足,那可能连扩容GPU都成问题,做起项目来的自由度也会比较小。很多模型可能在还没开始做的时候,就已经被否了。这也是让人比较郁闷一点。 成年人不做选择,我都要。(误)
在实际工作中,除非你是做纯研究,专注在一个领域写paper的专才,否则我默认你是在业务团队做算法,而为了解决业务问题,解决思路通常是不唯一且多方面的。比如
如何提高广告收益?
你可以通过优化已有的深度学习模型,去更好的利用已有的特征(推荐)
也可以去深度挖掘广告里的内容,提取出更好的内容表征(计算机视觉/自然语言处理)
还可以通过过滤掉低质量的内容和用户,间接提高收益(风控)
搞活动拉新(非技术)如何减少网络霸凌?
你可以通过个性化推荐模型,推荐更多温馨积极的内容(推荐)
也可以去深度理解用户内容,减少不良负面内容的发布(计算机视觉/自然语言处理)
还可以干掉那些煽动暴力的网络水军,维护正常用户的体验(风控)
请一些霸凌者喝茶(非技术)从以上例子可以看到,算法工程师的思考点落在了如何解决具体的问题上。不再是举着推荐/CV/NLP的锤子去找钉子,而是面对一个又一个公司业务挑战,去思考最合适的方案,去不断推动公司核心业务,完成团队核心指标,成为一个能用最先进技术解决实际问题的综合性算法人才。
当然,要往这条路走,需要付出的精力很多,要看很多paper,既要懂技术也要懂业务,甚至还需要懂很多非技术的解决方案,欢迎一起交流讨论。 选方向不如选部门。进大公司的搜索、推荐、广告部门的话,干的活直接涉及流量和变现,任何方向都很有前途。去一些人工智能实验室之类的部门的话,如果团队没有能为公司赚钱的业务,可能就只剩下“体面”了。
实在纠结方向的话,推荐>NLP>=CV>风控。
页:
[1]