feiyuntian78 2017-1-23 23:41
美联储加持的小众语言Julia ,能否成为机器学习的明日之星?[6P]
[align=center][img]http://images2015.cnblogs.com/news/66372/201701/66372-20170123164712300-717916315.jpg[/img][/align]
早在 2009 年,Jeff Bezanson、Alan Edelman、Stefan Karpinski 和 Viral Shah 四个人聚到一起决心创造一种全新的编程语言。新语言要快速、有表达力,结合 C 语言、Matlab、Java、Ruby、Python、Perl 和 R 各自的优势,并能直接与 R、Matlab、Python 等最受欢迎的机器学习语言,以及其他动态工具展开竞争。听起来这思路很直接、很简单,是吧?这想法的背后有着几名创始人对开发者“痛点”的长期切身体会:工程师们为了在数据分析中获得速度和易用性,不得不首先用一种语言编码,然后用另一种语言重写——这实在很“坑爹”。而这就是很多人口中的“双语言问题”。
这背后的努力,促成了 Julia 的诞生。
创始人之一的 Viral Shah 解释道:
“为什么一个编程语言不能同时具有性能和生产力,这难道是一个物理定律吗?或者,现有的编译器-语言技术还没有发展到那个阶段?我们认为,在同个封装中获得易用性和性能是可能的。于是,我们开始投入到这个项目之中,并把它命名为 Julia。”
[align=center][img]http://images2015.cnblogs.com/news/66372/201701/66372-20170123164712206-142508360.jpg[/img][/align]
[align=center] Viral Shah [/align]
随后,几名 Julia 创始人联合 Keno Fischer 创立了“Julia Computing” ——一家咨询公司,为使用 Juia 语言的企业客户提供帮助。
[align=center][img]http://images2015.cnblogs.com/news/66372/201701/66372-20170123164712222-1540915939.jpg[/img][/align]
Julia 是一门开源语言,允许开发者创建性能更为强大的数字算法——相对于采用 Just In Time (JIT) 解释的语言而言。它易于使用,大幅减少了需要写的代码行数;并且能够很容易地部署于云容器(cloud containers )。
2012 年,Julia 的第一个公开版本 Julia 0.1 正式发布。2016 年九月发布了 Julia 0.5,涵盖了 1100 个工具包,比一年前的 0.4 版本增加了 57%。Julia 开发者社区的规模还很小,目前在全世界范围内大约有 15 万用户。但随着计划于今年 6 月在加州大学伯克利分校举办的 JuliaCon 峰会,以及将在峰会上发布的 Julia 1.0;届时,它的用户群有望快速增长。Viral Shah 表示,他们的下一个目标是 150 万用户。另外,现有 Julia 版本的技术支持期限是一年,而 Julia 1.0 将会是五年。
Julia 已经引起了华尔街的注意。投资银行 Berkery Noyes 的 CTO Keith Lubell 评论道:
“真正让我们感到激动的是,你可以编写高层级的科学、数字计算,而不需要重新编译。通常来讲,当你用 R 或 Matlab 写了一些东西,想让它运行得更快。你需要把它重新翻译至 C++,或者其他更快的语言。而使用 Julia 就不需要这样——它的速度是拔尖的。”
Julia 仍是摇篮中的新生儿。因此,若要成为大数据、机器学习工程师们的普遍选择,它需要在多个领域成长起来。其中最重要的是开发者社区,它亟需壮大以提供更多的工具包和库。只有这样, Julia 才能吸引更多用户到它的平台,与基础设施完善的老牌数据分析语言直接竞争。
如果你跟任何使用 Julia 的开发者聊聊,他们会告诉你,选择“上车”、使用这个萌芽期编程语言的首要原因是速度。据 Julia Computing 的宣传,在七项基础算法的测试中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。
Julia 精简的代码行数,对其性能提升贡献巨大。迄今为止最引人注目的 Julia 应用案例是纽约联邦储备银行( Federal Reserve Bank of New York )
[b]美联储对 Julia 的应用[/b]
[align=center][img]http://images2015.cnblogs.com/news/66372/201701/66372-20170123164712253-1218301903.jpg[/img][/align]
大约两年前,诺贝尔经济学奖得主、纽约大学经济学教授、咨询公司 QuantEcon 的创始人 Thomas Sargent,以及澳大利亚国立大学的经济学教授 John Stachurski,共同建议纽约联邦储备银行( Federal Reserve Bank of New York )把其用于市场走势预测和政策分析的“动态随机一般均衡模型(DSGE)”转到 Julia 语言平台。
[align=center][img]http://images2015.cnblogs.com/news/66372/201701/66372-20170123164712206-2000478745.jpg[/img][/align]
[align=center] Thomas Sargent[/align]
此前,纽联储的 DSGE 模型一直用 Matlab 运行。该项目背后的逻辑是,探索像 DSGE 这样的大型模型能否轻易转移至 Julia,以及其运行速度究竟会不会有大幅提升。纽联储采纳了建议,并利用该机会与 QuantEcon 合作。纽联储宏观经济与货币研究部门副主席 Marco Del Negro 表示:
“对我而言,这是一个绝妙的注意。我们当时正在考虑脱离 Matlab ——既出于成本,也有速度方面的原因。我们希望进一步提升我们的模型,并探索新事物。”
在项目第一阶段后,他们发现,Julia 把模型运行时间缩短至原先 Matlab 代码的十分之一到四分之三。模型中,Metropolis-Hastings 采样(从概率分布获取一系列随机样本的马尔可夫链蒙特·卡罗方法)是最耗费时间的环节。而在该环节,Julia 的运行速度是 Matlab 代码的 10 倍。相对于原先的 Matlab 版本,基于 Julia 的全新 DSGE 模型把代码行数减少了将近一半。
雷锋网获知这些性能提升不能全归功于 Julia。纽联储表示,Matlab 版本的 DSGE 模型开发周期相当长,是一个累积式的过程。另外,它还支持了过多的模型和特征。这些原因导致其有很多不完美之处,运行效率本身就有不足。新项目下,这些专家们用 Julia 把该模型从头设计了一遍,针对此前发现的一系列问题做了改进。因此,新模型可被看做是经历了两重升级:架构优化以及 Julia。当然,两者是结合在一起实现的。不过,一些“经历了较小优化以及重设计”的算法,比如测量算法以及 kalman_filter 函数,新版本仍然比旧的、基于 Matlab 的模型提升了大约五分之一至四分之三的运算速度,见下图。
雷锋网(公众号:雷锋网)获知,目前纽联储已经开启了项目的第二阶段:改进 DSEG 模型的预测能力。由于他们需要不断为模型添加数据和层级,纽联储认为 Julia 能更好应付提升的复杂性——他们估算基于 Julia 的模型运行时间大约只需要一至两天,而 Matlab 可能需要一个月才能等到输出结果。但这仍需第二阶段完成后进行证实。
[b]开发者社区[/b]
[align=center][img]http://images2015.cnblogs.com/news/66372/201701/66372-20170123164712269-588231127.jpg[/img][/align]
Julia 最大的短板在于社区。雷锋网获知,Python 已经 25 岁了, R 语言快 25 岁了,Matlab 超过 30 岁了。它们有非常扎实的社区群众基础——不断加入新工具包以及库的支持。有观点认为这些主流语言会不断改进,并在未来的某个时间点,在原本的短板上一举超越这些新兴、但强大的小众语言。Keith Lubell 就表达了类似的观点,但他补充道:投资银行业正受到来自金融科技公司越来越大的竞争压力,迫使他们考虑利用 Julia 这些新兴语言实现创新。
为了对开发者社区提供支持,AOT 的 Duve 说他有信心 Julia Computing 会成为 RStudio 那样的机构。后者为 R 语言开发开源的免费工具及商用级的专业产品。Duve 认为,Julia 采取的开发、发布方式会鼓励更多的企业级用户采用它。尤其 Julia 的用户体验友好,它的架构使得金融和经济学领域的专家们很容易使用,因而已受到金融圈部分人士的欢迎。纽联储就是一个例子。
Duve 说道:“Julia 开发者社区推动、改进该语言的方式,比 R 语言历史上的任何时候都有条理地多。”
另外,BestX 的 Thind 表示,虽然 Julia 能被轻易部署于云端容器,但与云交互存在着风险:
“在云端服务上,用 Julia 在整个簇(cluster)部署多个处理进程,就像 MapReduce 那样,是非常简便、高效的。但如果你需要与 DynamoDB 或 RedShift 这样的特定服务交互,Python 的 API 要比 Julia 的原生库成熟、强大得多。”
想要拿 Julia 试手的开发者,需要仔细考虑他们使用该语言的用途,以及拿什么与之配合。
“所有想要加入 Julia 阵营的公司都需要弄清楚,你想要用它来实现哪些不一样的功能?它能不能为其中至少一半的功能提供原生支持?你可以用 C 语言或者 Python 来完成剩下的那些,并且这会是完全无缝的体验。但是,如果你的大部分应用都需要其他语言来弥补,你应该暂时缓一缓转向 Julia,或者联系 Julia Computing 看看能否得到缺失的功能支持。”
最后,我们来看看 Julia 创始人之一的 Viral Shah 的愿景:
“某一天,开发者社区会传来一个信号—— Julia 已经做好准备,将进入指数级增长轨道。”
tuhao222222 2017-1-23 23:57
每个语音都有各自的优缺点。能把这些语言结合起来那也太牛逼了。不过julia这个女优我还是很喜欢的~