编译 | AI科技大本营(公众号ID:rgznai100)
【AI科技大本营导读】Python 语言是机器学习领域最优秀的编程语言之一,现在它正挑战着 R 语言在学术界和研究领域的统治地位。那么,为什么 Python 语言在机器学习领域会如此受欢迎?Python 领域资深专家 Mike Driscoll 组织了一次访谈会,邀请了五位 Python 专家和机器学习社区人士,共同分析 Python 语言受欢迎的原因。营长将五位人士的观点罗列如下。
第一位:Python Twisted 网络编程框架创始人 Glyph Lefkowitz ( @glyph ) ,曾在 2017 年荣获 PSF 社区服务奖
人工智能是一个大而全的术语,通常代表着当前计算机科学研究中最先进的领域。
有一段时间,我们理所当然地认为那种用于基本的图遍历技术就是所谓的 AI 技术。那时候, Lisp 还是门强大的人工智能语言,它的使用频率高于其他语言很多,使用这门语言能让研究人员更容易地解决相关的 AI / 机器学习问题。但现在,我认为 Python 已经在很大程度上取代了Lisp ,因为二者除了有相似的高层次属性外, Python 还拥有出色的第三方库,以及与操作系统完美地集成。
Lisp 的使用者们可能会反对我的观点,所以我应该说清楚。我没有对 Python 在表达层次中的位置做出精确地陈述,只是说 Python 和 Lisp 都处于相同的语言类别中,在处理诸如垃圾回收,内存安全,模块,名称空间和高级数据结构等方面的问题时有着相似的特性。
在更具体的机器学习层面,也就是大家最近谈论的 AI ,我认为两种语言的差别就更加明显了。Python 中的 NumPy 库及其强大的处理机制的存在,使得研究人员可以对高级别的内容进行研究,并进行高性能的数据处理。如果不能拥有强大的数字处理功能,那机器学习系统是没有任何意义的。
Python 社区致力于为非程序员提供友好的介绍和操作系统的支持,这也确实增加了其在数据科学和科学计算等相关学科中的应用。各种领域的工作人员,包括统计人员、天文学家、生物学家和商业分析师等,也都已经成为 Python 程序员,并针对各自领域工作的需求改进并拓展了Python 工具包的使用。编程也逐渐成了一种社交活动,这在 JavaScript 社区和 Python 社区都得到了充分的证明和认可。
此外,由于机器学习是一个集成度特别高的学科,任何AI / 机器学习系统都需要从现实世界中提取大量的源数据并作为训练数据或系统输入,因此 Python 自带的丰富的依赖库能够帮助用户更好地访问和转换数据。
第二位:PSF 社区的联合创始人及 eGenix 的首席执行官 Marc-Andre Lemburg ( @malemburg )
对于没有受过计算机科学专业学习的科学家来说,Python 也是非常容易理解。当你尝试驱动所需要研究的依赖库时,Python 能帮助你消除了许多必须处理的复杂性问题。
在 Numeric (现在是 NumPy ) 开始开发之后,增加了 IPython notebook (现在是 Jupyter notebook )功能, matplotlib 和其他的可视化工具能够让我们更直观地了解数据分布。Python 让数据科学家去思考解决问题的方法,而不是单纯提供这些解决方案所需的技术。
与其他领域一样,Python 也是一门理想的集成语言,它将各种技术绑定在一起,Python 允许用户关注问题的本身,而不是把时间花在实现细节上。除了为用户提供更方便的功能之外,Python 还是一个理想的粘合平台,为开发人员与外部库的低层次集成人员之间搭建连接。这主要是由于 Python 可以通过一个完整的 C API 来访问。
第三位:研究者;《 Python Machine Learning 》一书的作者 Sebastian Raschka ( @rasbt )
我认为在 AI / 机器学习领域,Python 语言受欢迎主要有两个原因,且这两个原因是非常相关的。
首先,Python 代码非常容易阅读和学习。
我认为,大多数从事机器学习和人工智能的研究人员都希望以最方便的方式来实现自己的想法。他们的重点是研究和应用程序的开发,编程只是实现这个想法的工具。编程语言的学习越轻松,入门门槛越低,就会更受初学者的喜爱。同样,这也适用于数学及统计学相关人员学习。
不仅如此,Python 代码可读极强,这有助于保持最新的机器学习和 AI 的现状,例如,实现AI / 机器学习的新思路往往需要相对复杂的算法,而在阅读相关代码时,语言越透明,可读性越好,代码的调试也越容易。
第二个主要原因是, Python 本身是一种非常易于访问的语言,而且开发者还在 Python 中封装了很多优秀的依赖库,这也使得我们的工作变得更容易。没有人愿意花时间从头开始重新实现基本算法 ( 除非是研究机器学习和人工智能的专业人士 ) 。大量 Python 依赖库的存在将帮助我们专注于算法的实现,这比“重新发明轮子”来的更高效。
此外,Python 也是用于实现更高效的 C / C ++ 算法及 CUDA / cuDNN 的最好的“胶水”语言,这就是为什么现有的机器学习 / 深度学习库能够在 Python 中高效运行的原因,这对于机器学习 / AI 领域的工作也是非常重要的。
总而言之,我会说 Python 是一种强大的语言,它可以让研究人员和从业者更专注于解决机器学习 / AI领域的相关问题,这是其他语言所无法做到的。
第四位:ThoughtWorks 的首席技术官及PSF社区会员 Luciano Ramalho ( @ramalhoorg )
在我看来,Python 之所以能够如此受欢迎的最重要和最直接原因是其 NumPy 和 SciPy 库能够支持 scikit-learn 这样的项目,这几乎是目前解决机器学习问题所需的标准配置。
首先,创建 NumPy,SciPy,scikit-learn 和其他库的原因是因为 Python 的一些功能使其更专注于科学计算。此外,Python 有一个简单而一致的语法,可以让非软件工程师人员更容易使用这门编程工具。
另一个原因是 Python 的运算符重载功能,能使代码可读性更好,简洁性更高。此外,Python 的缓冲协议 ( PEP 3118 ) ,是外部库在处理类似数组的数据结构时与 Python 进行高效交互的标准。最后,Python 为科学计算提供了丰富的依赖库和全面的操作系统,这也促进了更多的数据科学家使用。
第五位:Red Hat 的高级软件工程师;SQLAlchemy 的开发者 Mike Bayer (@zzzeek)
在 AI / 机器学习领域,我们正尝试开发我们的数学和算法。我们将希望保留和优化的算法封装打包成依赖库,如 scikit-learn 。然后我们继续重复这个过程,并分享一些关于如何组织和思考数据的笔记。
高级的脚本语言对于人工智能和机器学习是非常适合的,因为我们可以快速迁移并进行改动,我们创建的大部分代码代表的是实际问题中相关的数学知识和数据结构,而不是所谓的代码模板,因此我们可以根据实际问题的需要,尝试更改脚本的代码来解决我们的问题。
像 Python 这样的脚本语言更适合 AI / 机器学习的工作,因为它严格而一致的语法风格。每个 Python 使用者都可以更好地理解对方的 Python 代码,而其他语言的语法有可能会导致混淆和不一致的编程范例,这就是 Python 较其他编程语言的优势所在。
此外,IPython notebook 等工具的可用性使得我们可以在全新的平台上重复并分享我们的数学和算法工作。Python 能够突出我们所要完成的工作核心,还能够最小化计算机指令的所有内容,这一切过程 Python 都能自动完成,不需要你考虑任何问题,这也是 Python 语言强大之处。
作者 | Rich Gall
原文链接
https://datahub.packtpub.com/interview/python-machine-learning-expert-interviews/