淘系技术部 | 算法技术 琦舞
“除了必备的工程能力,一个合格的算法工程师必须要有业务owner和产品的视角“
他们大致可以分为两种,一种热爱技术,热爱代码,热爱钻研,热爱算法,擅于将现实业务问题抽象成算法模型,对代码和算法情有独钟;另外一种情商高,擅长管理,对下的疏通和对上的汇报都极其出色,很快就做到了管理层,这种需要有一定的机遇和智慧,我身边多数人属于第一种。
聊聊工程能力的重要性
拿舞蹈来举例,如果我们把算法训练出的模型比作一支成品舞,那么工程能力就是舞蹈基本功。如果完全没有练习过基本功,或者基本功差,手脚不协调,通过努力,你也可以学会这支成品舞,但却离艺术和美感度相差甚远。如果基本功非常扎实,那么你学任何一支新舞,皆是水到渠成自然而然之事。如果你工程能力很强,基本功扎实,在工作过程中需要解决一些实际问题时,便可以很快上手解决,理论和实践之间,就差一双手。
聊聊工作中必备的工程能力。(一个算法工程师不会写代码,正如一个裁缝不会裁剪。)
一名合格的算法工程师必须要具备的工程能力:
-
debug。快速定位问题的能力十分宝贵。这点是最重要的。
-
python、java、c++等,这三种编程语言很重要,使用的频次从高到低。模型离线训练时需要用到python(无论是tensorflow还是pytorch框架),线上serving或者实现定制化的算法策略时,一般用java实现,线上Query predict服务一般用c++实现。
-
推荐多看一些优秀的语言类书籍,对自己编程习惯的养成很有帮助,多看书多思考多写代码多实践,代码肯定会越来越6的。后面我会写一个专题,与大家分享对我有帮助的一些算法/语言类技术书籍。
-
hive sql。这是工作中使用频次很高的语言,我们都是sql boy/sql girl。
-
shell、Awk等。快速处理数据以及调用一些python、java脚本时,经常会用到。
-
scala:在我工作的前几年用spark比较多,训练非深度模型很方便,与hive sql的交互也十分方便。
-
对分布式框架的理解。这个非常重要。比如tensorflow框架中的ps/worker/chief是怎么协同工作的,参数更新在哪里,模型训练在哪里?
除了必备的工程能力,一个合格的算法工程师,并不仅仅是算法工程师,他必须要有业务owner和产品的视角。
有些时候,算法效果提升遇到瓶颈时,不妨想想,从用户角度出发,从产品层面出发,是否还有更好的切入点。我们也应该深入思考业务运行机制,从投放供给端,通过冷启,到召回,到粗排,到精排,最后到排序机制,哪个链路都有可能出问题,哪个链路都有优化点,所以说,一个全栈全链路的算法工程师是稀缺的人才。供给/召回/精排/机制的联动优化,才有可能使线上效果取得质的飞跃。
一个优秀的算法工程师,既可以玩转模型,又对产品有独到的见解和思考。比如信息流推荐场景的优化,当你作为一个真实的用户去体验推荐视频流时,就会很容易发现一些产品或者系统层面的问题,然后再回归到算法,用技术手段或与产品合作去解决这些问题。只有这样,公司的产品才有可能越做越好,算法优化的天花板才会越来越高。
03
淘系技术部 | 算法技术初类
“对一名有技术追求的算法工程师而言,一定要保持一颗好学的心。“
本科4年,计算机专业,主要是入门计算机领域、接触了C++和python等编程语言;硕士3年,计算机专业,主要是入门机器学习和深度学习算法(图像识别方向);现为淘系技术部的一名算法工程师(应用算法),入职时间约为600+天,主要涉及的算法是销量预估和人群选品。我们是一支离业务非常近的算法团队,核心定位是“业务认知top1,沉淀差异化的技术壁垒”。也就是说,我们的算法策略在很大一定程度上决定了业务结果。
从一名紧密贴近业务的算法工程师来回答该问题,观点如下:
业务认知&问题定位
首先要清楚你所要解决的问题是什么,是否需要复杂的算法求解。问题的定义来源于你对业务的认知和理解。我们经常陷入一种误区,觉得自己是一名算法工程师,遇到任务问题都想要用复杂的算法去求解。正所谓一顿操作猛如虎,得来的效果却很一般。因此,做事之前一定要在理解业务的基础上,把问题定位清楚,用合适的方法求解。
数据挖掘&分析
深度学习的应用能够突飞猛进的一个重要原因就是大数据的支撑。当前获取数据的成本很低,而数据清理和挖掘的成本很高,但非常重要。数据是模型的输入,是模型能够拟合的上限。在入模之前,你需要花一定的精力用于数据工作,这是必要也是值得的。因此,掌握数据能力也是一名算法工程师的必经之路。
算法策略
这是每位算法工程师的硬实力,有了清晰的问题和可用的数据后,我们需要选择合适的算法策略求解问题。就销量预估而言,由于特征大部分都是表格型,树模型及其变体成为首选的方案。通过树模型,你能够快速拿到一个不错的baseline。但千万不要停滞不前,你需要调研更多的先进的方案进行优化,即使此时能够拿到的收益不多,但请坚持专研的精神(近期时序模型中,热度很高的informer值得尝试)。此外,“人工智能,有多少人工就有多少智能”这句话在实际应用领域体现得淋漓尽致。策略也属于算法的一部分,人工策略有时候能够带来很大的受益,也能够找到更适合的算法优化方向。例如,我们在优化首猜的货品池时,考虑到首猜目前的推荐算法已经非常优秀了,但消费者的成交来源主要是搜索,我们通过人工分析选择了做增量货品供给的方式,拿到了不错的业务效果。基于此,我们也找到了更合适的选品算法优化方向。
离线实验和线上AB实验
实验是验证理论的最佳手段,也是最具有说服力的。我们需要找到几个合适的指标进行优化,并且要保证离线效果跟线上效果没有太大的gap。例如,销量预估领域主要用到的指标有WMAPE,结合选品业务的指标有topk商品的召回率。离线实验得到优化后,还需要到线上进行严格的AB Test。此时,我们就拿到了一个完整的实验及其结论。通过不断地迭代优化,沉淀各种优质的算法策略。
领域前沿论文
对一名有技术追求的算法工程师而言,一定要保持一颗好学的心。作为打工人,我们可能很难像在校期间投入大量的时间和精力去研究和复现前沿的论文。但一定要谨记,养成跟进前沿技术的习惯,每周至少花一定的时间去看论文,了解科研学者们在做些啥。高质量的论文,能够带来很充足的信息量。
其他
- 好记性不如烂笔头
及时梳理和总结很重要。组织架构可能会发生调整,导致你的方向发生改变。因此,我们要养成阶段性的总结和沉淀。
- 勤学好问
身边有很多优秀的小伙伴,跟大家融洽地相处,更多的交流和讨论,这或许会加快我们成长的速度。
- 参与技术分享
听别人讲,讲给别人听。我们团队有融洽的技术分享氛围,互相分享近期专研的技术。你可以从别人身上学到很多宝贵的经验和知识,也检验自己是否真正了解某项技术。
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
面试经验技巧篇
- 经验技巧1 如何巧妙地回答面试官的问题
- 经验技巧2 如何回答技术性的问题
- 经验技巧3 如何回答非技术性问题
- 经验技巧4 如何回答快速估算类问题
- 经验技巧5 如何回答算法设计问题
- 经验技巧6 如何回答系统设计题
- 经验技巧7 如何解决求职中的时间冲突问题
- 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
- 经验技巧9 在被企业拒绝后是否可以再申请
- 经验技巧10 如何应对自己不会回答的问题
- 经验技巧11 如何应对面试官的“激将法”语言
- 经验技巧12 如何处理与面试官持不同观点这个问题
- 经验技巧13 什么是职场暗语
面试真题篇
- 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
- 真题详解2 某知名社交平台软件工程师笔试题
- 真题详解3 某知名安全软件服务提供商软件工程师笔试题
- 真题详解4 某知名互联网金融企业软件工程师笔试题
- 真题详解5 某知名搜索引擎提供商软件工程师笔试题
- 真题详解6 某初创公司软件工程师笔试题
- 真题详解7 某知名游戏软件开发公司软件工程师笔试题
- 真题详解8 某知名电子商务公司软件工程师笔试题
- 真题详解9 某顶级生活消费类网站软件工程师笔试题
- 真题详解10 某知名门户网站软件工程师笔试题
- 真题详解11 某知名互联网金融企业软件工程师笔试题
- 真题详解12 国内某知名网络设备提供商软件工程师笔试题
- 真题详解13 国内某顶级手机制造商软件工程师笔试题
- 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
- 真题详解15 某著名社交类上市公司软件工程师笔试题
- 真题详解16 某知名互联网公司软件工程师笔试题
- 真题详解17 某知名网络安全公司校园招聘技术类笔试题
- 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题
资料整理不易,点个关注再走吧
详解13 国内某顶级手机制造商软件工程师笔试题
- 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
- 真题详解15 某著名社交类上市公司软件工程师笔试题
- 真题详解16 某知名互联网公司软件工程师笔试题
- 真题详解17 某知名网络安全公司校园招聘技术类笔试题
- 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题