📜 ⬆️ ⬇️

Development of R & D projects continues: launch of Wolfram Language 11.1


Translation of Stephen Wolfram's post (Stephen Wolfram) " The R & D Pipeline Continues: Launching Version 11.1 ".
I express my deep gratitude to Polina Sologub for assistance in translating and preparing the publication.

Content


- A small release is not bad either.
- Visual changes
- Many new features
- Neural networks
- Machine learning
- Audio
- Images and visualization
- More data
- Integrated external services
- More math, more algorithms
- Details of dates
- language setting
- Storage language
- Programming at a low level
- Strengthening infrastructure
- And one more thing


A small release is not bad either.


I am pleased to announce that version 11.1 of the Wolfram Language (and Wolfram Mathematica systems) has been released today. At the moment, version 11.1 is already running in the Wolfram Cloud , and Desktop versions are already available for download for Mac, Windows and Linux.

What's new in version 11.1? In fact, a lot of things. In short :


')
There are a lot of new things in it. You might think that the release of .1 almost 29 years after the release of version 1.0 is hardly surprising. However, in the case of our company, things are different. Since we have built the whole stack of technologies available now, we are only accelerating in our development. And now, even in version 11.1, many new features are introduced.

Visual changes


Immediately striking that the documentation looks different. We have optimized the design, which has now become adaptive, so the window looks good even when it is open in a narrow sidebar in the cloud or on a smartphone.



We also introduced some new elements like a preview window for the Details Details block. Most users would like to see examples immediately when they hit a function page.



Many new features


Here is a word cloud from the names of new features in version 11.1:



In total, the new version introduced 132 new functions (along with the other 98, which were substantially refined). These functions are the finished products of our R & D pipeline for several months that have passed since the release of version 11.0 (see the translation of the article on Habrahabr).

When we present the "integer" version (the number of which is just an integer), we, as a rule, introduce many new structures. In a (presumably) minor update like version 11.1 we are not trying to get new frameworks. Instead, as a rule, new functionality is added to existing frameworks, often with a few (sometimes “experimental”) layouts for newer, larger structures. Well, if the new framework turns out to be finished by the time of release of version .1, it is also included in it.

Neural networks


Neural networks are an important and “hot” area in which our company is making great strides forward, including those presented now in version 11.1. It is extremely interesting for me to keep track of how quickly this area of ​​knowledge is developing all over the world, and it's nice to know that all this time the Wolfram Language has been at the forefront of this development.

Our goal is to create a high-level interface for neural networks, fully integrated into the Wolfram Language. In version 11.1, some new, newly developed blocks have been added: in particular, 30 new types of neural network layers (two times more than in 11.0), together with automated support for recurrent networks. The idea is to allow the neural network to be symbolically defined in the Wolfram Language, in order to allow the language to automatically fill in the details using low-level libraries. This is very convenient for regular networks with direct connections; however, for return networks (with variable length sequences, etc.) this is a basic need in case you want to avoid low-level programming.

Another important feature of Wolfram neural networks is that they are configured to automatically encode images, text, or anything else. In version 11.1, the functions of NetEncoder and NetDecoder cover many new cases, expanding the list of those already integrated into Wolfram Language.

It is worth noting that under the entire integrated symbolic interface, the Wolfram Language uses efficient low-level libraries (currently MXNet ), which ensure that the latest processors and GPU configurations are used with maximum performance. By the way, with the release of version 11.1, it became possible to store the complete specifications of the neural network in .wlnet files.

A lot of effort requires the processing of neural networks as symbolic objects. In 11.1, there are now functions ( NetMapOperator and NetFoldOperator ) that symbolically build new neural networks. And precisely because neural networks are symbolic, they are easy to manipulate: for example, “disassemble” them in order to control what they do from the inside, or to systematically compare the performance of different network elements.

In version 11.1 there is a convenient function - NetModel , created to work with pre-trained or unprepared neural network models. To date, we have included only a small number of well-known neural networks, however, we plan to add them every week, finding what is being developed within the framework of the scientific community, as well as adding some of our own ideas.

Here is a simple example of how NetModel works:



Now apply any factual data and see how the network finds the correct answer:



It is easy to “look inside” and “see what it thinks of” such a network. Here is a small visualization of what happens on each layer of the network - and yes: after all, the first square lights up in red, which means that the output is 0:



Machine learning


Neural networks are an important method of machine learning . But one of the main principles of the Wolfram Language is to provide a high degree of automation of functionality regardless of the basic methods. And in version 11.1, all this has become much more (as is often the case, for the most part the newest methods of in-depth training of neural networks are used for this, but for users it is important what they do and not how they do it).

My personal favorite among the new machine learning features in version 11.1 is the FeatureSpacePlot . Give her any collection of objects, and she will place them in the appropriate "feature space." Here is an example with the flags of European countries:



The FeatureSpacePlot function can immediately highlight complex features for specific input classes — photos, texts, etc. Now, there is also a FeatureNearest function — similar to Nearest , but working in feature space. Yes, and since all the material with NetModel and pre-trained network models immediately falls within the scope of these functions, experiments with “value spaces” become common:



In particular, various useful neural network programs can be built with NetModel . But in version 11.1 there were also some new machine learning features. Vivid examples are the ActiveClassification and ActivePrediction functions , which build classifiers and predictors by actively sampling the space and learning how to do it as efficiently as possible. There will be many more applications for the end user based on the ActiveClassification and ActivePrediction functions , but the most interesting thing for us is that we can use these functions to optimize all kinds of meta-algorithms built into Wolfram Language.

Audio


In version 11.0 , the process of integrating audio (as was the case with images ) in the Wolfram Language began. This process continued in version 11.1. For example, for stationary systems, the AudioCapture function has been added to record sound from a microphone to a computer (automatic processing of large audio samples is not a trivial task). For example, I say hello:



You can take this entry, and, say, make a cepstrogram (yes, this is another new feature for working with audio in version 11.1):



Images and visualization


In version 11.1, a whole range of new features for working with images and visualization has appeared . CurrentImage has become faster and better. Many new effects have been added to ImageEffect . There are new features and capabilities for areas of computational photography and computational microscopy . And the images have become even more integrated as abstract objects of the language, with which you can, for example, immediately perform arithmetic operations:



And here's something else that I have long wanted: the ability to take a bitmap image and find its approximate representation in vector form :



The TextRecognize function has also been significantly improved and is now able to distinguish the structural elements of the text: paragraphs and columns and the like.

Oh, and there are such things as GeoBubbleChart (the population of the largest cities in the USA is shown here):



There are many more small (but nice) innovations: support for arbitrary symbols in pie charts , optimized classification of discrete histograms , as well as full support for scaling functions for Plot3D , etc.

More data


New knowledge is constantly added to Wolfram Knowledgebase , and since the release of version 11.0, many completely new things have been added: 130000+ new types of products , 250000+ atomic spectral lines , 12000+ new mountains , 10,000+ new well-known buildings , 300+ types of neurons , 650 + new waterfalls , 200+ new exoplanets (because they were recently discovered), and much more (not to mention the new writing of 7000+ words). Also, for example, a much higher resolution of the geo-data of heights appeared , so now we can make a much more detailed 3D model, say, Mount Everest :



Integrated external services


Integrated external services allow built-in functions to work by calling external APIs. Two examples are WebSearch and WebImageSearch functions . Here are the images found by searching on the Internet for "colorful birds":



Let's see what ImageIdentify thinks about them (in version 11.1, the ImageIdentify function became much more complete):



Since WebSearch and WebImageSearch use external APIs , users must pay for them separately. But we created the so-called Service Credits to simplify this process (available Service Credits can be viewed using the $ ServiceCreditsAvailable symbol).

In future versions there will still be enough examples of integrated services, and in version 11.1 there is already TextTranslation . The WordTranslation feature ( introduced in version 11.0 ) translates single words from hundreds of languages; The TextTranslation function uses external services to translate full text fragments between several dozens of languages:



More math, more algorithms


A significant part of our efforts is devoted to expanding the boundaries of mathematical and algorithmic calculations . Therefore, it is not surprising that in version 11.1 certain progress was achieved in all these areas. These are the space-filling curves , fractal grids , and methods for uniform distribution of points on the sphere :



There are new types of spatial , reliable and multidimensional statistics . Hankel transformations , working with the inverse of a given module , and much more. Even in the D function (the differentiation operator) something new appeared: the n - th function in the general form:



And one more thing about differentiation: the RealAbs and RealSign functions have now appeared, which are Abs and Sign versions, which are determined by the real axis, so now you can freely differentiate without having to make any assumptions about the variables.

In version 10.1, we introduced the AnglePath function, which calculates a path from consecutive segments with given lengths and angles. At some level, AnglePath is like the Logo (or Scratch) variant of the “turtle geometry”. However, the AnglePath function turned out to be surprisingly useful, so for version 11.1 we generalized it to AnglePath3D (and, yes, there are all sorts of subtleties associated with Euler angles and so on).

Date Details


When we say "June 23, 1988," what do we mean? Beginning of this day? Whole 24-hour period from midnight to midnight? Or what? In version 11.1, we introduced the notion of detail for dates , so you can decide whether the date represents a year, day, or week, starting on Sunday.

This is a good example of the character nature of the Wolfram Language, and it solves all sorts of problems well when working with dates and times. Here, for example, how we now present the “current week”:



Current decade:



This is the next month:



And here it says that we want to start from next month, and then add 7 weeks - and get another month:



And here is the result of the month's detail:



The Dated function can be used as a specifier, for example, for properties of subjects from the knowledge base (the result of a query about the number of New Yorkers in 1970 is shown below):



Language settings


I am very proud of how adaptable Wolfram Language is. We always try to add small amenities.

One of our principles is that if people do the same computational work, it should be embedded as a function. A very simple example from version 11.1 is ReverseSort :



(one might think: what's the point? This is just Reverse [ Sort [...]] . However, the ReverseSort function is often applied to a bunch of objects, and it is much easier to use the ReverseSort / @ ... construct, rather than Reverse [ Sort [#]] & / @ ... or Reverse @ * Sort / @ ...) .

Another little convenience: for the Nearest function, there are now special ways to set the values ​​obtained at the output. For example, this construction gives the values ​​of the 5 smallest distances (from the numbers in the list) to the number 2.7:



CellularAutomaton is a feature with a very wide scope of application. In version 11.1, you have an opportunity to set its parameters more easily, for example, using associations:



We always try to make sure that our innovations are applied as widely as possible. You can now use the UpTo function in many places: for example, in specifying arguments to the ImageSize function.

We also always strive for maximum generalization. So, IntegerString now works not only with the standard representation of integers, but also with the traditional ones used throughout the world:



And IntegerName can now also work with different types and languages ​​of names:



There are many more examples, each of which makes the experience of using the Wolfram Language a little more convenient.

Storage language


If you create a definition list of x = 7 , or $ TimeZone = 11 , then it will be saved until you delete it or until the session ends. But what if you want definitions to persist longer — during all your sessions? In version 11.1 this is made possible by PersistentValue .

PersistentValue allows you to specify a name (for example, “Foo” ) and a “save location” (this is also possible with the PersistenceTime and ExpirationDate functions). “KernelSession” means that the value is saved only for one session. However, you can also use “FrontEndSession” or “Local” (connection to your computer), or “Cloud” (which means synchronization through the cloud all over the world).

The PersistentValue function is fairly generic. This allows values ​​to be located in different places (for example, in different private clouds ); and, if the $ PersistencePath determines the browsing order, then the MergingFunction determines how (if necessary) these values ​​are combined.

Low level programming


One of the goals of Wolfram Language is to provide the possibility of the widest possible interaction with all computing ecosystems. Version 11.1 adds support for the M4A audio format, the .ubj binary JSON format, as well as the .ini and Java.properties files. Among the new features, BinarySerialize should also be named, which converts any Wolfram Language expression to a new binary file (" WXF ") in a form optimized for speed or size:



BinaryDeserialize allows you to get it back:



In version 11.0, WolframScript was introduced - a command line interface to the Wolfram Language, working locally or in the cloud. With WolframScript, you can create standalone Wolfram Language programs that run from the command line. The new version has several improvements for WolframScript , and now there is a new menu item New> Script , which provides you with a document interface for creating .wls files (= "Wolfram Language Script") that will be executed using WolframScript :



Strengthening the infrastructure


One of the main ways of developing the Wolfram Language lately is deployment. We have made a huge amount of effort to develop in this direction.

We constantly make updates for the Wolfram Cloud, and very often (and imperceptibly) we expand the capabilities of server and user interface performance. In version 11.1 we made some important updates.

There was an AutoCopy function that can be applied to any cloud object, and every time an object is available, a fresh copy will be automatically saved. This is very useful if, for example, you want to create a document that many people can change individually (“explore these ideas; here’s a document to start with ...”, etc.)

CloudDeploy [ APIFunction [...]] greatly simplifies the API deployment process. In version 11.1, there are several options for automating aspects of API behavior. The AllowedCloudExtraParameters function allows you to tell whether API parameters such as "_timeout" or "_geolocation" can be automated. There is also the AllowedCloudParameterExtensions function (no, this is not the longest name in the system; this honor currently belongs to the MultivariateHypergeometricDistribution function). The AllowedCloudParameterExtensions function allows you to say not just x = value , but x __url = ... , or x __json = ....

Also in version 11.1, various functions appeared to support the private copies of Wolfram Cloud and our new Wolfram Enterprise Private Cloud . For example, in addition to the $ WolframID for the Wolfram Cloud, there is also a $ CloudUserID that allows authentication in private clouds. And within the system, all kinds of new features associated with “multi-cloud identification” are supported (this is difficult; however, the symbolic nature of the Wolfram Language allows you to beautifully cope with all the difficulties).

And something else


I summarized some of what appeared in version 11.1. I could tell a lot more. About new features, new features, each of which will be interesting to someone. The fact that I wrote so much about such a small update testifies to the power of R & D projects - and how much can be done with what we have created in the Wolfram language over the past 30 years.

We always work with a portfolio of projects: from small ones that are implemented very quickly, to those that can mature for a decade or more. Version 11.1 implements the results of several multi-year projects (in the field of machine learning, computational geometry, etc.), as well as a great many “short” projects. I look forward to your stories about what you are doing with the new version.

Source: https://habr.com/ru/post/324564/


All Articles