Machine Learning

TensorFlow: resoconto secondo incontro Meetup "Machine-Learning e Data Science" Roma (19 febbraio 2017)

170219-tensorflow.jpg

Il 16 febbraio 2017 si è svolto a Roma – presso il Talent Garden di Cinecittà - il secondo incontro del Meetup "Machine Learning e Data Science" (web, fb, slideshare): l’incontro - organizzato insieme al Google Developer Group Roma Lazio Abruzzo   - è stato dedicato alla presentazione di TensorFlow,  la soluzione di Google per il deep learning nel machine learning.

Nel seguito una breve sintesi dell’incontro del 16 febbraio 2017.

Prima di iniziare:

•    Cos’è il Machine Learning? Intervista a Simone Scardapane sul Machine Learning Lab (1 dicembre 2016)
•    Cos’è TensorFlow? Andrea Bessi, “TensorFlow CodeLab”, Nov 16, 2016

Resoconto

Premessa

Il 15 Febbraio 2017 a Mountain View (USA) si è tenuto il “TensorFlow Dev Summit” , il primo evento ufficiale di Google dedicato a TensorFlow, la soluzione di deep learning rilasciato circa un anno fa e giunta adesso alla versione 1.0 “production ready”.
Il “TensorFlow Dev Summit” è stato aperto da un keynote di Jeff Dean (wiki, web, lk) - Google Senior Fellow - Rajat Monga (tw) - TensorFlow leader nel Google Brain team - e Megan Kacholia (lk) Engineering Director del TensorFlow/Brain team.

Per approfonsire il #TFDevSummit 2017:

L’incontro del Meetup "Machine-Learning” di Roma è stata un’occasione per rivedere insieme e commentare il video e fare anche una breve presentazione di TensorFlow.
Alla fine dell'evento c’è stato un piccolo rinfresco aperto a tutti gli appassionati di deep learning a Roma.

Simone Scardapane: “TensorFlow and Google, one year of exciting breakthroughs”

Simone (mup, web, fb, lk) ha aperto l’incontro con una breve presentazione sul deep learning e TensorFlow.
“TensorFlow” ha detto Simone “ ha reso accessibili a tutti le reti neurali che sono alla base del deep learning e dell’intelligenza artificiale. Prima di TensorFlow c’era una oggettiva difficoltà nel gestire e allenare reti neurali vaste e complesse”.
Le moderne architetture di deep learning usano infatti reti neurali molto complesse: ad esempio nelle applicazioni di data imaging  i modelli architetturali prevedono decine di milioni di parametri.

170219-reteneurale.jpg

(Rete neurale, immagine tratta da http://joelouismarino.github.io/blog_posts/blog_googlenet_keras.html)

Uno dei grossi vantaggi di TensorFlow è che permette di definire una rete neurale in modo simbolico: lo strumento fornisce inoltre un compilatore efficiente che gestisce in automatico il processo di back-propagation.
TensorFlow può essere utilizzato inoltre con una interfaccia semplificata come Keras arrivando quasi ad una sorta di programmazione dichiarativa.
La prima release di TensorFlow – ha ricordato Simone - è stata rilasciata nel novembre 2015 con licenza aperta Apache 2.0  (cos’è?). Il 15 febbraio 2017 – durante il TFDevSummit - è stata annunciata la versione 1.0 di TensorFlow la prima “production ready”.
La disponibilità di un ambiente deep learning aperto e “user-friendly” ha permesso lo sviluppo di una vasta comunità di esperti, ricercatori e semplici appassionati e il rilascio applicazioni software di grande impatto. Simone ha mostrato alcuni esempi.

1) Neural image captioning: software in grado di riconoscere e descrivere o sottotitolare immagini.

170216-tensorflow-s2.jpg
 

170216-ragazzo-aquilone.jpg

170216-tren-b-n.jpg

2) Google Neural Machine Translation (GNMT)  che ha permesso il rifacimento di “Google translator” grazie al deep learning: invece di tradurre parola per parola ora è possibile analizza il testo nella sua interezza cogliendo significato e il contesto con un livello di accuratezza ormai vicino alla traduzione umana.

nmt-model-fast.jpg

170216-neural-translation.jpg
170216-neural-translation2.jpg

3) Generative Adversarial Networks (GANS) sistemi capaci di generare nuovi dati grazie a un emenorme “training set” e che lavorano con una coppia di reti neurali: la prima produce nuovi dati la seconda controlla la “bontà” del risultato; questi sistemi sono già stati usati per generare immagini artificiali, scenari per video-game, migliorare immagini e riprese video di scarsa qualità.

170216-generative-image

4) Alphago: il deep learning è anche alla base dei recenti spettacolari successi dell’IA nel campo dei giochi da tavolo come la vittoria di Alphago di Google  contro il campione del mondo di GO.

170216-alphago.jpg

5) WaveNet - a generative model for raw audio - capace di generare discorsi che imitano una voce umana con molta più “naturalezza” rispetto ai migliori sistemi di Text-to-Speech oggi esistenti. WaveNet è già stato utilizzato anche per creare musica artificiale.

Simone ha concluso il suo intervento ricordando che di deep learning e ML si parlerà anche in un track specifico alla Data Driven Innovation Roma 2017   che si terrà presso la 3° università di Roma il 24 e 25 febbraio 2017.

Sintesi del keynote di Jeff Dean, Rajat Monga e Megan Kacholia su TensorFlow

Il keynote di apertura del TF DevSummit 2017 condotto da Jeff Dean, Rajat Monga e Megan Kacholia  ha trattato:

  • origini e storia di TensorFlow
  • i progressi da quanto è stata rilasciata la prima versione opensource di TensorFlow
  • la crescente comunità open-source di TensorFlow
  • performance e scalabilityà di TensorFlow
  • applicazioni di TensorFlow
  • exciting announcements!

Jeff Dean

jeff dean.jpg

Jeff ha detto che l’obiettivo di Google con TensorFlow è costruire una “machine learning platform” utilizzabile da chiunque.
TensorFlow è stato rilasciato circa un anno fa ma le attività di Google nel campo del machine learning e deep learning sono iniziati 5 anni fa.
Il primo sistema realizzato – nel 2012 – è stato DistBelief un sistema proprietario di reti neurali adatto ad un ambiente produzione come quello di Google basato su sistemi distribuiti (vedi “Large Scale Distributed Deep Networks” in pdf). DistBelief è stato utilizzato in molti prodotti Google di successo come Google Search, Google Voice Search, advertising, Google Photos, Google Maps, Google Street View, Google Translate, YouTube.
Ma DistBelief aveva molti limiti: “volevamo un sistema molto più flessibile e general purpose” ha detto Jeff “che fosse open source e che venisse adottato e sviluppato da una vasta comunità in tutto il mondo e orientato non solo alla produzione ma anche alla ricerca. Così nel 2016 abbiamo annunciato TensorFlow, una soluzione capace di girare in molteplici ambienti compreso IOS, Android, Raspberry PI, capace di girare su CPU, GPU e TPU, ma anche sul Cloud di Goole ed essere interfacciata da linguaggi come Python, C++, GO, Hasknell, R”.

170216-tensorflow-keynote1.jpg
TensorFlow ha anche sofisticati tool per la visualizzazione dei dati e questo ha facilitato lo sviluppo di una vasta comunità open source intorno a TensorFlow.

170216-tensorflow-keynote2.jpg

Rajat Monga

rajatmonga2.jpg

Rajat Monga ha ufficialmente annunciato il rilascio della versione 1.0 di TensorFlow illustrandone le nuove caratteristiche.

170216-tensorflow-keynote3.jpg

170216-tensorflow-keynote4.jpg

Rajat ha poi illustrato le nuove API di TensorFlow

170218-tf-model.jpg

TensorFlow 1.0 supporta IBM's PowerAI distribution, Movidius Myriad 2 accelerator, Qualcomm SnapDragon Hexagon DSP. Rajat ha annunciato anche la disponibilità di XLA an experimental TensorFlow compiler  specializzato nella compilazione just-in-time e nei calcoli algebrici.

170218-tf-xla.jpg

Megan Kacholia

megankacholia2.jpg

Megan Kacholia ha approfondito il tema delle performancedi TensorFlow 1.0.

170216-tensorflow-keynote7.jpg

In ambiente di produzione si possono utilizzare  molteplici architetture: server farm, CPU-GPU-TPU, server a bassa latenza (come nel mobile) perché TensorFlow 1.0 è ottimizzato per garantire ottime performance in tutti gli ambienti.

170218-tf-performance1.jpg

Megan ha poi illustrato esempi dell’uso di TensorFlow in ricerche d'avanguardia - cutting-edge research – e applicazioni pratiche in ambiente mobile.

170218-tf-research2.jpg

170218-tf-research1.jpg

Conclusione del keynote

In conclusione del Keynote è di nuovo intervenuto Jeff per ringraziare tutti coloro che contribuiscono alla comunità di TensorFlow pur non facendo parte di Google.
“Dalla comunità” ha detto Jeff “arrivano suggerimenti, richieste e anche soluzioni brillanti a cui in Google non avevamo ancora pensato” citando il caso di un agricoltore giapponese che ha sviluppato un’applicazione con TensorFlow su Raspberry PI per riconoscere i cetrioli storti e scartarli nella fase di impacchettamento.
Nel campo della medicina – ha ricordato Jeff – TensorFlow è stato usato per la diagnostica della retinopatia diabetica (qui una sintesi) e all’università di Stanford per la cura del cancro della pelle .

Contatti

•    Meetup “Machine-Learning e Data Science” di Roma: - sito web e pagina Facebook

Approfondimenti

Video

Ulteriori informazioni su TensorFlow

Leggi anche

AG-Vocabolario: 

Resoconto primo incontro Meetup "Machine-Learning e Data Science" (3 febbraio 2017)

170203-ml-meetup.jpg

Il 2 febbraio 2017 si è svolto a Roma il primo incontro del Meetup "Machine-Learning e Data-Science"  (fb) presso la Sala Storica di LUISS ENLABS.

Agenda

  • Simone Scardapane e Gabriele Nocco, presentazione del Meetup "Machine-Learning e Data Science"
  • Gianluca Mauro (AI-Academy): Intelligenza artificiale per il tuo business
  • Lorenzo Ridi (Noovle): Serverless Data Architecture at scale on Google Cloud Platform

Simone Scardapane e Gabriele Nocco, presentazione del Meetup "Machine-Learning e Data Science"

161022-simone-scardapane.jpg

(Simone Scardapane)

Simone (mup, web, fb, lk) ha rapidamente illustrato le finalità del Meetup "Machine-Learning e Data-Science" 
“Vogliamo creare una comunità di appassionati e professionisti di ML, AI e Data Science” ha detto Simone, “un luogo dove trovare risposte a domande quali:

  1. Sono appassionato di Ml, dove trovo altri esperti?
  2. Cerchiamo qualcuno esperto di ML, ne conosci?
  3. Mi piacerebbe avvicinarmi a ML, come faccio?”

gabrielenocco.jpeg

(Gabriele Nocco)

Gabriele Nocco (mup , fb, lk) ha annunciato che il secondo evento del Meetup si terrà a Roma il 16 febbraio 2017 al Talent Garden di Cinecittà (mappa) in collaborazione con il Google Dev Group di Roma . Per partecipare occorre registrarsi – gratuitamente – a EventBrite.
“Parleremo di TensorFlow  e proietteremo il keynote ed alcuni momenti salienti del primo TensorFlow Dev Summit per tutti gli appassionati di deep learning e, grazie anche alla gentile sponsorship di Google, avremo il nostro secondo momento di networking condiviso nei bellissimi spazi a nostra disposizione” ha detto Gabriele.
innocenzo-sansone.jpg

(Innocenzo Sansone)

È intervenuto anche Innocenzo Sansone (fb, tw , lk)  – tra gli organizzatori e sponsor – che ha ricordato che il 24 e 25 marzo 2017 a Roma avrà luogo Codemotion  nel quale è previsto – tra gli altri – anche un track specifico sul Machine Learning.

Gianluca Mauro (AI-Academy ): Intelligenza artificiale per il tuo business

170203-gianluca-mauro2.jpg

(Gianluca Mauro)

Gianluca (blog, lk) – ingegnere, imprenditore, esperto di AI, ML e Data Science – è anche uno dei 3 fondatori – insieme a Simone Totaro  (lk)  e Nicolò Valigi (lk) - di AI-Academy  una startup che si prefigge di favorire l’utilizzo dell’Intelligenza Artificiale nei processi di business aziendali (vedi AI Academy manifesto).

ai-academy.jpg

Breve storia dell’Intelligenza Artificiale

Nella prima parte del suo intervento Gianluca ha delineato lo sviluppo storico dell’Intelligenza artificiale.
Gli inizi della IA si devono alla conferenza tenutesi a Dartmouth – USA - nel 1956  ed organizzata da John McCarthy, Marvin Minsky, Nathaniel Rochester e Claude Shannon: per la prima volta si parla di “intelligenza artificiale” e viene indicato l’obiettivo di “costruire una macchina che simuli totalmente l’intelligenza umana” proponendo temi di ricerca che negli anni successivi avranno un grande sviluppo: reti neurali, teoria della computabilità, creatività e elaborazione del linguaggio naturale.

dartmouth.jpg
 
Fonte immagine: http://www.scaruffi.com/mind/ai.html

La ricerca IA viene generosamente finanziata dal governo statunitense fino alla metà degli anni 60: di fronte alla mancanza di risultati concreti i finanziamenti cessano dando origine al primo “AI winter” (1966 – 1980).
Negli anni 80 l’IA riprende vigore grazie a un cambio di paradigma: invece di inseguire l’obiettivo di riprodurre artificialmente l’intera intelligenza umana si ripiega sulla realizzazione di “Sistemi esperti” in grado di simulare le conoscenze in ambiti delimitati.
Anche questo 2° tentativo ha però scarsa fortuna causando il nuovo “AI winter” che si protrae fino agli inizi degli anni 90 quando comincia a imporsi una nuova disciplina: il Machine Learning.

Cos’è il Machine Learning?

AI.jpg

Fonte immagine: http://www.thebluediamondgallery.com/tablet/a/artificial-intelligence.html

Il Machine Learning – ha spiegato Gianluca – è una branca dell’Intelligenza Artificiale che si propone di realizzare algoritmi che a partire dai dati ricevuti in input si adattino in maniera automatica così da produrre risultati “intelligenti” quali previsioni e raccomandazioni.
Gianluca ha fatto l’esempio di un bambino che impara a camminare: non serve conoscere la legge di gravità ed è sufficiente osservare come cammina la mamma e riprovare fino a che non si trova l’equilibrio.

Cos’è il Deep Learning?

Il deep learning è un sottoinsieme del Machine Learning e si rivolge alla progettazione, allo sviluppo, al testing e soprattutto al traning delle reti neurali e di altre tecnologie per l’apprendimento automatico.
Il deep learning è alla base degli spettacolari successi dell’IA nel campo dei giochi da tavolo: la vittoria agli scacchi di Deep Blue di IBM contro il campione del mondo in carica, Garry Kasparov,  e la vittoria di Alphago di Google contro il campione del mondo di GO .

This is the golden age of Artificial Intelligence

Secondo Gianluca Mauro questo è il momento magico per l’IA perché finalmente abbiamo gli strumenti – algoritmi, data, computing power – necessari per realizzare applicazioni di ML a costi sempre più bassi.
Gli algoritmi sono ormai collaudati grazie ai lavori pubblicati negli ultimi anni a cominciare da quelli di Corinna Cortes (“Support-vector networks”) e Davide Rumelhart (“Learning representations by back-propagating errors”).
Il computing power è rappresentato principalmente dalla grande quantità di tecnologie open source a disposizione.
La combinazione di tutti questi fattori è rivoluzionario come dice Chris Dixon, uno dei più noti esponenti del Venture capital USA:
“La maggior parte degli studi di ricerca, degli strumenti e degli strumenti sw legati al ML sono open source. Tutto ciò ha avuto un effetto di democratizzazione che consente a piccole imprese e addirittura a singoli individui di realizzare applicazioni veramente potenti. WhatsApp è stato in grado di costruire un sistema di messaggistica globale che serve 900 milioni di utenti assumendo solo 50 ingegneri rispetto alle migliaia di ingegneri che sono stati necessari per realizzare i precedenti di sistemi di messaggistica. Questo "effetto WhatsApp" sta accadendo adesso nell’Intelligenza Artificiale. Strumenti software come Theano e TensorFlow, in combinazione con i cloud data centers per i training, e con le GPU a basso costo per il deployment consentono adesso a piccole squadre di ingegneri di realizzare sistemi di intelligenza artificiale innovativi e competitivi”.
Secondo Gianluca l’IA presto sarà una necessità per qualsiasi azienda o per citare Pedro Domingos: “A company without Machine Learning can’t keep up with one that uses it”.
Secondo Andrew Ng, chief scientist in Baidu, AI e ML stanno già trasformando le imprese perché le obbligheranno a rivoluzionare i loro processi produttivi così come accadde nell’800 quando fu disponibile per la prima volta elettricità a basso costo (video).
Questo cambiamento culturale è già avvertibile nel Venture Capital e nel Merger & Acquisition: le grandi imprese non cercano solo startup che si occupano di ricerca pura nell’ML ma startup che realizzano servizi e prodotti con ML embedded.
“Siamo all’alba di una nuova era” ha concluso Gianluca “quella del Machine Learning as a feature”.

Lorenzo Ridi (Noovle): Serverless Data Architecture at scale on Google Cloud Platform

lorenzo-ridi.jpeg

(Lorenzo Ridi)

Lorenzo Ridi (mup, fb, lk),  tw) ha presentato un caso d’uso concreto (qui disponibile nella sua versione integrale , anche su SlideShare) per mostrare i vantaggi di usare l’architettura su Google Cloud Platform, attraverso sole componenti serverless, in applicazioni con Machine-Learnin embedded.
Il caso d’uso riguarda una società che con l’avvicinarsi del Black Friday decide di commissionare un’indagine sui social, e in particolare su Twitter, per catturare insights utili a posizionare correttamente i propri prodotti, prima e durante l’evento: questo è tanto più cruciale quanto si considera l’enorme dimensione del catalogo aziendale perché indirizzare in modo sbagliato la propria campagna pubblicitaria e promozionale sarebbe un errore fatale.
Tuttavia, per gestire il forte traffico atteso durante l’evento, gli ingegneri di ACME decidono di abbandonare le tecnologie tradizionali, e di implementare questa architettura su Google Cloud Platform, attraverso sole componenti serverless:

170203-google-architecture-ml1.jpg
 
Ingestion

Per recuperare i dati viene implementata una semplice applicazione Python che, attraverso la libreria TweePy, accede alle Streaming API di Twitter recuperando il flusso di messaggi riguardanti il Black Friday e le tematiche ad esso connesse.
Per fare in modo che anche questa componente mantenga gli standard di affidabilità prefissati, si decide di eseguirla, all’interno di un container Docker, su Google Container Engine, l’implementazione di Kubernetes su Google Cloud Platform. In questo modo, non dovremo preoccuparci di eventuali outage o malfunzionamenti. Tutto è gestito (e all’occorrenza automaticamente riavviato) da Kubernetes.

170203-google-architecture-ml2.jpg
 
Innanzitutto creiamo l’immagine Docker che utilizzeremo per il deploy. A questo scopo è sufficiente redigere opportunamente un Dockerfile che contenga le istruzioni per installare le librerie necessarie, copiare la nostra applicazione ed avviare lo script:

170203-google-architecture-ml3.jpg
 
Et voilà! L’immagine Docker è pronta per essere eseguita ovunque: sul nostro laptop, su un server on-prem o, come nel nostro caso, all’interno di un cluster Kubernetes. Il deploy su Container Engine è semplicissimo, con il tool da riga di comando di Google Cloud Platform: tre sole istruzioni che servono a creare il cluster Kubernetes, acquisire le credenziali di accesso ed eseguire l’applicazione in modo scalabile ed affidabile all’interno di un ReplicationController.
Il secondo elemento della catena, la componente cioè verso la quale la nostra applicazione invierà i tweet, è Google Pub/Sub. una soluzione middleware fully-managed, che realizza un’architettura Publisher/Subscriber in modo affidabile e scalabile.
Nella fase di processing, utilizziamo altri due strumenti della suite Google Cloud Platform:

  • Google Cloud Dataflow è un SDK Java open source – adesso noto sotto il nome di Apache Beam – per la realizzazione di pipeline di processing parallele. Inoltre, Cloud Dataflow è il servizio fully managed operante sull’infrastruttura Google, che esegue in modo ottimizzato pipeline di processing scritte con Apache Beam.
  • Google BigQuery è una soluzione di Analytic Data Warehouse fully managed. Le sue performance strabilianti, che abbiamo avuto modo di sottolineare più volte, lo rendono una soluzione ottimale all’interno di architetture di Data Analytics.

La pipeline che andiamo a progettare è estremamente semplice. Di fatto non farà altro che trasformare la struttura JSON che identifica ogni Tweet, inviata dalle API di Twitter e recapitata da Pub/Sub, in una struttura record BigQuery. Successivamente, attraverso le BigQuery Streaming API, ogni record verrà scritto in una tabella in modo tale che i dati possano essere immediatamente analizzati.
 170203-google-architecture-ml4.jpg
Il codice della pipeline è estremamente semplice; questo è in effetti uno dei punti di forza di Apache Beam rispetto ad altri paradigmi di processing, come MapReduce. Tutto ciò che dobbiamo fare è creare un oggetto di tipo Pipeline e poi applicare ripetutamente il metodo apply() per trasformare i dati in modo opportuno. È interessante osservare come i dati vengano letti e scritti utilizzando due elementi di I/O inclusi nell’SDK: PubSubIO e BigQueryIO. Non è quindi necessario scrivere codice boilerplate per implementare l’integrazione tra i sistemi.

Machine learning

Per visualizzare graficamente i risultati utilizziamo Google Data Studio, uno strumento della suite Google Analytics che consente di costruire visualizzazioni grafiche di vario tipo a partire da diverse sorgenti dati, tra le quali ovviamente figura anche BigQuery.
Possiamo poi condividere le dashboard, oppure renderle pubblicamente accessibili, esattamente come faremmo con un documento Google Drive.

170203-ml5.jpg
 
In questo grafico è riportato il numero di Tweet collezionato da ogni stato dell’Unione. Sicuramente d’impatto, ma non molto utile per il nostro scopo. In effetti, dopo un po’ di analisi esplorativa dei dati, ci accorgiamo che con i soli tweet collezionati non riusciamo a fare analisi molto “avanzate”. Dobbiamo quindi rivedere la nostra procedura di processing per cercare di inferire qualche elemento di conoscenza più “interessante”.
Google Cloud Platform ci viene in aiuto, in questo caso offrendoci una serie di API, basate su algoritmi di Machine Learning, il cui scopo è esattamente aggiungere un pizzico di “intelligenza” al nostro processo di analisi. In particolare utilizzeremo le Natural Language API, che ci saranno utili per recuperare il sentiment di ogni tweet, cioè un indicatore numerico della positività (o negatività) del testo contenuto nel messaggio.

170203-google-architecture-ml6.jpg
 
La API è molto semplice da usare: prende in ingresso un testo (il nostro tweet) e restituisce due parametri:

  • Polarity (FLOAT variabile da -1 a 1) esprime l’umore del testo: valori positivi denotano sentimenti positivi.
  • Magnitude (FLOAT variabile da 0 a +inf) esprime l’intensità del sentimento. Valori più alti denotano sentimenti più forti (siano essi rabbia o gioia).

La nostra personale semplicistica definizione di “sentiment” altro non è che il prodotto di questi due valori. In questo modo siamo in grado di assegnare un valore numerico ad ogni tweet – ed auspicabilmente, di tirarne fuori delle statistiche interessanti!
La pipeline Dataflow viene modificata in modo da includere, oltre al flusso precedente, anche questo nuovo step. Tale modifica è molto semplice, e visto il modello di programmazione di Cloud Dataflow, permette un notevole riuso del codice esistente.

170203-google-architecture-ml7.jpg
 

Con questi nuovi dati possiamo realizzare delle analisi molto più interessanti, che ci informano sulla distribuzione geografica e temporale del “sentimento” riguardante l’evento Black Friday.
La mappa che segue, ad esempio, mostra il sentiment medio registrato in ognuno degli stati degli US, colori più scuri rappresentano sentiment più negativi (quel quadrato rosso là in mezzo è il Wyoming).

170203-google-architecture-ml8.jpg
 
Quest’altra analisi invece riporta l’andamento del sentiment legato ai tre maggiori vendor statunitensi: Amazon, Walmart e Best Buy. A partire da questa semplice analisi, con un po’ di drill-down sui dati, siamo riusciti a carpire alcuni fatti interessanti:

  • il popolo di Twitter non ha apprezzato la decisione di Walmart di anticipare l’apertura delle proprie vendite al giorno precedente il Black Friday, la festa nazionale del Thanksgiving Day. La popolarità di Walmart è stata infatti minata fin dai primi di Novembre da questa decisione  – d’altronde, la tutela dei lavoratori è un tema universale.
  • Le vendite promozionali di Amazon (aperte il 18 Novembre, quindi con anticipo rispetto al Black Friday) sono state inizialmente duramente criticate dagli utenti, con un crollo della popolarità che ha raggiunto il suo minimo il 22. In seguito però il colosso delle vendite online ha recuperato terreno rispetto a Best Buy, che invece sembra aver mantenuto intatta la sua buona reputazione per tutto il periodo.

170203-google-architecture-ml9.jpg

Contatti

Leggi anche

AG-Vocabolario: 

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: