Il 2017 è stato un anno speciale per il Deep Learning. Oltre ai grandi risultati sperimentali ottenuti grazie agli algoritmi sviluppati, il Deep Learning quest’anno ha visto la sua gloria nel rilascio di moltissimi framework con cui sviluppare numerosi progetti. Nell’articolo vedremo una carrellata di molti nuovi framework che si sono proposti come ottimi strumenti per lo sviluppo di progetti Deep Learning.
PyTorch
Fra tutti i framework, quello che forse ha riscosso più successo e ha sorpreso tutti per le sue potenzialità è PyTorch , il framework per il Deep Learning proposto da Facebook.
PyTorch è un pacchetto in Python che principalmente fornisce due funzionalità ad alto livello:
- Il calcolo tensoriale (come Numpy) con accelerazione GPU
- Deep Neural Networks costruite su un sistema tape-based autograd
Infatti chi fa utilizzo di questo pacchetto, lo fa certamente per questi due motivi. Il primo è quello di utilizzarlo al posto di Numpy, in modo da sfruttare al meglio il potere di calcolo delle GPU. Il secondo è quello di utilizzare una piattaforma di ricerca Deep Learning che possa fornire il massimo delle prestazioni e della flessibilità.
PyTorch è una libreria che si basa principalmente sui tensori. Certamente se già utilizzato numpy avrai certamente avuto a che fare con i tensori e con il calcolo tensoriale. Ma questa libreria ti permetterà di sfruttare al meglio sia la tua CPU che la GPU disponibile al meglio possibile, avendo così una velocità di calcolo enorme.
Le reti neurali dinamiche utilizzate si basano su un sistema tape-based autograd. Infatti PyTorch ha un solo modo per costrure le neural networks, cioè quello di utilizzare e rieseguire un registratore a nastro. Altri framework molto famosi come Theano, TensorFlow hanno una vista statica del mondo: costruiscono una rete neurale una volta per tutte e poi riusano più e più volte la stessa struttura.
Con PyTorch si utilizza invece una tecnica chiamata Reverse-mode auto-differentiation, che permette di modificare il comportamento della rete neurale in modo arbitrario.
PyTorch durante quest’ultimo anno ha ricevuto moltissime attenzioni da molti ricercatori soprattutto nell’ambito del Natural Language Processing, preferendolo ad altri framework per la sua alta dinamicità.
Tensorflow
Al pari di Facebook, Google ha recentemente presentato TensorFlow, rilasciando nel Febbraio 2017 la sua prima versione Tensorflow 1.0 con una API stabile e compatibile. Attualmente Tensorflow è alla versione 1.5.
In aggiunta al framework principale, parecchie altre librerie aggiuntive sono state rilasciate, che includono Tensorflow Fold per i grafici dinamici di calcolo, Tensorflow Transform per le pipeline dei dati di input, e la libreria DeepMind’s higher-level Sonnet.
E dato il grande successo di PyTorch, il team di sviluppo di Tensorflow ha recentemente annunciato che presto verrà rilasciata una nuova versione che lavorerà in maniera molto simile a PyTorch.
TensorFlow è una libreria utilizza i grafi (data flow graphs) per effettuare i calcoli matematici, in questi grafi i dati fluiscono venendo via via elaborati. Ciascun nodo (nodes) rappresenta delle operazioni matematiche, mentre le connessioni (edges) tra i nodi rappresentano gli array di dati multidimensionali (tensori). Da qui viene il suo nome TensorFlow.
L’architettura flessibile di questa libreria permette di effettuare calcoli utilizzando uno o più CPU o GPU utilizzando una sola API.
Altri framework
Come Google e Facebook, molte altre compagnie stanno sviluppando e lavorando su framework di Machine Learning.
Apple ha annunciato che la sua libreria di riferimento per il machine learning sarà CoreML.
La Uber ha rilasciato Pyro, un linguaggio di programmazione “Deep Probabilistic” insieme a Michelangelo che sarà la sua piattaforma interna per il Machine Learning
Amazon ha invece da parte sua presentato Gluon, un’API di alto livello per il machine learning disponibile per MXNet, il framework per il Deep Learning di Apache.
Framework per il Reinforcement Learning
Ma i nuovi framework non finiscono qui. Infatti quelli che abbiamo visto finora hanno uno scopo generale per il Deep Learning, esistono anche framework più specialistici, in particolare per il Reinforcement Learning.
- OpenAI Roboschool è un software open-source per la simulazione di robot
- OpenAI Baselines è un set di algoritmi di Reinforcement Learning.
- Tensorflow Agents contiene un’inrastruttura ottimizzata per istruire gli agenti Reinforcement Learning utilizzando Tensorflow.
- Unity ML Agents permette i ricercatori e gli sviluppatori di creare giochi e simulatori utilizzando Unity Editor e istruendoli utilizzando Reinforcement Learning.
- Nervana Coach permette di sperimentare gli algoritmi del Reinforcement Learning.
- Facebook’s ELF è la piattaforma del ricerca dei giochi.
- DeepMind Pycolab è una engine di gioco per una gridworld customizzabile.
- Geek.ai MAgent è una piattaforma di ricerca per molti agenti di reinforcement learning.
Altri framework
Con l’obiettivo di rendere più accessibile il Deep Learning, sono presenti su web alcuni framework molto utili, come Google’s deeplearn.js ed il MIL WebDNN.
La morte di Theano
Il 2017 è stato l’anno del Deep Learning, e ci ha portato grandi innovazioni con l’introduzione ed il rilascio di così tanti framework e librerie. Ma un framework molto popolare a tutti è morto: Theano. Infatti è stato annunciato a tutti che la 1.0 sarà l’ultima release rilasciata.
ONNX
Ma le novità non finiscono certamente qui. Visto il grande numero di framework presenti per il Deep Learning ed il Machine Learning in generale, Facebook e Microsoft hanno annunciato ONNX un formato aperto per condividere i modelli deep learning attraverso i framework.
Infatti ONNX tutti gli sviluppatori potranno sviluppare e rappresentare dei modelli di Deep Learning utilizzando i diversi strumenti o librerie presenti oggi e scegliere la combinazione che meglio si adatta alle tue esigenze. E’ anche possibile sviluppare utilizzando un modello e poi sostituirlo con un altro in seguito.
Conclusioni
Come si è potuto vedere dall’articolo, il 2017 è stato l’anno del Deep Learning. Ogni grande compagnia (Uber, Facebook, Google, Amazon) ha sviluppato e rilasciato uno o più framework che permettono di sviluppare ed implementare al meglio il Deep Learning. Quindi il 2018 si prospetta un anno ricco di sviluppo per l’utilizzo di tutti questi strumenti messi a disposizione.