AI就业前景越来越严峻了,AI 开发者能怎样提升个人竞争优势?
向AI转型的程序员都关注了这个号???
机器学习AI算法工程 公众号:datayx
在人工智能领域的就业和发展的问题上,肯定有很多老师和前辈以各自的角度给出回答,我从本科毕业到现在,在机器学习、知识图谱方面从事了六、七年时间,只有各种项目代码写得算多吧。我想纯粹从工程实践经验中,为大家提供一些启发。
我认为人工智能的发展,一直是一个追求统一理论的过程,这不仅仅是我们希望达到所谓“强人工智能”或“通用人工智能”( AGI ),这个目标同时也是希望能将各种辅助与增强人类的功能,用一种更通用而优美的方法解决。
今天正在发展的各种深度学习算法,就是这样通用的一种方法,可惜的是,它并不优美。谢天谢地的是,它真的有用。
即便有各种论文方法解读深度学习模型,但是各种模型、方法为什么有效,以及如何更有效,依然是一个有待解决的问题。AI领域的继续发展可能就会从火热的理论爆发,逐渐转变为各个领域再次细致化,与实践更好结合的稳定发展阶段。这可能是一次衰退,但是我相信它绝对不会像过去两次人工智能寒冬 (AI Winter)那样直接,它会以更平缓的方式到来。
在学术成果爆发的阶段,我们能观察到,几乎任何一个领域的问题,如果把它归类到某个深度学习的模型方法上,都可以得到比过去更好的解答。而随着研究领域逐渐进入发展与落地阶段,互联网公司也从过高的市场热度中逐渐恢复平静。
人工智能发展一直是波折前进的,人工智能技术的目的是服务于人类,辅助于人类智能,而具体的技术是规则、统计还是深度学习,其实本质上是不重要的,在波折的过程中我们总会离目标越来越近。
现在,随着深度学习的流行,我们已经拥有 TensorFlow 等几乎能够解决所有问题的深度学习框架,站在已有的各种基于深度学习的模型之上,并在工程中进一步发展,在这个过程中,我觉得企业的人才的需求会有下面几种变化:
1. 从对AI算法专家的需求,到对AI工程师的需求
作为算法专家、研究员,所面对的问题往往是在固化其他各种参数下,甚至可能不计算其他成本得失下,只需要追求结果(GPT3的训练花费约1200万美元)。这种方式在研究领域上自然是应该的,而在实际企业的工程工程落地中,我们更多需要考虑的是如何在各种限制条件下,合理完成任务。
AI工程师,首先要是一个工程师。
如何评估在何种条件制约下能达成任务,就不仅仅是需要只会少数几种算法实现能力,而需要对多种模型有深入了解、快速实现的能力、与评估其结果与成本的能力。
例如,我们需要实现一个基于图片表示的搜索引擎时,该用什么图片表示方法、如何计算相似度,这还算是算法问题。而用什么样的搜索基础设施,设备成本和可能的响应速度如何,能用什么软件或基础设施快速实现,整个工程的实施成本等等,这些是工程师更多需要考虑的。
2. 从部分算法知识,发展到对算法理论与业务建模方法的深入理解
很多时候要解决一个业务问题有很多种方法,而建模就是根据实际业务问题,在各种限制下,利用各种资源选择一种最合适的方法。
比如,当我们说文本分类算法的时候,大家会觉得这是一个很简单的事情,输入的是文本,输出的是相应的分类,无论模型是一个 TextCNN、LSTM 还是 Transformer 都可以。
模型本身是这样没错,但是其实以下问题,都可以算是一个文本分类问题:
如何通过引入常识,解决蚂蚁和蜘蛛谁的腿更多这样的分类选择?
如何通过引入知识图谱,提高分类效果?
如何结合文章和问题进行建模,对阅读理解的问题进行分类?哪些业务可以被归类为阅读理解模型上?
记忆机制(Memory)是如何影响分类任务?外部记忆呢?
多个两分类,还是一个多分类?
只有Softmax做分类吗?softplus、sigmoid用在什么时候?你清楚你的模型输出的概率分布是什么样吗?你的实际业务需要什么样?
如果没有任何标注数据你要怎么做?
当你仅仅想要完成一件事儿的时候,它可以很简单,但是当要深入理解业务,并深入其核心的时候,也可以很复杂。使用如 TensorFlow 这样的技术“完成”一件基于深度学习的工作在今天已经非常简单,“做好”一件面向人工智能的工程,还有太多值得思考的地方。
对于一个实际业务场景,有些可能没这么复杂,不过更多时候其实比这更复杂,而这就要求 AI 人去深入理解业务问题,需要能类比所有已知的各种建模方法与软件工程上的各种软件迭代方法,找到最终的解决方案。
那么,企业需要一个什么样的开发者?
首先,企业利益一般都体现在某个业务场景中。能完全在某个业务场景上成为工程领导者,才是企业所需要的人才。与其需要一个能实现最好算法的人,不如说企业更需要一个能更好理解业务、理解产品的人,这种人需要在工程、算法的各个角度都有一定了解。只有业务场景能实际落地,这样才对企业产生真正直接的利益。
业务场景也包括某种技术,例如搜索或推荐,它需要对业务本身需求、来源数据、处理结果、工程效率等很多方面都有一定了解,甚至需要对同业公司、竞争对手都有所了解,这样才能统筹安排开发节奏,控制成本成本,创造最大收益。
而最终的结果是,往往这种人才也因自身能力而获益。今年总是有人问,是不是程序员过了35岁就都失业了?我不能说完全没有这样的情况,不过至少要避免这种情况的一个做法是,要尽量不让自己的能力过于单一,需要能全方面的发展。
如果你还在担心在 AI 领域内的发展,可以考虑以下几个努力方向:
1. 掌握与重温各种理论知识
以各种入门书籍、视频为主, TensorFlow 的初级入门代码与跑通一些简单的项目与例子为辅。通过各种书籍与视频积累基本的理论知识,建议可以参考 TensorFlow 官方列出的精选课程、官网上的精选学习资源,也可以从周志华老师的《机器学习》开始读。另外我认为,即便从中文教材开始读,也要在积累一定经验后,阅读英文相关资源。
为什么要不断学习理论知识?一方面理论知识也在持续改进,人工智能一直都是一个非常年轻的学科,它本身的基础也在不断的更新。另一方面,不断的学习与重温知识,是自我夯实基础与激发灵感的重要途径。
2. 持续积累工程代码经验
首先,建议多看 TensorFlow 相关的入门代码教程,或者将例如 OpenNMT-tf 这样项目的示例代码跑通,也可以尝试各种自己不太熟悉的领域或模型。这样不仅能积累一些实操经验,也有助于保持对深度学习的热情。
工程代码的经验要以参考其他项目代码为主,例如 OpenNMT-tf 或 TensorFlow 各种官方模型,包括 TensorFlow Hub 、Model Garden 的实现代码,从别人的模型实践中学习经验,同时尽可能地从头开始完整复现一些经典模型,例如 VGG / ResNet / BERT 等,而不仅仅是要求自己跑通别人的项目。甚至,尝试将一些模型代码与实际工作结合,制作一些具体的项目或应用,例如配合 TensorFlow.js 实现一些简单的网页应用。
个人经验来说,我的主要工作都集中在自然语言处理领域,不过自然语言处理的很多任务其实都很难可视化,很多时间都是在跟各种语料、标注数据打交道,做多了未免枯燥。这个时候我经常就会去看看别的领域的结果,比如机器视觉相关的研究,看看YOLO如何实现,U-net是如何识别卫星照片中的各种建筑的,并且自己复现它们的模型和结果。在这个过程中,一方面积累了工程经验,另一方面也可以通过跨领域的交叉激发自己的思考能力,同时在实现这些模型的过程中又可以分享这些模型,给自己新的满足感与成就感。
3. 紧随最新的技术与研究成果
机器学习的相关开发者,无论是倾向于研究还是工程落地,都需要对于最新的各种研究成果保持敏锐直觉。这个时候可以通过订阅 GitHub 中感兴趣的项目/开发者/ Topic ,也需要订阅如 arXiv 的关键字,经常获取关注领域的最新进展。对于自己感兴趣的研究结果,应考虑尝试复现,在这个过程中积累工程与研究经验。
可以进入 TensorFlow GitHub 页面搜索感兴趣的内容 ,也可以手机端阅读和收藏 TensorFlow 官方微信的“前沿研究”合集。
在学习的过程中,需要充分利用自己的业余时间,在互联网与科技行业,技术不断发展,10年前、5年前用到的技术和今天都有巨大区别,人工智能相关行业发展则更快。在这种情况下,需要不断学习进阶,才能紧跟行业的发展。对于在职人员,不仅要充分利用业余时间学习,同时可以考虑加入 TFUG ,多参加 TensorFlow 官方或社区组织的活动,接触更多志同道合的人,共同进步。
阅读过本文的人还看了以下文章:
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
机大数据技术与机器学习工程
搜索公众号添加: datanlp
长按图片,识别二维码