咨询在线老师

招生办电话:023-81053558

  

扫码关注我校官方微信

新闻动态
论机器学习和编程语言:ML需要专用的计算机语言吗?
2017-12-15 09:29:56  来源:北大青鸟

TensorFlow(TF)已经算是着一种「编程语言」了,因为在这个框架下我们完全可以使用它所提供的类和对象编写一个模型。大家使用 Python 和 TF 库进行编程,因此这个结论似乎有点令人惊讶。但是,TF 要求你在其内部语言内使用 Python 代码构建表达式树,然后 TF 再进行评估。

事实上,你可以用任何语言进行「懒惰的」TensorFlow 风格编程。

这里,我们进行的是元编程(metaprogramming)——编写写代码的代码。它们也可以是不同的语言(如在处理 C 语言的 C 预处理器中),我们也可以使用数据结构(AST)来代替字符串,原则是一样的。在 TensorFlow 中,Python 是元语言,我们使用 TF 这种基于静态计算图的语言编写程序。如果你不信,想一下 TensorFlow 的图甚至支持变量适应范围(variable scoping)和控制流(control flow)等编程结构,而不是使用 Python 语法,你可以通过一个 API 管理这些结构。

TensorFlow 和类似工具的呈现方式是「库」,但它们是极其不寻常的库。大部分库提供一套简单的函数和数据结构,而不是全新的编程系统和运行时(runtime)。

为什么创建新语言?

创建新语言的核心原因非常简单:ML 研究需要极高的算力,简化建模语言可以使添加特定的优化和特征变得简单。训练模型要求极高的硬件支持、合适的数值、低解释器开销和多种并行化。通用语言如 Python 勉强可以提供这些特征,但 TensorFlow 可以无缝处理它们。

不过有一个障碍。这些优化依赖于简单化的假设(ML 模型不是递归的,或不需要自定义梯度),这使得将这些优化或应用部署到小型设备变得简单。不幸的是,对于工程师来说,模型复杂度目前出现直线上升的趋势,而研究者享受破坏这些假设的过程。现在模型要求条件分支(比较简单)、重复循环(没有那么简单但也不是不可能)、递归树(几乎不可能)。在 ML 的很多分支,包括神经网络和概率编程中,模型越来越像程序,包括推断其他程序的程序(如程序生成器和解释器),且具备不可微组件,如蒙特卡罗树搜索。构建提供完全灵活性且达到顶尖性能的运行时非常困难,但是最强大的模型和突破性的结果需要这二者。使用机器学习和复杂树结构数据需要可微且递归的算法。

扫描二维码,关注我中心官方微信

重庆市渝中区临江支路2号合景大厦A栋7-1#
(王府井奥莱旁边,小什字公交车站正对面,
招商银行楼上7楼)

105路 111路 112路 114路 132路 135路 151路 153路 181路 261路 262路 401路 424路 461路 466路 476路 866路 0493路 181路高峰

一号线  二号线  六号线(小什字站或临江门站)

023-81053558

求才热线:023-81053558

渝ICP备16009551号 @重庆新英航信息技术有限公司版权所有
© 2016 All Rights the new inheart.ChongQing

渝公网安备 50010302001395号