为什么人工智能是由Python而不是C语言驱动?
发布时间:2018-10-26 作者:jason
许多最近的机器学习代码都是用Python编写的,并且用C ++运行。这是推动机器学习发展近期复兴的元素的自然后续现象。
当前发展生态系统的很大一部分是在深度学习领域。这实际上是由反向传播的实现(一种在许多神经网络架构上迭代工作的统计优化形式),计算能力的提高(通常与GPU一致)和大量数据的可用性启动的。
从根本上说,这三个因素导致了一种特定的发展模式,即使在研究层面也需要性能和规模(而大量的应用数学算法在大规模实施之前不需要考虑优化)。另一个因素是反应的溶液的基础不是分析的(即这些是估计不是确切的答案)。因此,正在发生大量“反复试验的专家”。
这意味着我们现在需要统计专家来完成通常需要高质量,高度优化的代码的工作。他们不能......因为他们不是CS专业。
许多框架,如NVIDIA的Cuda / cuDNN以及像Tensorflow这样的ML框架都试图填补空白。我认为他们非常成功。
这导致了当前的状态。Python(对于技术水平较低的人来说更容易阅读和编写)正在使用中,并且框架正在创建C ++代码。我认为,随着时间的推移,差距将继续增长。
通过人工智能,我认为你的意思是机器学习。执行大量数据处理的底层库实际上是C或C ++。Python被用作“粘合语言”,它将多个库粘合在一起,并提供更高级别的API来访问它们。
使用更高级别的胶水语言进行科学研究的概念是一个古老的概念。在过去,我以同样的方式使用perl和TCL。Python是目前最流行的语言。
如果您是科学家,为什么要使用胶水语言?当科学家编写软件来解决问题时,他们做了很多实验。对他们来说理想的语言是允许他们采取创意,实施并尽快获得反馈的语言。他们能做得越快,他们的生产力就越高。这就是为什么他们不想打扰内存管理等低级问题。它们通常不会优化速度和低水平控制。当他们有一个完成的产品,然后需要优化时,他们会把注意力转向这个,有时用C或C ++重写他们的代码以获得更好的性能。但现在更常见的是,他们只会寻找已经存在的C / C ++库来完成大部分工作。
因此,他们正在寻找两个主要的东西:一种高效的语言,可以让他们快速表达自己的想法,以及一种语言,可以与许多高性能的数值计算库进行交互。此外,他们还需要强大的数据可视化功能。Python拥有所有这些东西。很少有其他语言和语言生态系统可以接近。