普通程序员如何正确学习人工智能方向的知识?

释放双眼,带上耳机,听听看~!

“阿里是讲‘让天下没有难做的生意’,做人工智能的是讲‘让天下没有难吹的牛’。”这是中国科学院深圳先进技术研究院副院长汤晓鸥于2017年10月12日在杭州的云栖大会上发表演讲时说过的一句话。

普通程序员如何正确学习人工智能方向的知识?

(学术界的段子手,汤晓鸥)

人工智能(Artificial Intelligence)是这几年科技圈最火的名词之一,以深度学习为代表的机器学习在近几年取得了很多令人震惊的成果,并且普遍应用到了诸如图像识别、增强、风格转换、生成,语音识别、翻译,文章生成以及无人驾驶等诸多领域,在互联网、科技和资本圈内备受重视。

广义的说,人工智能包含诸多不同的方法,其主旨是让程序像一个智能体一样解决问题。机器学习是实现人工智能的一种方法,它不完全依靠预先设计,而是从数据中进行总结,达到模拟记忆、推理的作用。包括诸如支持向量机(SVM)、各类基于决策树的算法(包括Boosting、Bagging、Random Forest等),各类基于人工神经网络的算法(例如简单网络及深度网络等),以及多方法的集成等。

随着硬件设备功能的日渐强大,以及互联网大数据带来丰富的数据来源,无疑让通过多种、多层、多方法集成的机器学习有着更深更广的发展空间。尽管目前大部分人工智能实例使用的并不是基于机器学习的方法,但其中有不少领域在向机器学习迁移。可以预见的是,人工智能将在机器学习等诸多方法的推进下,在更广泛的领域中辅助人类解决问题,在许多工作中,使用几乎能够无限扩展的计算力来替代部分人力。

普通程序员如何正确学习人工智能方向的知识?

人工智能的飞速崛起,使得该领域出现了巨大的人才缺口,据说在帝都,一个机器学习算法的岗位拿到100K的薪水也并不是一件很困难的事情,这刺激了普通程序员学习人工智能,迫切希望在人工智能大热时实现转行。可是许多程序员不知道该如何快速有效地学习人工智能。

其实,既然已经具备了普通程序员的功底,再转人工智能方向并非难事,接下来我们就具体分析一下,普通程序员该如何正确学习人工智能方向的知识。

1. 熟练掌握基础理论知识

要成为人工智能领域,尤其是机器学习方向的程序员必须有一定的数学和算法基础,尽管各类框架使得现在的机器学习编程变得越来越简单,表面上可以不用在意太多的数学和算法细节,但实际上,即使是针对工程应用,一定程度的数学和算法理解以及对应的思维方式,能够在解决问题以及选择模型套用时提供许多的帮助。相关的知识理论基础包括:高等数学基础、统计学基础、线性代数、数值计算方法、运筹学。

普通程序员如何正确学习人工智能方向的知识?

当然,如果不打算进行特别深入的研究和扩展,以上内容并不需要都精通,但至少需要保持在知晓且能够形象化理解的范围内,只有在掌握这些基础的前提下,理解人工智能和机器学习相关的知识才能更加轻松顺利。

2. 相关基础工具的学习和应用

熟练掌握基础理论的同时,还要掌握相应的编程语言。目前机器学习最为普遍的语言是Python,大多数主流机器学习框架已经提供了Python接口。Python语法简单,上手较为容易,同时有较强的语言表达能力,又很容易与其他语言的项目进行交互,这些特点使之成为了在机器学习领域必学的编程工具之一。关于如何学好Python,可以参考https://www.imooc.com/course/list?c=python 。另外还必须掌握像Jupyter notebook这些常用的开发辅助工具。

在Python中有大量的机器学习相关框架、数学工具和数据处理工具,在这里针对性地推荐一些入门级的关键工具。

① numpy、scipy、matplotlib(Python进行科学计算时常用的一些基本工具)

numpy中包含对矩阵(含高阶矩阵)等内容的计算和变换;几乎所有Python上的数据及机器学习处理框架均提供了numpy的ndarray形式的数据交换接口;

scipy中包含更复杂一点的计算模型,诸如傅里叶变换、滤波器等;

matplotlib则是与之配合紧密的绘图库,能够提供较好的可视化功能。

② pandas

pandas是一个以数据表形式组织和操作数据,并能够方便地结合numpy、matplotlib进行统计、运算和可视化的工具包。

普通程序员如何正确学习人工智能方向的知识?

关于以上内容的学习,推荐自家的免费课程(基本涵盖了以上提到的全部知识点):

Python在数据科学中的应用:https://www.imooc.com/learn/727

Python数据分析-基础技术篇:https://www.imooc.com/learn/843

3. 进阶人工智能的重点:机器学习和深度学习

有了基础理论知识和工具之后,便可以尝试目前最为前沿的AI技能——机器学习和深度学习。

对于机器学习,建议先参考一些入门课程,而后再进阶有难度的课程,并且在学习课程的同时进行一些编程实践,有助于更快地掌握知识。这里做一下部分推荐:

初识机器学习-理论篇:https://www.imooc.com/learn/717

Python3入门机器学习经典算法与应用:https://coding.imooc.com/class/169.html

普通程序员如何正确学习人工智能方向的知识?

对于目前被人们认为前景最为广阔的深度学习,需要更为复杂的理论基础。推荐以下课程:

AWS云-深度学习&机器学习的AI业务应用:https://www.imooc.com/learn/896

深度学习之神经网络核心原理与算法:https://coding.imooc.com/class/145.html

这里涉及到的一些框架和工具包括:

① scikit-learn,又称sklearn,是Python中最常用的基础机器学习工具,以简单易用而闻名。提供了大量基础机器学习算法,包括SVM、k-means、随机森林、Boosting等成熟方法。里面包含了详细的使用帮助、样例及一些基础教程。

同时也推荐自家的经典案例课程:

机器学习入门 Scikit-learn实现经典小案例:https://coding.imooc.com/class/103.html

②Tensorflow、MxNet、PyTorch(皆为深度学习框架)

Tensorflow最接近工程应用,基础接口较为接近底层,灵活度较高,使用者需要理解一些算法的数学原理,但同时也有较为高级的抽象接口(如kears、tflayer等);

MxNet同样适合工程使用,性能优异,但相较之不如Tensorflow灵活;

PyTorch抽象程度较高,同时又保持了较好的灵活性,更适于科研实现,较之其它二者,工程应用相对少一些。

在这里,还要再啰嗦一句,一定要在学习课程的同时进行实践,实践出真知。

如果学习过程进展顺利的话,可以关注并参加Kaggle(http://www.kaggle.com)的比赛。Kaggle是一个公开的、有奖金的数据分析和机器学习比赛平台,并且提供了大量整理好了的公开训练和测试数据。练习和比赛能够快速提高自己对模型的理解能力,丰富调参经验

普通程序员如何正确学习人工智能方向的知识?

至此,对于人工智能,特别是机器学习和深度学习,已经可以算作入门了。接下来如果还想继续发展,则应当认真考虑具体的发展规划,并进行更加系统化的学习。

其实机器学习方面,仍然存在很多工程问题,如新算法的编程实现、大规模并行计算和分布式计算,甚至计算用硬件的研制等等。这个方向上,传统程序员出身仍有良好的基础,可以深入发展;如果对机器学习、深度学习兴趣浓厚,跟读最新的论文,思考和研究新的模型、算法,同样也是很好的出路;如果对数据敏感,专注于数据的分析处理,也是不错的选择。

以上给出的学习方法是按照大部分普通程序员的情况来建议的,并不一定适用于每个人,尤其是编程新手。条条大路通罗马,肯定也还有人能找到其他更适合自己快速学习和转型的方法。

最后,祝大家能够早日在人工智能领域逐梦成功。感谢阅读。
普通程序员如何正确学习人工智能方向的知识?

文章源自知乎慕课网的回答,原文链接:https://www.zhihu.com/question/51039416/answer/303460176

推荐阅读:

你都用 Python 来做什么?

Node.js 与 Python 作为后端服务的编程语言各有什么优劣?

【转自慕课】https://www.imooc.com

Python

Python数据挖掘04-BeautifulSoup库

2022-3-3 11:06:18

Python

使Django rest framework产生的api可以直接访问图片

2022-3-3 11:10:49

搜索