关闭

算法工程师的危机

时间: 2018-10-17阅读: 1121标签: 算法

9月20号讯飞AI同传语音造假的新闻刷爆科技圈,科大讯飞股价应声下跌3.89%(不是65.3%,标题党文章害死人)。 吃瓜群众纷纷感慨,有多少人工,就有多少智能。

AI概念在2015年起就红得发紫,不论是送外卖,搞团购,卖车,或是推荐莆田医院的,是个公司都会标榜自己是搞人工智能的。在21世纪的第二个十年,计算机专业相关的学生不说自己是搞AI算法的,同学聚会都抬不起头,相亲机会都变少了。随便从一摞简历里抽出一份,一定会有AI,调参,CNN,LSTM这些关键词。未来最赚钱的职业,一定不是天桥贴膜,而是天桥调参,50块钱一次,一调就灵

NIPS会议,人满为患,改改网络结构,弄个激活函数就想水一篇paper; 到处都是AI算法的培训广告,三个月,让你年薪45万!在西二旗或望京的地铁车厢里打个喷嚏,就能让10个算法工程师第二天因为感冒请假。

谁也不知道这波热潮还能持续多久,但笔者作为一线算法工程师,已经能明显感受到危机的味道: 以大红大紫的图像为例,图像方向简历堆满了HR的办公台,连小学生都在搞单片机和计算机视觉。在笔者所在的公司,人工智能部门正在从早前研究院性质的组织架构分别向前台和后台迁移:前者进入业务部门,背上繁重的KPI,与外部竞争者贴身肉搏;后者则完全融入基础架构,像数据库一样普通和平凡。之前安逸的偏研究生活被打破, AI早已走下神坛。

以笔者愚见,对于一般的算法工程师,这种危机包含两部分:一方面是来自人的竞争,大量便宜的毕业生和培训生涌入这个行业,人才缺口被迅速填满甚至饱和,未来的竞争会更激烈;另一方面则是来自机器的竞争,大量算法工程师会很快被他们每天研究的算法所代替。 这两者互相恶化,AI人才市场终会变成一片红海。


连小学生都会写模型

工具框架本身的发展,让设计模型所需的代码写得越来越简洁。10年前从头用C++和矩阵库实现梯度下降还是有不小的门槛的,动辄上千行。而当今几十行Keras甚至图形化的模型构建工具,让小学生都能设计出可用的二分类模型。强大的类库吞噬了知识,掩盖了内部的复杂性,但也给从业者带来了不小的惰性。从业者的技术水平,和使用模型的复杂程度关系不大,越是大牛,用的技术更底层更make sense。

不仅如此,深度学习本身的性质,造成了明显的数学鸿沟。与SVM, 决策树不同,由于模型存在大量的非线性和复杂的层次关系,且输入信号(例如图像,文本)也很复杂,因此严格的数学论证是需要极高的抽象技巧的。该方法为什么好,在什么类型的数据上好,有时连作者都在拍脑袋,很多state of arts的方法,成了口口相传的经验和trick,而非严谨的theory。 连batch normlization(批规范化,只包含四个初中数学级别的简单公式)为何有效,都被争论了好几年。只有凤毛棱角的专家,能深入到模型最深处,用数值分析和理论证明给出严谨的答案。 大部分人在入门后便进入漫长的平台期,美其名曰参数调优,实际就像太上老君炼丹一样。

我们把这种现象绘制成下面的AI学习曲线,左侧是稍显陡峭的入门期,需要学习基本的矩阵论,微积分和编程,之后便是漫长的平台期。 随着复杂性越来越高,其学习曲线也越来越陡峭,大部分人也就止步于此。 越来越易用的工具,让曲线左侧变得平坦,入门期变短,却并不能改变右侧的陡峭程度。


入门容易深入难,这条曲线同时也能描述AI人才的收入水平。而真正处于危机的,莫过于夹在中间的芸芸众人:对理论一知半解,对工具非常依赖。可替代性很强,一旦AI浪潮过去,就知道谁是在裸泳

市场和业务变化越来越快,能有哪些核心业务,是能让工程师静心调个一年半载的呢?当一个从培训学校里出来的人都能做模型时,有多少业务能让公司多花两三倍的人力成本,而仅带来1%的性能提升呢?


机器都能调参,要你干吗?

面向大众AI科普节目,最常讨论的便是“AI时代如何不被机器所取代”。很不幸,最容易且最快被取代的反而是算法工程师。

算法岗比工程岗更容易被取代。 在现有技术下,由于业务需求的复杂性, 自动生成一套软件App或服务几乎不可能的(否则就已经进入强人工智能时代了),但模型太容易被形式化地定义了。根据数据性质,自动生成各个领域的端到端(end2end)的模型也逐渐在工业上可用了:图像语音和广告推荐的飞速发展,,直接套用即可。理论和经验越来越完善,人变得越来越可替代。

以前需要大力气搭建的数据回流和预测的链路,已经成了公司的基础组件,数据工程师没事干了; 特征可以自动生成和优选,特征工程师失业了; 深度网络采用经典结构即能满足一般业务需求,参数搜索在AutoML下变得越来越方便,调参工程师的饭碗也丢了 。 此处引用老板经常说的一句话:机器都能干了,要你干吗?

从目前AI热门论文的情况看,广告推荐领域已经逐渐成熟,很多技巧沉淀为一整套方法论,已进入平台期;下一个即将被攻陷的领域应该是图像;而文本由于其内在的抽象性和模糊性,应该是算法工程师最后的一块净土,但这个门槛,五年内就会有爆发式的突破(本文发布两周后,谷歌BERT横扫11项NLP任务记录,麻蛋)。


如何最优化职业发展?

人工智能已经火了至少五年,它在未来五年是否火爆我们不能确定,但一定会更加两极化:偏基础的功能一般程序员就能搞定,像白开水一样普通。而针对更复杂模型甚至强人工智能的研究会成为少数人的专利。

在一般的技术公司,传统意义的软件开发和产品设计,远比AI算法的需求来的多。算法永远是锦上添花,而非雪中送炭,再好的算法也拯救不了落后的业务和商业模式。一旦经济下行,企业首要干掉的就是锦上添花且人力成本较高的部分。

如果你是顶级的算法专家,这样的问题根本不需担心。但是,对大部分人来说,如何找到自己的梯度上升方向,实现最优的人生优化器呢?

//此处该插播广告,报价最少1万吧
//但沙漠之鹰就是有节操,不插,不插,就是不插。

笔者给出一些不成熟的小建议,供读者抛砖引玉:

首先是深入原理和底层,类似TensorFlow的核心代码至少要读一遍吧?就算没有严格的理论基础,最起码也不能瞎搞啊。 切莫不能被工具带来的易用性迷惑双眼。要熟悉工具箱里每种函数的品性,对流动在模型里的数据有足够的嗅觉,在调参初期就能对不靠谱的参数快速剪枝。

其次,工程能力不能丢,笔者见过太多做算法眼高手低的例子了(比如自己):一个文件写所有,毫无架构和封装;遍地是临时方案和trick,前人挖坑后人栽;稳定性考虑不足,导致线上服务经常挂掉。 没有工程和架构的积累,在团队作战时可能还不是太大问题,单兵打天下则处处碰壁。

按个人理解,做算法带来的最大收获是科学精神和实验思维,这是做工程很难培养出来的。以前看论文看了introduction和模型设计,草草地读一下实验结果就完事儿了。殊不知AB实验设计很可能才是论文的核心:实验样本是否无偏,实验设计是否严谨,核心效果是否合理,是否能证明论文结论。也许一行代码和一个参数的修改,背后是艰辛的思考和实验,做算法太需要严谨和缜密的思维了。即使未来不做算法,这些经验都会是非常宝贵的财富。

再者是尽早面向领域,面向人和业务。AI本身只是工具,它的抽象性并不能让其成为各个领域的灵丹妙药。 如果不能和AI专家在深度上竞争,就在业务领域专精深挖,拥有比业务人员更好的数据敏感度,成为跨界专家。现在已经有大量AI+金融, AI+医疗,AI+体育的成功案例。 人能熟悉领域背后的数据,背后的人性,这是机器短时间内无法代替的,跨界带来的组合爆炸,也许暗含着危机中的机会吧。

笔者同样处在迷茫期,有想法和见解的朋友欢迎留言。最后感慨一下,同样是80后,年龄相差无几,有人已是副总裁,有人带了几个人的小团队,有人还在基层苦苦挣扎,轨迹在毕业时分叉,几年后早已沧海桑田。


作者:热情的沙漠 
出处:http://www.cnblogs.com/buptzym/   


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1158

关闭

前端Js排序算法:冒泡排序、 选择排序、快速排序

典型的排序方法,命名来自鱼呼吸时吹出的气泡,上层的气泡总是最大的。选择排序:顾名思义,每次都选择最小的,然后交换位置,快速排序思路:二分法,先找一个基数

JavaScript十大排序必修算法

冒泡排序通过相邻元素的比较和交换,使得每一趟循环都能找到未有序数组的最大值或最小值,双向冒泡普通的冒泡排序在一趟循环中只能找出一个最大值或最小值,双向冒泡则是多一轮循环既找出最大值也找出最小

Js常用的算法教程

Js常用的算法教程 深度广度、冒泡选择、防抖节流等,函数在调用倒计时n时间内没有重复调用,则执行函数,不然重新倒计时

Vue2.x的diff算法记录

为什么在Vue3.0都已经出来这么久了我还要写这篇文章,因为目前自己还在阅读Vue2.x的源码,感觉有所悟。作为一个刚毕业的新人,对Vue框架的整体设计和架构突然有了一点认知,所以才没头没尾地突然写下了diff算法。

一些常用的语音特征提取算法

语言是一种复杂的自然习得的人类运动能力。成人的特点是通过大约100块肌肉的协调运动,每秒发出14种不同的声音。说话人识别是指软件或硬件接收语音信号,识别语音信号中出现的说话人,然后识别说话人的能力

Js实现kmp算法_字符串查找算法

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息

JavaScript算法练习:乌托邦树

对于今天的算法,我们要写一个叫做 utopianTree 的函数,它只接受一个输入:一个整数 n。我们有一棵乌托邦树,每年要经历2个增长周期。在春季,高度增加一倍,在夏季,高度增加1(无论您要使用哪种测量系统)

React 中 Virtual DOM 与 Diffing 算法的关系

Virtual DOM 是一种编程理念。UI 信息被特定语言描述并保存到内存中,再通过特定的库,例如 ReactDOM 与真实的 DOM 同步信息。这一过程成为 协调 (Reconciliation)。上述只是 协调算法

JS 洗牌算法

最近的一个塔罗牌项目中,有一个洗牌的需求,其实也就是随机打乱数组,遂网上搜了下,再此做个整理…塔罗牌,举例来说,我们有一个如下图所示的数组,数组长度为 9,数组内元素的值顺次分别是 1~9:

js实现合并两个有序数组

给定两个有序整数数组arr1和arr2,将 arr2和arr1进行合并为一个单调非递减的数组,并将其输出。方法一利用循环、方法二直接使用数组的sort方法。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!