担心就业?做一个ML工程师吧
——从一个软件工程师的角度,看机器学习
科创联 创新工程局 覃永良
今天,我们拥有全世界最大的码农群体,凡是通过编制计算机程序,就能按步骤解决的问题(可计算问题),已经不是太大的问题了。要做个动态网页?有框架,有模板,有开源代码,有无穷无尽的教程;要做个原生APP?要建个订单数据库?要写个HTML5聊天室?要统计公司10年的流水账?要在浏览器里显示3dsmax模型?我们每天都面对无数的IT需求,但其中99.9%都不过是把前人做过的事情,重做一遍罢了,或者叫“搬砖”。看来我们的码农质量并不高;正如这个美丽的国家的所有其他方面一样,我们从来都是以量取胜的。随着搬砖时代的到来,程序员不再像以前一样是创新的主力,只有越来越少的人会自己写点代码解决什么新问题,而大部分情况下都是在重复利用已有的代码。
年轻人,你为什么要搬砖?10年后,程序员这个职业将继续存在,但是正如中国的制造业一样,在低成本劳动力和肆意挥霍的资本消耗殆尽后、在大规模的泡沫和成灾的泛滥之后,等待着搬砖行业的,将是一蹶不振的萎靡,和可怕的恶性竞争。BAT裁员只是个开始,接下来我们将看到更加大量的劣质产能被逐步淘汰。想到黄埔师范的同学们还在看着朱军画质的视频在啃安卓和iOS,我感到了深深的忧伤,我们为什么培养了一堆搬得一手好砖但却毫无计科素养的学生?
然而,在搬砖业式微的同时,我们又产生了很多新的需求,这些需求存在于IT领域,需要的数据存在于计算机上,但却无法用冯诺依曼机在有限时间内解决。这些问题成了程序员的克星,无数码农绞尽脑汁想不出半句,而巨头如BAT者,则动辄上千工程师上百万代码,无数次GitHub checkout只为求个结果。这就有点像身为世界工厂的某国,造精密机械时却离不开海峡对岸的一个省。
无法用传统意义上的算法解决的问题有很多,举几个例子:
1. 输入一张名人合影,请标注图中所有名人的名字,已知所有名人的生活照。
2. 输入一个用户的历史淘宝购物记录,预测下个月将购买的货物清单,已知所有用户的历史购物记录。
3. 预测广州明天天气,已知地球上所有城市20年来每个小时的天气变化情况。
这些问题都是当下最需要解决的。而之所以难解决,是因为我们习惯了这样的一种程序设计方式:首先探究某个问题的规律,然后用数学描述这规律,然后将其转化成算法,然后用代码来实现该算法……而上面这些问题,难就难在它们所隐含的内在规律是如此的复杂,以至于无法用个人的有限智慧去探究,因而自然也就无法用数学描述。我们常说的某个程序员是大牛,多半是说这个程序员数学好、算法精,然而在这些无法用数学公式描述的问题面前,他们无能为力。这似乎是码农的极限。
上面这三个问题,其实人类都可以用大脑进行部分解决,比如天气的预测,最早就是由一群天气预报员投票决定;又比如你妈看一眼你上个月的账单,就知道你下个月会买什么了。这说明我们的大脑具有学习和思考能力,但我们无法把学习和思考的过程用程序描述,因为人的思考是一个连续的过程,不像一个函数有开头有结尾;人在思考中又能学习,不像一段代码是固定不变的;人有时还能根据重要性进行记忆和遗忘,不像一个数组永远等待着被操作。
但是人的大脑使用成本很高。比如所谓的鉴黄师,实际上就是在用大脑执行图像内容识别,不仅成本高,而且效率低。于是人类中最天才的一群科学家突发奇想:我们如果让机器获得学习和思考的能力,代替人来做这些事情,不就万事大吉了?
科学家们不再追究那三个问题的内在规律——这些内在规律是隐含的,只有人能用神经细胞和神经连接去“理解”和“学习”,所以科学家们就用计算机程序来模拟人的神经细胞及其连接,称为人工神经网络。我们每个人从小到大经历了一系列的学习,所以我们获得了复杂的认知能力;科学家们也让神经网络经历一系列的数据输入,对神经网络进行一系列的训练,最后神经网络成功地完成了许多原来只有人能完成的任务。于是科学家们继续深入研究,到今天,神经网络已经可以读懂人的表情,可以识别黑板上的字母,可以听懂英语广播并翻译成中文。这些任务都无法用传统意义上的算法解决。
是的,机器学习(Machine Learning)如今已经深入到了生活中的每一个角落。
所有网站都在向您投放可能感兴趣的广告,这并非通过什么统计算法实现——从一个人的网络行为中收集到的数据实在是太纷繁复杂,以至于不可能为每一组数据编制算法,或者为每一个数据指定权重。如今流行的做法是,根据用户行为数据的某些共性,设计一个或者一系列神经网络,将行为数据作为样本训练神经网络,然后让神经网络来根据用户当前及过去的行为,预测用户以后的行为和兴趣点。根据兴趣点,再挑选合适的广告呈现给用户。至于神经网络里面究竟长得怎样,无关紧要;只要输出的结果符合要求就行了。
所有的验证码都变得越来越难看懂——因为凡是人能轻易看懂的字母,如今通过机器学习,都能轻易识别了。这不禁让人感到背后发凉:如今的机器,是不是真的能取代人了?
从劳动人民的角度看,这是挺可怕的一件事情。早些年我们承认机器人将会取代我们的体力劳动,但如今情况急转直下,机器学习已经可以取代我们的脑力劳动了。经过良好训练的神经网络,可以准确地判断一篇文章是否讽刺了国家领导人,可以准确判断一部电影是否存在需要删减的镜头,可以准确判断一通电话是否涉及恐怖袭击,这些以往都是靠人脑完成的工作,如今只需要部署超级计算机就可以了。
在一切都太迟之前,赶快转行,做一个ML工程师吧!让机器为你思考,将使你获得超过所有人类的思考能力。也许,这是地球上最后一个职业。
附
ML工程师的主要职责:收集数据,将数据格式化,找到适合的神经网络,用正确的方法训练,将训练好的成果封装成产品,自用或等待其他码农来调用。
200字以内,仅用于支线交流,主线讨论请采用回复功能。