42 模块答疑:软件工程师如何进入人工智能领域?

你好,我是李智慧。在大数据算法模块,我们一起学习了几种最常用的大数据算法,包括KNN分类算法、贝叶斯分类算法、PageRank网页排名算法、关联分析Apriori算法、聚类分析K-means算法、神经网络算法以及几种常见的推荐算法,算是对大数据算法有了初步了解。

作为软件工程师,如果想掌握一些大数据算法的背景知识,以便更好地和算法相关团队合作,那么以这个模块讨论的算法为基础,触类旁通,针对公司使用的算法再进一步了解和学习,基本上也就够用了。但是,如果想从软件工程师深入进人工智能领域,那么就还需要系统地学习和掌握机器学习各方面的知识。

下面根据我的经验,给你呈现一个软件工程师进入人工智能领域的“学习路线图”,希望可以帮助到想转型进入人工智能领域的同学。

数学基础

机器学习有时候也被称为统计学习,其实就是统计大量历史数据中的规律,构建算法模型,再利用模型对现在的数据进行分类和预测。所以学习机器学习算法,先要复习一下统计学和概率论方面的知识。

很多算法的特征与函数都用向量空间表示,很多大数据算法计算也可以转化为矩阵与向量计算。比如PageRank算法就可以将网页间的链接关系表示为一个稀疏矩阵,所有页面的PageRank值构成一个向量,然后将矩阵与向量不断迭代相乘就可以了。因此,你还需要再复习一下线性代数的知识。

专栏前面我们讨论过机器学习的数学原理,机器学习算法的推导过程,其实就是在模型假设空间寻找使结构风险为极小值的模型,而数学上的极小值就是一阶导数为0的值,因此还需要复习一下高等数学。

机器学习算法

大家普遍认为,系统学习机器学习算法最好的入门级课程是斯坦福大学的机器学习公开课,这门课程由吴恩达讲授,非常经典。还有几本比较经典的书籍可以和公开课相互参照,比如周志华的《机器学习》,俗称“西瓜书”,比较通俗易懂,适合入门;李航的《统计学习方法》,偏数学一些,可以不时翻看。

如果只是单纯学习算法,会比较枯燥,需要不断做一些算法的编程练习,除了学习过程中的一些算法编程练习,还可以参考《集体智慧编程》这本书,书中的例子都比较实用,可以根据书中的数据和代码进行练习。这本书偏重代码和应用,很适合软件工程师进行入门练习,不过这本书缺少算法的原理分析,算法比较少也偏简单。

以上这些书籍或者课程基本上都是大学教材或者相似课程的难度,如果要成为机器学习算法专家,就需要自己寻找一些更专业的书籍和论文来看了,这些资料主要是以英文为主,所以也需要你有不错的英语基础。

大数据技术与机器学习框架

在小规模的数据集上做算法练习,用Python程序在单机上运行就可以了,但是在真正的生产环境中,需要面对海量的数据处理计算需求,这就需要用到我们专栏前面讨论过的各种大数据技术产品。各种主流大数据产品都有自己的机器学习框架与算法库,比如Hadoop上有Mahout、Spark上有MLlib,借助这些算法库和工具,可以较快速地在大数据平台上开发机器学习应用程序。

Mahout和MLlib主要支持传统的机器学习算法,业界还有几款比较知名的深度学习框架:TensorFlow、Caffe,Intel也开源了基于Spark的深度学习库BigDL。

人工智能应用

学了这么多机器学习的知识,最终的目的还是应用,业界其实不缺懂算法的专家,但是却非常短缺能够将机器学习和业务结合,产生实际价值的专家。要想实现人工智能真正落地,一方面需要懂大数据和机器学习算法,另一方面需要深入了解具体的领域知识,能够发现业务中的痛点,并能够选择最合适的算法解决这个痛点。

很多时候解决问题不需要多么高大上的技术和算法,很普通的算法用对地方,也能产生巨大的效果,这才是业界最短缺的,而这也正是从软件开发转型人工智能的技术人员的优势,有多年的领域开发积淀,有技术实现和验证的能力,再加上大数据和机器学习能力加持,几项结合产生化学反应,也许能在自己的企业和行业领域创造出巨大的价值。

根据Gantner发布的2018年人工智能技术成熟度曲线,我给你总结一下目前人工智能技术的发展状况,供你参考。

处于上升阶段,即具有长远发展前景的人工智能技术包括:

处于顶部,被众人期待,但是可能有些过热的人工智能技术包括:

经过泡沫洗礼,关注度下滑,进入冷静期的人工智能技术:

人工智能将会引领下一次科技革命的浪潮,基本已经得到人们的普遍认可,但是越是革命性的事物,道路越是艰难;不过道路越是艰难,收获越是巨大。人工智能对我们生产生活的改造将是全方位的,不管你现在身处什么领域,总能找到和人工智能结合的机会,期待将来人工智能科技革命的浪潮中看到你的身影。

2019年,如果你也想进入人工智能领域,欢迎你留言和我聊聊你的想法,希望你的思考也可以帮助到更多同学。