GEN and probabilistic programming languages: what are they?
The languages of probabilistic programming are a special type of programming languages which create models and forecasts by analysing data samples. They are also known as PPLs and have led to huge changes in the way software is written.
Although still at an early stage, these new software writing techniques allow us to glimpse their enormous application potential in a wide range of sectors. Some systems already use relatively simple PPLs, with very encouraging results.
Probabilistic reasoning is a useful tool
Successfully programming software to carry out complex reasoning has long been man’s dream. So far, probabilistic programming has represented the most concrete step in that direction and the first successes have quickly followed.
The major web IPs are already working on programs which exploit probabilistic reasoning to analyse huge quantities of data and produce forecast charts which are as accurate as possible. The fields for application are many and range from stock exchange trends to facial recognition and the 3D reconstruction of faces from 2D photos.
The potential uses of probabilistic programming are numerous and continue to evolve. Among the most well-known software currently in use are the following notable examples: Fossetta and Chimple (based on Java), Infer.NET (based on framework.NET) and PRISM (for PRolog). Others use autonomous programming languages, as in the case of WinBUGS or Stan.
The main purpose of these programs is to assist human beings in taking informed decisions when faced with uncertainty. The idea is to try to encode and analyse every variable, thereby creating accurate forecasts which guide people towards the choice of a particular option, based on the solid support of statistical data.
GEN: a new example of probabilistic programming
MIT (Massachusetts Institute of Technology) has introduced a new generation of probabilistic programming language, known as GEN. The feature which distinguishes it from other software already on the market is that it can be easily used by those with little specific knowledge of coding, not only by experts.
The structure of GEN is based on three main instruments, which define its most innovative features:
- It is equipped with a generative function which can group together different probabilistic models;
- It possesses interoperable modelling languages;
- It has inference algorithms with a high level of abstraction.
The programming language on which GEN is based is called Julia, with the addition of other support tools such as DML (a compiler which generates functions containing hash-tables, which are very useful for the creation of graphics), SML (used in statistical analysis) and TML (which enables the use of deep neural networks).
The results of GEN compared to other probabilistic programing languages
In order to verify the accuracy of models produced using GEN, tests have been carried out involving other probabilistic programing languages already in use. The trials involved:
- Robust regression on the Bayes algorithm;
- Gaussian learning;
- 3D estimates predicting the position of people in a room;
- Non-linear models for the forecasting of states in space;
- Models for autonomous agents.
These tests have produced positive results, confirming GEN’s enormous application potential. This probabilistic programming language can be used in many areas of research and although it is still in the testing phase, in many people’s view, it represents the future of intelligent programming.
Translated by Joanne Beckwith
