阿里 AI 算法工程师的 7 年总结,内部经验放出(文末附教程)
入行前5年在一家上市游戏公司做算法,从数据挖掘算法在业务线落地开始,涉及机器学习、深度学习,后来逐步负责整个算法团队建设。
现在在阿里,也是负责算法方面的工作,涉及到的领域涵盖CV、NLP、架构等,业务线也扩展到广告、运营、客服、风控等各个方面。
算法岗竞争很激烈吗?
在外行人眼中,算法工程师可能拿到最近某大神新发的Paper,或者自己钻研理论推公式产出理论成果,通过并行编程实现其支持大规模数据训练,然后打败现有模型,ctr提升200%,收入提高200%,年薪百万。然而实际情况是:
理想中的算法工程师:提出假设->收集数据->训练模型->解释结果。
实际中的算法工程师:提出假设->收集数据->预处理->预处理->训练模型->调试->调试->重新收集数据->预处理->收集更多数据->调试->调试->调试->…->放弃
特作为算法部门负责人,我曾经面试过很多候选人,通常我会从逻辑思维、基础算法与数据结构、数学、深度学习、表达能力和工程经验等几个方面考察。
我发现其实很多人只是自认为懂得算法,刷了一遍西瓜书就敢出来面试了,另外有数理基础的应届生,算法掌握得也不错,但实际3年可能写了不到1000行代码,实操能力极差。
在面试了好几个简历优秀的年轻人后,我惊讶得发现原来很多初学者对数据分析/数据挖掘/机器学习工程师等岗位实际上的工作流都不是很了解,导致职业技能偏差。这就是为什么,企业收到的简历越来越多,但公司实际可用的就那么一两个,而且开价超预算50%,忍痛签下还可能被同行挖走了。
那么算法岗位具体的工作流程是怎样的?
我们先来用一个小型NLP项目流程来举例,让大家了解机器学习项目的大的环境:
1.了解需求,获取数据。与产品和运营开会,了解需求,然后提取公司积累大量的数据和自己网上下载、爬取的数据。
2.数据预处理。数据处理大概会占到整个50%-70%的工作量,永远记住好的数据要优于好的算法。我们通过数据洗清、分词、词性标注、去停用词四个大的方面来完成语料的预处理工作。
3.特征工程。做完语料预处理之后,接下来需要考虑如何把分词之后的字和词语表示成计算机能够计算的类型。把中文分词的字符串转换成数字,有两种常用的表示模型分别是词袋模型和词向量。
4.特征选择。构造好的特征向量,是要选择合适的、表达能力强的特征。特征选择是一个很有挑战的过程,更多的依赖于经验和专业知识,并且有很多现成的算法来进行特征的选择。
5.模型训练。对于不同的应用需求,我们使用不同的模型,传统的有监督和无监督等机器学习模型,如 KNN、SVM、Naive Bayes、决策树、GBDT、K-means 等模型;深度学习模型比如 CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。
6.评价指标。训练好的模型,上线之前要对模型进行必要的评估,目的让模型对语料具备较好的泛化能力。
7.模型上线应用。模型线上应用,线下训练模型,然后将模型做线上部署,发布成接口服务以供业务系统使用。
从以上流程来看,完成一个机器学习项目除了基本的编程语言、数学、大数据分析、算法外,在对业务理解上也提出了很高的要求。
不难发现,在对待具体业务上,算法工程师如何通过“实践”提升自己的机器学习水平,以及如何通过机器学习/深度学习实际应用来改善企业的业务等级和营收能力至关重要。
我经常说算法只是工具,重要的是在正确的行业和产品认知上,实现业务目标。
所以有人恐慌算法工程师会被自己的算法替代,这是极其可笑的。机器可以做的虽然很多,但是无法代替人对数据的理解,这是算法工程师存在的价值。而Deep Learning虽然在某种程度上代替人提取特征,但是它最多只能解决特征变换问题,仍然处理不了数据清洗和预处理中需要用到领域知识的情况。
在我的经历里,我倾向于算法工程师是技术+产品经理为一体的综合型人才。
而对于跨专业的学生/从业者来说,跨界反而是优势,不是障碍。特别是如果你作为本身是一个其他行业(物理,工程,化学,医学,农业,卫星地图识别,网络安全领域,社会科学)的普通程序员,在本行业有比较深的理论和实验背景,能接触到海量数据,那么你完全可以做一些创新性和交叉性的工作,这就是人工智能+的人才。
现在有很多的机器学习课程和教科书,它们大都是关于如何从零开始制造烤箱,而不是如何烹饪和创新配方。这种学习路径不仅仅难度大,而且90%的学习者没有在一个方向上深入,不具备核心能力,也不符合企业的人才观。
福利:
将为你解答以下疑问:
我适合学习人工智能吗?我是医学生,现在AI医疗就业情况怎么样?数据分析/数据挖掘/算法工程师的区别及能力模型?算法工程师对算法需要理解到何种程度?模型选择和参数调优技术,是否是通用的?深度学习算法的应用场景……(~你的所有疑惑,在这里将全部解决!)
《机器学习从入门到实战视频课程》
一、Linux与python编程基础
1. vmware虚拟机的安装
2. centos6.9操作系统的安装
3. linux基本命令使用
4. python介绍
5. python安装
6. python环境安装
7. 第一个python程序
8. pycharm(Python开发神器)的使用
9. 变量、整型、浮点型、字符串类型
10. 空值、布尔值、列表、元组、字典、集合
11. if条件语句、input函数
12. 循环语句
13. 函数介绍、函数的定义、函数的调用、函数的参数
14. 函数的返回值
15. 全局变量和局部变量
16. 学生管理系统框架
17. 学生管理系统的增加和查看模块的编写
18. 学生管理系统的修改和删除、家庭作业
二、Python数据分析
19. Python数据科学入门
20. Python常用库介绍
21. 数据分析环境搭建
22. Numpy数据类型和索引的处理
23. NumpyAPI和矩阵运算
24. Numpy高级特性和通用函数
25. Panda概述和Serise
26. Pandas_DataFrame精讲
27. DataFrame和Series的索引
三、大数据与数据处理
28. 大数据是什么
29. 大数据,人工智能,机器学习三者的关系
30. 数据量与高并发(高并发一定是代表数据量大吗?)
31. hadoop精讲:HDFS简介,架构组成,实操演练
32. hadoop精讲:Mapreduce简介,Wordcount实例,框架流程
33. spark简介,环境搭建,集群安装,实例演示
四、机器学习入门
34. 机器学习简介
35. 机器学习开发环境
36. 机器学习IDE介绍
37. 机器学习基础理论与哲理
38. 机器学习算法分类
39. 机器学习常见任务
40. 数据清洗
41. 数据标准化
42. Python与Sklearn数据标准化实践
43. 机器学习中的相似性度量
44. KNN算法
45. 案例:基于 KNN (sklearn)的鸢尾花卉数据分类
46. 案例:基于 KNN(python)的鸢尾花卉数据分类
47. 一元线性回归
48. 多元线性回归
49. 多项式回归
50. sklearn线性回归实践
51. python线性回归实践
52. 案例:基于线性回归的广告收益分析实战
53. 逻辑回归分类算法
54. 二分类分类器处理多分类问题
55. 案例:基于逻辑回归(sklearn)的鸢尾花卉数据分类
56. 案例:基于逻辑回归(python)的鸢尾花卉数据分类
五、机器学习5大实战
57. 前言
58. 准备工作
59. 高端又一般的词云
60. DCgan人脸图片生成
61. 股票价格预测
62. Tensorflow物体检测
63. 天马行空的Deep Dream
福利领取:,包含python基础、数据分析、大数据、机器学习、实战等五大类目的精华干货视频,课件和源码~
私信小编回复“学习”即可领取!