前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >强大的 Wolfram 11.0(上)

强大的 Wolfram 11.0(上)

作者头像
WolframChina
发布2018-05-31 10:25:20
6750
发布2018-05-31 10:25:20
举报
文章被收录于专栏:WOLFRAMWOLFRAM

█ 本文译自2016年8月8日的 Stephen Wolfram 的博客——Today We Launch Version 11!(http://blog.stephenwolfram.com/2016/08/today-we-launch-version-11/)

本号之前介绍了《从 Mathematica 1.0 到 Wolfram 11.0, 一场持续了30多年的智慧之旅!》一文。今天带您继续一起领略 Wolfram 11.0 强大的新功能——

你注意到的第一件事......

当你在桌面上第一次启动版本 11,第一件事你会注意到的就是带有更清爽字体和更严密设计的笔记本的新外观。当输入代码,会出现很多新的自动完整指令名(越来越难输错东西),当输入文本时,会出现新的实时拼写检查,我们会不断地更新以确保包含最新的单词。

如果你的计算机是设置为非英语的其他12种语言中的一种,你会立即看到:每个函数都会有你设置的语种的“代码说明”注释:

当实际运行代码时,你会注意到消息也不一样了——这对调试非常有帮助,它们可以让你立马看到产生消息时,哪个函数链被调用。

3D 打印

在版本 11 中有许多大的且具有实质性的新领域。让我们进入其中一个:3D 打印。我的第一个 3D 打印输出是在 2002 年。我们已经具备导出 STL 的能力多年,但是在版本 11 中新的和令人兴奋的是:我们已构建了一套完整的通道,从构建 3D 几何到在你的 3D 打印机(或通过打印服务)中打印。

在过去,我常常是如果想要一个 3D 的图,就制作一个 3D 并打印。偶尔,我会很幸运,很容易实现。但是,大部分时间,它是一个精雕细刻复杂的过程。因为在屏幕上显示的图形没必要对应于实际上在 3D 打印机上打印的几何。因此方便的设置或修复几何使之能在 3D 打印机上真正工作是三维计算几何的一个难题。(哦,如果弄错了,你可以从打印机中把塑料随机地喷出来。)

在版本 11 终于实现了,接收任何三维图,然后就可以 3D 打印了。或者你可以获取分子结构或高山的高程图,直接 3D 打印。很多年,我都在自己制作 3D 打印,每一次都是小小的探险。但是现在,真得谢谢版本 11,任何东西的 3D 打印都很容易。现在,我在想,或许我需要为我的办公桌打印一个 Wolfram 语言在各领域成长的三维图......

机器学习与神经网络

在某种意义上来说,Mathematica 和 Wolfram 语言一直在做人工智能(AI)。多年来,我们是解决许多人工智能问题的当仁不让的先驱——从数学求解到自动美学以及自然语言的理解。回到版本 10, 我们在机器学习中也迈出了一大步——开发了极其自动化的核心函数(Classify 和 Predict)以便按例子进行学习。

我不得不说,曾经我也不知道这些函数在实践中究竟会怎样。但实际上,它们的功能确实让人吃惊——非常满意地看到,我们的许多用户,无需咨询任何机器学习的专家,只是使用我们内置的自动化就可以完成他们的机器学习工作。

在版本 11,我们在机器学习方面又迈进了许多步。我们的方向很清晰,不只是做分类和预测,还做特征提取、维数约简和聚类等。我们自己也做了很多培训以便提供预训练的机器学习函数。机器学习函数是一种有趣的新型开发,它的核心是一种精选过程。它不是只收取电影数据,它在尽可能地收取不同种类动物的图像。

像 ImageIdentify 这样内置到版本 11 的函数,可以识别 1 万多种不同的对象。通过整个系统的设计,很容易获取已被学习的特征,并直接使用它们来大量训练新的图像分类,而且比以前效率更高。

对于现今最常用的机器学习自动化我们已经做了许多。经过多年的实践,越来越明显的是许多新的领域都可以用机器学习的方法来处理,尤其是通过神经网络。这是科学史上一个令人吃惊的篇章:我追随近40年的神经网络领域,从基本没有希望到当今最热门的领域之一,几乎每个星期都有新的发现。

但是,如果你想参与的话,你应该做什么呢?是的,你可以用底层程序库把东西拼接在一起。但是,在构建版本 11 时,我们给自己设定了一个目标,创建一种流线型方法来设置并培训神经网络——其中我们已经尽可能自动化了。这一切都很新,在版本 11 中,我们有函数,例如:NetGraph 和 NetChain,以及各种“神经网络特殊函数”,诸如 DotPlusLayer 和 ConvolutionLayer。有了这些函数就很容易采取最新的网络并快速地使用 Wolfram 语言进行设置(循环网络还没有完全融入版本 11.0 ,但应该很快就会推出)。

当然,使这一切成为可能的是它与其他 Wolfram 语言相集成。神经网络只是像其他图一样的 Graph 对象。诸如图像或文本的输入可以直接并自动使用标准的 Wolfram 语言处理成适用于神经网络计算的格式。

“神经网络”从名字上听上去像是与大脑相关。但事实上,它们是完美的一般计算结构:它们只是对应于简单函数的复杂组合。它们与我花费这么长时间学习的简单编程不是无关——尽管它们具有根据范例就可容易设置培训的特殊特征。

我们已经永久地拥有传统地统计数据拟合和插值,但是神经网络拥有庞大丰富的可能的计算结构空间以便拟合或培训数据。在过去几年里,非常明显地看到一系列领域被它所革新——还会有更多。

我希望版本 11 可以加速这一进程。因为我们已经设法使“神经网络编程”成为另一种编程范式并与其他一起集成于 Wolfram 语言中。是的,它非常有效并可以处理巨大的培训集合。但最终的可能,也是最强大的事情是它可以直接与 Wolfram 语言的其他任何部分相集成。即使在版本 11 中,我们已经把它用在许多我们内部的算法,例如,图像、信号和文本处理。“神经网络编程”仍然处在历史的早期——但我对 Wolfram 语言在即将到来的使命扮演中心角色感到兴奋。

音频

好,让我们讨论一下版本 11 中的另一个新领域:音频。我们的目标是能够在 Wolfram 语言中直接处理各种数据。现在我们已经拥有了图形、图像、几何、网络、公式等等,所有这些都一致地被语言中的一级符号结构所表示。在版本 11 中,现在我们拥有了另一种一级数据类型:音频。

音频大多是复杂的,因为它很大。但是在版本 11 中,我们已经设置好了,可以完美无瑕地处理它,比如,在 Wolfram 语言中直接处理 1 小时的音频。在幕后,是各种工程,例如,缓存、接收发送等。但是这些都是自动的——在语言中,它只是一个简单的音频对象。该音频对象可直接适用于 Wolfram 语言中所有尖端的信号处理和分析技术。

骨骼、食物、宇宙......

Wolfram 语言是一种基于知识的语言,这意味着它拥有许多内置的关于计算和这个世界的知识。现今,Wolfram 语言覆盖了真实世界的数千个领域——从国家到电影、公司和行星。每时每刻都会有新的数据加入云端的 Wolfram 知识库中心,我们在谨慎地精选世界上存在的新事物数据(比如,它知道在奥地利最近创建了新的行政部门)。

在 Wolfram|Alpha(以及由其支持的智能小助手)中可见到很多这样的数据。但是,只有在 Wolfram 语言中数据才被真正地完全用于计算——我们的所有的努力就是确保它的可用性和一致性变得显而易见。

我们一直致力于扩展由 Wolfram 语言覆盖的知识域。在版本 11 中,我们已开发多年的几个域终于可用了,其中一个特别困难的是解剖学数据。现在在版本 11 中,我们拥有人体中所有重要结构的详细的 3D 模型。因此你可以看见足部的那些复杂的骨骼是如何拟合在一起的,并且你还可以对其进行计算,或进行三维打印。你还可以了解心脏周围的动脉网络。我必须说,在整个探索过程中,对于存在人体中的形态复杂性,我从来没有这么吃惊过。在版本 11 中,它实际上是一个可做计算的域。或许还有意想不到的新函数,诸如 AnatomyPlot3D 对其进行支持。(当然,还有更多的事情要做,顺便说一下:比如,我们的解剖学数据只适应于单个“平均成年男性”,关节还不能移动等。)

Wolfram 语言现在处理的一个完全不同的领域是食物。该领域中有很多复杂的东西。首先,是本体论的问题。什么是苹果?苹果有一般的苹果,还有许多特殊类型的苹果,因此在定义数量上就有问题。一杯草莓、三个苹果、四分之一磅等。花费些许年,现在我们有一个鲁棒式的符号方式代表食物——不仅可以直接计算营养属性还有许多其他的东西。

另一个花比较长时间的是历史国家数据。我们拥有关于国家的现代完整数据(一般是从 1960 或 1970 年)。但是以前的历史呢?什么是普鲁士?什么是罗马帝国?在版本 11 中,我们最终通过历史记录,拥有了所有国家类实体的近似边界信息。因此人们可以在 Wolfram 语言中计算帝国的兴衰。

谈到历史,版本 11 中一个非常小但非常有用的附加品是历史词频数据。只要询问 WordFrequencyData 的时间序列,你就可以知道有多少人曾经在不同的历史时刻谈论过“战争”或“萝卜”。几乎每一幅图都是一堂历史课。

版本 11 中另一个很方便的函数是 WikipediaData,它可以直接给出维基百科的输入(或各种它所包含的数据)。还有 WolframLanguageData,它给出 Wolfram 语言自身的可计算数据——像文档中的范例,函数间的链接等。

在许多领域,人们大多数只是处理静态数据(“黄金的密度是什么?”,“1959年伦敦的人口是多少?”)。但是还有一些领域,人们不像对数据支持的计算那样真正感兴趣静态数据。版本 11 中有多个这样的新范例。比如人类死亡率数据(“死于年龄 X 与 Y 之间的概率是多少?”),标准海洋数据(“深度为 X 时的压力是多少?”),放射性停止功率和人类增长数据——以及根据标准宇宙模型的整个宇宙数据。

在版本 11 中新的函数还有 WeatherForecastData 和 MathematicalFunctionData,以及口袋妖怪数据和许多其他有用的东西。

计算真实世界的实体

Wolfram 语言强大的功能中,其中一项就是有能力直接对真实世界的物体进行计算。对 Wolfram 语言而言,无论是美国、俄罗斯还是一种蜥蜴类型,都是使用该语言系统的整体符号范式构建的可用于计算的符号。实体并非直接赋予值,它们只是一些符号对象。但它们的属性可以被赋予值︰比如 [[USA]][“Population”] 等于3.22亿。

但我们不只想要获取实体属性的数值,我们还想知道哪些实体的某些属性具有一些特定值。比如说我们想找出世畀上人口最多的5个国家,在 版本 11 中,有一个新方法可以找出答案。这次我们不用指定一个特定明确的实体,而是指定一个隐式定义了一系列实体的计算。所以比如说我们可以这样得到人口最多的五个国家的列表:

TakeLargest[5] 是版本11中关于运算符形式的一个新功能,它可以获取列表中的最大元素。隐式实体最终会用到大量运算符形式——类似于 Dataset 中的问题查询。并且在某种程度上,它们也深度利用了 Wolfram 语言中的符号字符——因为它们像数据一样对待这些定义它们的函数。

这一整套实体及属性和隐式实体的机制,可作用于存在于 Wolfram 语言中不同类型的实体。但对版本11 而言,它并不仅限于内置的实体类型。我们引进了一个新的结构 EntityStore,可以让你定义属于你自己类型的实体,并赋予它们属性和值等等——然后完美地在任何计算中使用。

如同 Dataset 是一般数据库概念强大的层次泛化,EntityStore 也是一般关系数据库的一种符号泛化。所以如果说你建立了一个复杂的实体仓库,你就可以使用 CloudDeploy 来迅速将其部署到云端,这样你可以在任何时候使用它。

关于地理的所有事

“了解这个真实世界”其中的一点就是了解地理。Wolfram 语言并不仅仅只有详细的地理数据(包括地球、月亮、火星甚至冥王星);它还可以使用这些数据进行计算。它有一个地理投影的巨大数据库,所有数据都能立即用于计算,而且可以支持非常精细的测地学。还记得球面三角学吗?现在 Wolfram 语言不仅仅假设地球是一个球,而且还能使用地球的实际形状来正确计算距离和面积等等。

说到绘制地图,Wolfram 语言现在不仅可以绘制全球的街道地图,而且还有国家的历史边界,以及至少能绘制低分辨率的卫星图像。而且给定街道地图,现在还能实现一种非常重要的新型计算方法:沿着街道任意两处的旅行方向(和旅行时间)。

别忘了微积分......

版本 11 有非常多的新功能,可以跨越 Wolfram 语言的所有领域。但它也在传统数学领域——如微积分中获取了大量新功能。对比早些时候的版本,我们这次为版本 11 增加的微积分新功能毫无疑问可以排在所有新功能的前列。

其中一个例子就是微分特征系统:可用于求解常微分方程和偏微分方程的特征值。为实现这一功能,需要大量算法技术的支持——实际上为了实现这一功能我们已经努力了25年多。最重要的是它很普通,它不需要数值分析的缜密知识来仔细设置某些特定问题。只需要给定方程组和其边界条件,系统就可以自动确定如何求解。

在1976年的时候,我用 Fortran 编写了一个程序,用于求解我当时研究的粒子物理问题一个一维薛定谔方程的特征值。1981年,我又编写了一个 C 语言程序对一些相对量子力学中的方程做了同样的事情。这些年我一直在等待有一天,我可以仅仅输入这些问题,就能立即获得答案。版本 11 现在就可以完成这个。

当然版本 11 中这一功能更强大且更通用。当年我处理的仅仅是一些简单的边界条件。而在这一版本中,你可以使用 Wolfram 语言中整个几何系统以及我们所拥有的数据来建立边界条件。所以很容易可以绘制出任何形状——比如说美国地图形状的“drum”的本征模式。

正因为这样,除用数值计算外并没有其他选择。但是,版本 11 仍然会在可能的时候对微分特征系统进行符号运算。版本 11 也为通用符号微分方程增加了一些新的主要功能。特别是我们有一项大型的研发项目,这个项目已经让我们几乎可以对任何课本或之类的教材中出现的符号偏微分方程进行计算,并给出符号解。

再回到1979年,那时我创造了 Mathematica 的前身,也同时列了一张清单写着我希望我们最终能实现的事情。清单中的其中一项就是求解积分方程。而在37年后的今天,我可以很激动的告诉大家,我们已经掌握了让这一目标成为现实的算法技术栈——版本 11 引入了可以对很多类型的积分微分方程进行符号求解的功能。

在微积分方面也有很多进步。比如一般区域上的一般方程的格林函数,还有期待已久的 (起码我期待了很久):梅林变换。(自从我在1977年的一份粒子物理论文中主要阐述了该领域之后,这已经成为了我最喜欢的课题之一。)

还有一点,虽然不属于经典微积分学,但版本 11 还增强了很多属于所谓的 "现代微积分" 范畴的功能——比如需要用于支持例如机器学习领域的微积分方面的内容。我们现在有更高效和强大的最小化功能,我们有复杂的贝叶斯最小化,适用于比如无监督机器学习。

教育

像偏微分方程属于复杂数学范畴,它们对物理和工程方面的很多实际应用非常重要。但对于那些更基础的数学,或比如与高中教育相关的数学,情况又是如何呢?其实这么长时间以来,Mathematica 都为这一块考虑得非常详尽。但是随着我们算法技术栈的发展,即使对更基础的数学也有一些新的功能。

举一个例子,在版本 11 中有一个新功能是可以在函数图中完全自动处理不连续、渐进线等。因此,我们完全可以用高中教学的方法绘制 Tan[x],不连接 –∞ 和 + ∞。对于 Tan[x] 而言这一点很好实现,但对于更复杂的函数来说,我们有尖端的算法技术对其进行支持。

顺带说一句,版本 11 另一个非常重要的新功能是 MathematicalFunctionData——可以使用数学函数的约 10 万种属性和数学关系进行计算——在某种意义上相当于集合了一个世纪的数学研究,并让这些研究可以立即用于计算。

我们最近为使用 Wolfram 语言在各个级别教学计算思维做了大量工作。在这些工作中其中有一点是我们希望可以确保在小学的数学教育中,任何被提及的计算是初级的 Wolfram 语言。所以我们有一些函数像 NumberExpand,将 123 写作 {100, 20, 3}。其他的还有 RomanNumeral 等等。

另外,出于对 Logo 语言的致敬,我们还引入了 AnglePath,它是一种工业级别的龟标图形,不仅可用于基础教育,还可用于高级模拟如不同类型的随机游走等。

敬请关注本号后续文章《强大的 Wolfram 11.0(下)》。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WOLFRAM 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档