专栏名称: 新智元
智能+中国主平台,致力于推动中国从互联网+迈向智能+新纪元。重点关注人工智能、机器人等前沿领域发展,关注人机融合、人工智能和机器人革命对人类社会与文明进化的影响,领航中国新智能时代。
目录
相关文章推荐
新智元  ·  中国MoE一夜爆火!大模型新王暴打GPT-4 ... ·  2 天前  
爱可可-爱生活  ·  《爱可可微博热门分享(12.25)》 ... ·  3 天前  
宝玉xp  ·  转:一图看懂互联网黑话 ... ·  4 天前  
51好读  ›  专栏  ›  新智元

为什么Python是AI最好的语言,以及如何使它更好(27PPT)

新智元  · 公众号  · AI  · 2017-08-07 13:35

正文

1新智元编译 

 来源:github.com

作者:Matthew Honnibal

编译:刘小芹


【新智元导读】Matthew Honnibal 是悉尼大学一名博士研究生,已经在自然语言处理领域发表数十篇论文。他最著名的是开发了spaCy,这是一个生产就绪的NLP Python包。这个ppt来自 Honnibal 在巴伊兰大学计算机科学系研讨会的演讲,主题是“为什么Python是AI最好的语言(以及如何使它更好)”。



在过去几年中,Python已经成为机器学习和AI的主要开发语言。由于对于数值计算来说,人工内存管理非常重要,CPython为低级别的扩展提供了一种高效、实用的API。对于Web编程而言,Python不需要使用JSON,XML解析,图像处理和数据库连接的快速库。 但是,大多数Python用户不喜欢这些本机扩展。本机扩展反而造成一些不便,更容易导致出错。


作者认为,Python社区应该接受必要的本机扩展。通过投入更好的工具来强化其优势,Python语言将变得更强大。个人开发人员将受益于Cython,并了解如何阅读和构建本机库。这尤其适用于机器学习和人工智能领——当前软件开发中发展最快的领域。



Python 对于AI来说是最好的语言——但它可以更好。



Python在数据科学和AI中占据主导地位


  • 比R更具有通用性和实用性

  • 比Java和C ++更有生产力和灵活性

  • 比Ruby和JavaScript拥有更好的生态系统

  • Python是一个很全面的语言,尤其对于数据科学,机器学习和AI



Python为何拥有最好的生态系统?


  • 某一语言获得“胜利”,不仅由于它足够好,而且天时地利

  • 2004年之前Java和C ++的生产力不足

  • C扩展对于Perl和Ruby来说相对较难



C扩展是Python的优势。 如果我们不理解它,就不能好好利用它。



Python vs. Cython



我们应该怎么做?


  • 个人开发人员应该习惯写Cython

  • 社区应该投入更多资源,使其更简单明了

  • 性能是Python代码的一个大问题



Python对于AI来说是最好的语言



Python 是最受欢迎的...


  • 在AI研究中,你最常使用的是什么编程语言?


Python 78%


  • 最受欢迎的语言(数学 & 数据)


Python 55%



Python 的生态系统使其成为AI的最佳选择


“真正使Python和Ruby两种语言区分开来的是它们的框架和库的环境”


“scikit学习:Python机器学习是用于此目的的最简单、最先进的库之一。”


“由于其软件包库的成熟度和广度”


“它受欢迎的另一个重要原因是对许多与ML(scikit-learn,scipy,numpy等)相关的开源项目的可用性。”


来源:为什么Python在机器学习中如此受欢迎?(Quora)



执行Python的一般方法


  1. 实现它。

  2. 使它更快。

  3. 我们可以在这里使用PyPy吗?

  4. 更多核心

  5. 糟糕,为什么不起作用?



渐进式改进并不总能得到最佳解决方案


你可以一点一点地使你的Python代码更快,但假如从解决方案空间的错误部分开始,不能得到最好的解决方案。



更好的Python执行方法


  1. 规划数据结构。

  2. 写出简单,易理解,以及近似最优的解决方案。

  3. 修复编译器错误。

  4. 思考为什么没有更多的文档。

  5. 思考人生。

  6. 终于,获得结果。



  • 使用Cython。

  • 在setuptools中提供默认支持

  • 在主文档中推荐Cython

  • 考虑更深入地集成到CPython中



进一步了解Cython


  • Cython-CUDA可以很好用

  • 库可以拥有很好的Cython API

  • 可以更容易地编译独立的库或应用



“但是为什么不使用JIT编译?”


  • 优势来自决策

  • 这是“感觉很难”的部分——但没有它你没法得到好的解决方案

  • 如果您对数据结构进行优化,那JIT也无法帮你



我能从慢的代码调用快速库吗?


  • 可以(大部分情况)。但需要更快时,你要怎么办?

  • 学习库API是一种低廉的技能

  • 更好的是学习基础





【号外】新智元正在进行新一轮招聘,飞往智能宇宙的最美飞船,还有N个座位

点击阅读原文可查看职位详情,期待你的加入~