算法工程师的危机

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

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

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

js中常用的基础算法

今天给大家分享一下js中常用的基础算法,废话不多说,直接上代码;两个数字调换顺序;对象排序,安装对象中的id排序对象的位置;冒泡排序 ;随机出现不同的数字;字符串大小写互换

js二叉树的遍历算法

二叉树是非常重要的数据结构,其中一棵树最上面的点称为根节点,如果一个节点下面连接多个节点,那么该节点称为父节点,下面的节点称为子节点,二叉树的每一个节点最多有2个子节点,一个节点子节点的个数称为度,二叉树每个节点的度只能是0,1,2中的一个,度为0的节点称为叶节点。

用js在控制台打印九九乘法表

不管是打印什么样三角形九九乘法表,我们都应该找到有规律的地方,比如第一列的数字是什么规律,第一行的数字是什么规律,只要找到了共性,九九乘法表就很简单

Js哈希摘要算法

最近在看一些NPM库的时候总是看到各种哈希签名算法,之前工作中也有用到过签名算法,但并没有深入理解过其中的原理,于是找了点资料稍微了解了一下,总结了这篇文章。

程序员必知必会的10 大基础算法!

快速排序算法:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快

Js找出数组中出现次数最多的元素

给定一个数组,找出数组中出现次数最多的元素。给定数组 nums = [3,1,2,1,3,4,3,5,3,6,3], 函数应该返回: 次数最多的元素为:3, 次数为:5

细数20世纪最伟大的10大算法

在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列?

Js全排列的六种算法具体实现

六种算法有些是对位置进行排列,例如回溯、排序等,因为这样可以适应各种类型的元素,而非要求待排列元素一定是数字或字母等

js背包问题算法_JavaScript 背包问题详解

打算好好学一下算法,先拿背包问题入手。最开始的01背包耗时最多,以前只会枚举(就是普通的for循环,暴力地一步步遍历下去),递归与二分,而动态规划所讲的状态表与状态迁移方程为我打开一扇大门。

js实现快速排序算法的2种方式

通过两个for循环,每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置,这个方法就是比较次数太多了,效率比较低。

点击更多...

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