我们经常听到“Python”与“人工智能”这两个词,也很容易混淆这两个词,那么Python和人工智能有什么关系呢?
提到人工智能就一定会提到Python,有的初学者甚至认为人工智能和Python是划等号的。其实Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,开始时是用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。而人工智能通俗讲就是人为的通过嵌入式技术把程序写入机器中使其实现智能化。显然人工智能和Python是两个不同的概念。
人工智能和Python的渊源在于就像我们统计数据或选择用excel制作表格时,因为在需要用到加减乘除或者、函数等时,只需要套用公司就可以。因为SUM、AVERAGE等这样的函数运行的背后,是C++/C#等语言已经编写好了代码,所以Excel只是工具和展现形式并不是它做计算。同理在学习人工智能时Python只是用来操作深度学习框架的工具,实际负责运算的主要模块并不依靠Python,真正起作用的是也是一大堆复杂的C++ / CUDA程序。
深度学习人工智能时,自己计算太复杂,还要写C++代码操作,这时程序员就想要不搞一套类似复杂的Excel配置表,直接搭建神经网络、填参数、导入数据,一点按钮就直接开始训练模型、得出结果。这个方法简单实用可是神经网络搭建起来太复杂,需要填写的参数太多,各种五花八门的选项也很难做成直观的图形工具。只能用一个类似Python的相对好用的语言,通过简化的程序代码来搭建神经网络、填写参数、导入数据,并调用执行函数进行训练。通过这种语言来描述模型、传递参数、转换好输入数据,然后扔到复杂的深度学习框架里面去计算。那么为什么会选择Python?
科学家们很早就喜欢用Python实验算法,也善于使用numpy做科学计算,用pyplot画数据图。恰好Google内部用Python也非常多,所以采用Python也是必然的。除Python外,实际上TensorFlow框架还支持JavaScript、c++、Java、GO、等语言。按说人工智能算法用这些也可以。但是官方说了,除Python之外的语言不一定承诺API稳定性。所以人工智能和Python就密不可分了。
单说人工智能的核心算法,那是是完全依赖于C/C++的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到。所以某种意义上其实C/C++才是人工智能领域最重要的语言。Python是这些库的API binding,要开发一个其他语言到C/C++的跨语言接口,Python是最容易的,比其他语言的ffi门槛要低不少,CPython的C API是双向融合的,可以直接对外暴露封装过的Python对象,还可以允许用户通过继承这些自定义对象来引入新特性,甚至可以从C代码当中再调用Python的函数。
Python一直都是科学计算和数据分析的重要工具。Python是这些库的API binding,要开发一个其他语言到C/C++的跨语言接口。Python是最容易的,比其他语言的ffi门槛要低不少,CPython的C API是双向融合的。可以直接对外暴露封装过的Python对象,还可以允许用户通过继承这些自定义对象来引入新特性,甚至可以从C代码当中再调用Python的函数。都说时势造英雄,也可以说是人工智能和Python互相之间成就者对方,人工智能算法促进Python的发展,而Python也让算法更加简单。