GDG DevFest Rome 2016

Simone Scardapane: Machine Learning Lab (1 dicembre 2016)

161022-ml2.jpg

Il 22 ottobre 2016 si è svolta la “Google DevFest”, organizzata dal Google Developer Group Roma Lazio Abruzzo presso l’Engineering Department dell’Università degli Studi di Roma Tre.
Uno dei seminari della “Google DevFest” è stato dedicato al “Machine Learning” ed è stato condotto da Simone Scardapane - della Università “La Sapienza” di Roma - che abbiamo intervistato.

161022-simone-scardapane.jpg

(Simone Scardapane)
 
Agatino Grillo (AG): Buongiorno Simone e grazie per la collaborazione. Ti vuoi presentare?

Simone Scardapane (SS): Sono un assegnista di ricerca presso l’Università “la Sapienza” di Roma, e le mie attività di ricerca si concentrano in prevalenza su vari aspetti del Machine Learning. Sono membro del GDG da diversi anni, ed in questo tempo abbiamo organizzato diverse presentazioni, come quella dell’ultima DevFest, per cercare di introdurre un pubblico più vasto alle tematiche del Machine Learning, che (credo) saranno sempre più importanti per sviluppatori e non negli anni a venire.
Prima di prendere il dottorato, mi sono laureato in Ingegneria Informatica a Roma Tre, ed in seguito ho conseguito un Master in Intelligenza Artificiale e Robotica presso La Sapienza.

AG: Cos’è il “Machine Learning” (ML)?

SS: Si tratta di un campo molto vasto che, in sostanza, si pone come obiettivo di realizzare algoritmi che si adattino in maniera automatica a partire dai dati che ricevono, al fine di realizzare previsioni o, più in generale, comportamenti intelligenti di vario tipo.
Un esempio classico è una banca che, al momento di erogare un prestito, potrebbe utilizzare un algoritmo di ML per fare previsioni sulla solvibilità dei propri clienti basandosi sullo storico dei prestiti già erogati fino a quel momento.
Un altro campo di utilizzo classico del ML riguarda la “raccomandazione” di prodotti o servizi simili sulla base delle scelte fatte dai consumatori già registrati nelle basi dati, che ha moltissima rilevanza oggi nei servizi di e-commerce.

AG: Come è nato il ML e perché oggi ha acquistato tanta importanza?

SS: Il Machine Learning, che possiamo considerare una branca dell’Intelligenza Artificiale, è una disciplina che sotto varie forme esiste da molti decenni: il primo embrione di quelle che oggi sono le reti neurali nasce negli anni quaranta, mentre il termine “machine learning” viene introdotto circa nel 1959. È un campo complesso che ha guadagnato dal contributo di tantissime discipline, tra cui l’informatica, la matematica, le scienze cognitive e molte altre.
Negli anni ha attraversato varie fasi, direi che oggi ha raggiunto una fase di maturità grazie ad (almeno) 3 fattori concomitanti:

  1. sono disponibili grandi basi di dati che possono essere usate per addestrare gli algoritmi di ML
  2. la potenza computazionale necessaria è disponibile a basso costo (si pensi a piattaforme di cluster computing come Spark)
  3. si sono imposte delle librerie standard che permettono di realizzare gli algoritmi in modo veloce all’interno di linguaggi e programmi estremamente interattivi.

Esiste una classificazione storica degli algoritmi di ML, che possiamo dividere in:

  1. apprendimento supervisionato: si basa sull’utilizzo di informazioni “etichettate” in qualche modo – come nell’esempio della banca, dove ciascun cliente è etichettato in funzione del suo livello di solvibilità – per predire nuovi risultati
  2. apprendimento non supervisionato: in questo caso, l’obiettivo è gestire informazioni secondo strutture non note a priori; ad esempio facendo clustering di clienti per offerte commerciali mirate
  3. apprendimento con rinforzo (reinforcement learning): è l’area più avanzata e probabilmente meno standardizzata, in questo caso i dati servono ad apprendere azioni ottimali in ambienti non strutturati – si pensi ad esempio ad un programma che impara a giocare a scacchi.

AG: Cosa serve per fare ML?

SS: Ovviamente dipende dalla quantità di dati che si vuole analizzare e dagli obiettivi che ci si prefigge. A livello implementativo, se i dati non sono eccessivi si può facilmente sperimentare su un singolo computer, basta la conoscenza di almeno un linguaggio di programmazione e delle librerie di ML e di analisi di dati disponibili. A livello teorico conta molto quanto si vuole approfondire l’argomento. Alcuni concetti di fondo si imparano facilmente, ma per andare oltre le descrizioni informali dei metodi e degli algoritmi è richiesta (almeno) una conoscenza di base di algebra lineare e di ottimizzazione.

161022-ml3.jpg

AG: in cosa è consistito il tuo ML lab?

SS: Nel lab che ho condotto durante la Google Fest abbiamo usato scikit-learn (sklearn) - una libreria open source di apprendimento automatico in Python. L’idea era quella di mostrare che, con il livello di maturità raggiunto dalle librerie software di oggi, si può arrivare a dei primi risultati in maniera rapida e valutando tutto il processo ad alto livello. Ovviamente questo non toglie la necessità di capire gli algoritmi, ma credo che questo genere di esperienza “hands-on” aiuti ad invogliare le persone ad avvicinarsi a questo campo.

Nel dettaglio, sklearn contiene algoritmi ML di classificazione, regressione, clustering, e diverse funzioni di supporto per la valutazione e l’ottimizzazione dei modelli. Soprattutto, ha un’interfaccia molto semplice e consistente per il suo utilizzo. Per chi volesse replicare quanto fatto, consiglio di scaricare e installare l’ambiente Pyhton integrato Anaconda, un full-stack che contiene tutto quello che serve, incluso un IDE specializzato per il calcolo scientifico.

Nel lab abbiamo visto e commentato insieme tre esempi di algoritmi ML:

  • Music classification: classificare secondo il genere musicale un insieme di canzoni tratte da un dataset predefinito.
  • Image segmentation effettuata in maniera non convenzionale grazie a un algoritmo di clustering.
  • Joke recommendation: come consigliare barzellette usando il dataset di prova 1_1 della Jester collection.

Tutto il codice zippato e le slides relative sono disponibili sulla mia pagina web.

AG: Che sviluppi futuri ti aspetti per il ML?

SS: Negli ultimi due/tre anni abbiamo visto una esplosione di applicazioni grazie alla diffusione del “deep learning”, una nuova famiglia di algoritmi che permettono di estrarre rappresentazioni gerarchiche di dati complessi (es., immagini). Sicuramente questo trend continuerà, ad esempio con nuovi filoni di applicazioni in ambito biomedico e di analisi di dati scientifici (per esempio nel campo della fisica delle particelle).
Più in generale, tutti i risultati ottenuti finora sono solo una piccola parte di quello che servirebbe per avere degli algoritmi che “imparano” nel senso più generale del termine. L’accelerazione del ML e del deep learning sicuramente porterà ad una simile accelerazione in questi campi più di frontiera, soprattutto nel reinforcement learning, nell’analisi di dati complessi, nel trasferimento di conoscenza fra problemi diversi, e così via.

AG: Cosa consigli a chi voglia intraprendere questo tipo di studi a livello universitario?

SS: Come già detto, il ML è un campo molto variegato, a cui ci si può affacciare da diverse discipline, incluse informatica, ingegneria, matematica e così via. Il mio consiglio per chi volesse specializzarsi in questa disciplina è di controllare bene quale sia l’opzione migliore all’interno della propria università – in alcuni casi potrebbe essere preferibile un percorso all’interno di Informatica o Ingegneria Informatica, in altri i corsi potrebbero essere erogati all’interno dell’area di matematica applicata o statistica. È difficile dare un consiglio che valga in generale.

AG: Cosa consigli invece a chi voglia approfondire l’argomento?

SS: Oggi il modo più comune di approcciarsi al ML è quello di frequentare uno dei tanti corsi online disponibili su piattaforme MOOC, come quelli di Coursera o Udacity. Si tratta di ottimi punti di partenza che permettono un buon ripasso dei fondamenti ed una certa visione di insieme. A quel punto è possibile seguire materiale più specializzato a seconda dei propri interessi. Il mio consiglio in questo caso è di provare da subito ad applicare le tecniche che si imparano, ad esempio all’interno di piattaforme come Kaggle che mettono a disposizione diversi dataset su cui confrontarsi. Come in tutti i settori, l’esperienza pratica non è mai troppo poca, ed è l’unica che permette di prendere realtà familiarità con una vasta schiera di tecniche ed algoritmi.

Link

Google Developer Group Lazio e Abruzzo

Simone Scardapane

Strumenti e tool

 

AG-Vocabolario: 

Google DevFest + Linux Day Roma 22 ottobre 2016

161022-gdfest-2016.jpg

Sessioni Monografiche

  • Angular2
  • BigData
  • DevOps
  • Machine Learning
  • Mobile

Angular 2

il Web avanza ed incontra il mobile su ogni piattaforma: Angular 2 è un framework Javascript molto potente per creare applicazioni web desktop e mobile La nuova versione è più semplice da utilizzare ma obbliga a scelte preventive importanti (non solo il vecchio javascript). Che vantaggi? Quali strategie architetturali e di approfondimento?
Codelab sulla parte Web e Mobile nativo con Mini Progetto reale.
Prerequisiti
Venite con il notebook e con Node installato. Per lo sviluppo mobile nativo occorre anche avere Nativescript e SDK (Android o/e iOS).
Agli iscritti verrà fornita la lista esatta del Software da installare con le istruzioni
I più bravi e fortunati tra gli iscritti registrati saranno premiati con maglietta, block notes ed una licenza a scelta JetBrains
..

BigData

Cosa significa Data Science? Perchè ha tanto successo in questo periodo e come mai tutte le aziende innovative cercano esperti in Analisi di grandi quantità di Dati?
Verranno illustrate le tecniche principali e le abilità non tipicamente informatiche da sviluppare.
L'evoluzione da Map Reduce ad Apache Spark ed ai principali Servizi, tra i quali i nuovi servizi Google per lo streming di enormi flussi di dati spiegati (in inglese) da Mete di Google.
Codelab con Databricks e le migliori risorse per imparare.
Prerequisiti
Venite solo con il con il notebook e con Node installato. E' tutto in Cloud..
I più bravi e fortunati tra gli iscritti registrati saranno premiati con maglietta, block notes ed una licenza a scelta JetBrains.

DevOps

Developer di Sistemi capaci di automatizzare l'integrazione tra ambienti diversi e distribuiti, in particolare per il Cloud.
Virtualizzazione leggera con Docker e le tecniche per creare e scalare container, immagini, per creare pipeline e per ottenere un processo snello, veloce e automatico.
Organizzazione e concertazione di Sistemi con Google Kubernetes (in inglese)

Prerequisiti

Venite con il notebook in cui avete installato Docker: https://www.docker.com/products/docker
I più bravi e fortunati tra gli iscritti registrati saranno premiati con maglietta, block notes ed una licenza a scelta JetBrains.

Machine Learning

Introduzione pratica al Machine Learning in Python con scikit-learn.
Perchè Google (e moltissime altre aziende di successo) utilizzano il ML in praticamente tutti i loro sistemi applicativi. I campi di applicazione ed i diversi utilizzi.
Tre casi d'uso realistici relativi alla classificazione, al clustering, ed al recommending.

Prerequisiti

Venite con il notebook in cui avete installato Python e librerie associate ( in particolare Sklearn). Il modo più semplice è con Anaconda, un build che comprende tutto. https://www.continuum.io/downloads
Agli iscritti verrà fornita la lista esatta del Software da installare con le istruzioni
I più bravi e fortunati tra gli iscritti registrati saranno premiati con maglietta, block notes ed una licenza a scelta JetBrains.

Mobile

Non solo Android ma soprattutto non solo Smartphone.
Che approccio e che tecniche utilizzare per creare una semplice app in Android ed iOS.
Android TV: che cosa è, come orientarsi, cosa è possibile fare.
Dispositivi e Piattaforme diverse: come sarà il futuro di un developer mobile e quali sono le opportunità più interessanti.
La caccia al Tesoro con i visori 3D in realtà virtuale.

Prerequisiti

Il Lab non è pre principianti. Dovete avere installato l'SDK Android o iOS.
Agli iscritti verrà fornita la lista esatta del Software da installare con le istruzioni
I più bravi e fortunati tra gli iscritti registrati saranno premiati con maglietta, block notes ed una licenza a scelta JetBrains.

CoderDojo

I CoderDojo sono club gratuiti, orientati all'insegnamento della programmazione informatica ai più piccoli. CoderDojo è un movimento aperto, libero e totalmente gratuito, organizzato in centinaia di club indipendenti sparsi in tutto il mondo. Ogni Dojo organizza le proprie attività senza scopo di lucro, rispettando le indicazioni della Charter internazionale stilata dalla Fondazione Internazionale CoderDojo (per informazioni: www.coderdojo.com). Le attività di formazione dei club ruotano intorno al gioco, lo scambio reciproco ed il peer learning, secondo l’unica regola fondamentale di ogni dojo: Above all, Be Cool..
Durante l'evento 30 bambini dagli 8 ai 13 anni impareranno a programmare giocando insieme.

 

AG-Vocabolario: