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: