It's not a bug, it's a feature

Gen, la nuova generazione di programmazione

Arriva direttamente dal Massachusetts Institute of Technology (MIT) la nuova idea di programmazione: si chiama GEN ed è il nuovo sistema di programmazione probabilistica generico. Esso raggiunge efficienza di inferenza e flessibilità nella modellizzazione attraverso tre principali strumenti: una funzione generativa per incapsulare i modelli probabilistici, linguaggi di modellazione interoperabili, modelli di indipendenza condizionale e algoritmi di inferenza efficienti ad un alto livello di astrazione.

Come dichiarato dai ricercatori, l’obiettivo è creare un software in grado di essere usato da esperti e non per complicati compiti di statistica, machine learning, computer vision, scienze cognitive, robotica, elaborazione del linguaggio naturale e intelligenza artificiale.

 

Credits: via web

Esistono già alcuni linguaggi di programmazione in grado di svolgere questi compiti come Stan, Edward, Anglican e Venture, successivamente usati per stabilire la precisione di Gen. Questi linguaggi semplificano e formalizzano l’uso di modelli probabilistici e inferenze attraverso schemi con i quali l’utente esprime il modello desiderato e il software costruisce l’inferenza.

Cosa differenzia GEN tra tutti gli altri

GEN è un linguaggio scritto in Julia con cui sono stati implementati:

  • DML: il compilatore genera delle funzioni contenenti degli hash-table, tramite ciò si è in grado di progettare grafici.
  • SML: piccolo campo della DML in cui ci si occupa dell’analisi statica. Il compilatore genera un flusso di informazioni basate su un grafico aciclico in cui ogni nodo genera scelte random.
  • TML: incapsulamento di funzioni di TensorFlow in modo da consentire l’uso di deep neural network. Ciò è consentito attraverso l’uso di variabili trainabili, placeholders e un nodo definente l’output della funzione.

Gli algoritmi probabilistici usati sono MonteCarlo e varianti dei metodi di Bayes, come gerarchie statistiche, apprendimento strutturale, simulazioni basate su modelli, filtri per la stima degli stati e tecniche di grafici inversi.

Queste tecniche sono unite con la GFI (Generative Function Interface): una scatola nera astratta per modelli probabilistici avente una barriera tra l’implementazione dei linguaggi di modellazione e la specifica dell’algoritmo di inferenza, tipicamente prodotti dal compilatore.

I test sono stati svolti su ogni obiettivo e i risultati confrontati con prove identiche ma usando gli altri linguaggi. Le prove sono: regressione robusta con l’algoritmo di Bayes, apprendimento gaussiano, modello per agenti autonomi, modello non lineare per la disposizione degli stati nello spazio e infine una stima 3D delle posizioni delle persone studiate da una depth image.
Nel paper redatto dai ricercatori sono presenti tutti i dettagli implementativi dell’algoritmo, esempi di codice, metodi utilizzati e grafici sui risultati dei test.

Risultati della prova "Bayesian robust regression" Credits: paper dell'esperimento
Risultati prova "GP structure language" Credits: paper dell'esperimento
Runtime medio Credits: paper dell'esperimento

Secondo i ricercatori la versatilità di GEN può offrire nuove strade per altri campi di ricerca. Tra tutti i possibili scenari evidenziano un dominio embedded per implementare l’interfaccia funzionale o inserire inferenze per supportare le fasi di verifica.
Certamente possiamo affermare che con questo linguaggio si è segnato un grande palo nella storia della programmazione.

Published by
Silvia Sanna