• 客服电话

    • 027-85768480
    • 服务时间

    • 24小时全天在线咨询
    • 扫码咨询微信客服

7年算法工程师对人工智能+人才的认知与解读

官网首页    资讯动态    技术干货    7年算法工程师对人工智能+人才的认知与解读

入行前5年我在一家上市游戏公司做算法,从数据挖掘算法在业务线落地开始,涉及机器学习、深度学习,后来逐步负责整个算法团队建设。

现在在阿里,也是负责算法方面的工作,涉及到的领域涵盖CV、NLP、架构等,业务线也扩展到广告、运营、客服、风控等各个方面。

在外行人眼中,算法工程师可能拿到最近某大神新发的Paper,或者自己钻研理论推公式产出理论成果,通过并行编程实现其支持大规模数据训练,然后打败现有模型,ctr提升200%,收入提高200%。然而实际情况是:

理想中的算法工程师:提出假设->收集数据->训练模型->解释结果。

实际中的算法工程师:提出假设->收集数据->预处理->预处理->训练模型->调试->调试->重新收集数据->预处理->收集更多数据->调试->调试->调试->…->放弃

作为算法部门负责人,我曾经面试过很多候选人,一般我通常从逻辑思维、基础算法与数据结构、数学、深度学习、表达能力和工程经验等几个方面考察。

我发现其实很多人只是自认为懂得算法,刷了一遍西瓜书就敢出来面试了,另外有数理基础的应届生,算法掌握得也不错,但实际3年可能写了不到1000行代码,实操能力极差。

在面试了好几个简历优秀的年轻人后,我惊讶得发现原来很多初学者对数据挖掘/算法工程师实际上的工作流都不是很了解,导致职业技能偏差。这就是为什么,企业收到的简历越来越多,但公司实际可用的就那么一两个,而且开价不菲,忍痛签下还可能被同行挖走了。

那么算法岗位具体的工作流程是怎样的?我们先来用一个小型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虽然在某种程度上代替人提取特征,但是它最多只能解决特征变换问题,仍然处理不了数据清洗和预处理中需要用到领域知识的情况。

在我的经历里,我倾向于算法工程师是技术+产品经理为一体的综合型人才。

而对于跨专业的学生/从业者来说,跨界反而是优势,不是障碍。特别是如果你作为本身是一个其他行业(物理,工程,化学,医学,农业,卫星地图识别,网络安全领域,社会科学)的普通程序员,在本行业有比较深的理论和实验背景,能接触到海量数据,那么你完全可以做一些创新性和交叉性的工作,这就是人工智能+的人才。

2019年6月14日 09:00
浏览量:0
收藏