“阿里是讲‘让天下没有难做的生意’,做人工智能的是讲‘让天下没有难吹的牛’。”这是中国科学院深圳先进技术研究院副院长汤晓鸥于10月12日在杭州的云栖大会上发表演讲时说过的一句话。
(学术界的段子手,汤晓鸥)
人工智能(Artificial Intelligence)是这几年科技圈最火的名词之一,以深度学习为代表的机器学习在近几年取得了很多令人震惊的成果,并且普遍应用到了诸如图像识别、增强、风格转换、生成,语音识别、翻译,文章生成以及无人驾驶等诸多领域,在互联网、科技和资本圈内备受重视。
广义的说,人工智能包含诸多不同的方法,其主旨是让程序像一个智能体一样解决问题。机器学习是实现人工智能的一种方法,它不完全依靠预先设计,而是从数据中进行总结,达到模拟记忆、推理的作用。包括诸如支持向量机(SVM)、各类基于决策树的算法(包括Boosting、Bagging、Random Forest等),各类基于人工神经网络的算法(例如简单网络及深度网络等),以及多方法的集成等。
随着硬件设备功能的日渐强大,以及互联网大数据带来丰富的数据来源,无疑让通过多种、多层、多方法集成的机器学习有着更深更广的发展空间。尽管目前大部分人工智能实例使用的并不是基于机器学习的方法,但其中有不少领域在向机器学习迁移。可以预见的是,人工智能将在机器学习等诸多方法的推进下,在更广泛的领域中辅助人类解决问题,在许多工作中,使用几乎能够无限扩展的计算力来替代部分人力。
人工智能的飞速崛起,使得该领域出现了巨大的人才缺口,据说在帝都,一个机器学习算法的岗位拿到100K的薪水也并不是一件很困难的事情,这刺激了普通程序员学习人工智能,迫切希望在人工智能大热时实现转行。可是许多程序员不知道该如何快速有效地学习人工智能。
其实,既然已经具备了普通程序员的功底,再转人工智能方向并非难事,接下来大家就具体分析一下,普通程序员该如何正确学习人工智能方向的知识。
1. 熟练掌握基础理论知识
要成为人工智能领域,尤其是机器学习方向的程序员必须有一定的数学和算法基础,尽管各类框架使得现在的机器学习编程变得越来越简单,表面上可以不用在意太多的数学和算法细节,但实际上,即使是针对工程应用,一定程度的数学和算法理解以及对应的思维方式,能够在解决问题以及选择模型套用时提供许多的帮助。相关的知识理论基础包括:高等数学基础、统计学基础、线性代数、数值计算方法、运筹学。
当然,如果不打算进行特别深入的研究和扩展,以上内容并不需要都精通,但至少需要保持在知晓且能够形象化理解的范围内,只有在掌握这些基础的前提下,理解人工智能和机器学习相关的知识才能更加轻松顺利。
2. 相关基础工具的学习和应用
熟练掌握基础理论的同时,还要掌握相应的编程语言。目前机器学习最为普遍的语言是Python,大多数主流机器学习框架已经提供了Python接口。Python语法简单,上手较为容易,同时有较强的语言表达能力,又很容易与其他语言的项目进行交互,这些特点使之成为了在机器学习领域必学的编程工具之一。关于如何学好Python,可以参考/course/list?c=python 。另外还必须掌握像Jupyter notebook这些常用的开发辅助工具。
在Python中有大量的机器学习相关框架、数学工具和数据处理工具,在这里针对性地推荐一些入门级的关键工具。
① numpy、scipy、matplotlib(Python进行科学计算时常用的一些基本工具)
numpy中包含对矩阵(含高阶矩阵)等内容的计算和变换;几乎所有Python上的数据及机器学习处理框架均提供了numpy的ndarray形式的数据交换接口;
scipy中包含更复杂一点的计算模型,诸如傅里叶变换、滤波器等;
matplotlib则是与之配合紧密的绘图库,能够提供较好的可视化功能。
② pandas
pandas是一个以数据表形式组织和操作数据,并能够方便地结合numpy、matplotlib进行统计、运算和可视化的工具包。
来源:慕课网发布于慕课网 ,转载请注明出处,谢谢合作