Pubblichiamo questa intervista a Elena Gagliardoni, NLP Deep Learning Specialist in una nota azienda informatica asiatica e tra gli organizzatori del GDG Cloud Milano.

A: Parlaci un po’ di te e del tuo percorso formativo/lavorativo.

E: Parlaci un po’ di te? Ad una donna? Sicuri? Quanto spazio ho? La prima stesura della risposta a questa domanda era lunga quattro pagine e mezzo. Non scherzo. Dimensione carattere: 9. Poi ho capito che avrei dovuto togliere tanti particolari che forse non sarebbero interessati nemmeno a mia madre e questo è il risultato finale.intervista_elena_gagliardoni

Mi chiamo Elena, sono umbra e sono una matematica. Sono nata e cresciuta in provincia di Perugia, in mezzo a colline verdi e aria buona. Posti dove bambini e ragazzini possono godersi infanzia ed adolescenza senza preoccupazioni, paure e nemmeno limiti. Siamo gente pragmatica, molto concreta, sicuramente ci concentriamo più sulla sostanza che sulla forma, a volte dai modi un po’ duri ma molto leale. Tutte cose che sento di aver assorbito a pieno dalla mia terra, alla quale, seppur dopo tanti anni di vita fuori, prima a Roma ed ora a Milano, mi sento sempre molto legata. 

Finito il liceo, ho conseguito la laurea triennale in matematica all’Università di Perugia, per poi trasferirmi a Roma e completare con la laurea specialista in Matematica Pura ed Applicata all’Università di Roma Tor Vergata, dove ho cercato di prestare maggiore attenzione verso materie più applicate: teoria della probabilità, analisi numerica, compressione di segnali e programmazione Java. Pochi mesi prima di laurearmi, ho iniziato la mia avventura nel mondo del lavoro in una società di consulenza informatica a Roma come sviluppatrice Java. È stato un azzardo, non sapevo praticamente nulla di Informatica ma la curiosità e la voglia di mettermi in gioco erano davvero alte. Un azzardo andato bene in quanto ho scoperto un mondo che mi è piaciuto ed interessato da subito. Poco dopo ho iniziato a frequentare un master annuale part-time di II Livello in Data Science e Machine Learning presso l’Università di Perugia. Avevo iniziato ad interessarmi al Machine Learning da un po’, seguendo diversi corsi su famose piattaforme di e-learning e avevo deciso di puntarci. Durante la settimana lavoravo a Roma e mi spostavo poi a Perugia nei week-end per le lezioni. Durante il Master abbandonai la prima azienda per diventare sviluppatrice all’interno del team di Intelligenza Artificiale di una società di servizi IT sempre a Roma, owner di un motore di Natural Language Processing (NLP) che permette di creare chatbot e soluzioni conversazionali molto customizzabili. Il mondo dell’Intelligenza Artificiale e, in particolare, dell’NLP mi appassionò (e tutt’oggi mi appassiona) così tanto da decidere di diplomarmi al master creando un chatbot neurale (ovvero utilizzando solo reti neurali artificiali – Deep Learning). Ad oggi, mi occupo ancora di NLP ma a Milano, nel team italiano di un noto assistente virtuale di una multinazionale asiatica. Il lavoro nel settore dell’Intelligenza Artificiale è, per così dire, molto sfidante. Ci sono continue novità, continui state-of-the-art, tecnologie nuove e tecnologie che si evolvono in continuazione. C’è tanto studio da fare, ogni giorno, anche solo per non rimanere troppo indietro con tutto quello che esce dai centri di ricerca dei big (Google, Facebook, Amazon,…). Tanta voglia di provare e sperimentare cercando sempre il miglior trade-off tra innovazione e stabilità della soluzione. Mi ritengo veramente fortunata, poiché faccio un lavoro che non è un lavoro, è una vera e propria passione. 

A: Nel tuo percorso di studi e nel tuo lavoro la matematica svolge un ruolo importante. C’è qualcosa che ti ha sempre colpito di questa disciplina?

E: Ricordo ancora il giorno in cui ho deciso di studiare matematica. La docente di ruolo delle materie scientifiche, all’ultimo anno di liceo, era in malattia. A sostituirla, una giovane ragazza laureata da poco in matematica. Ordine del giorno: i limiti. Quella ragazza non ci spiegò solo la definizione formale (∀ε>0 ∃δ(ε)>0), ma ce li fece immaginare! Ci fece immaginare di correre sull’asse delle x, facendo tanti passi piccoli piccoli. Sempre più piccoli. Infinitesimi. E di guardare in alto, alla y che gli corrisponde, e vedere che, tanto più noi ci avviciniamo ad un punto $$x_0$$ facendo passi infinitesimamente piccoli ma mai nulli, sopra di noi la $$y$$ si sta avvicinando ad un valore, $$l$$, anch’essa con passi infinitesimamente piccoli ma mai nulli. Quel valore $$l$$ è il limite della funzione al tendere di $$x$$ ad $$x_0$$. E perché no, nulla vieta a quella $$l$$ di essere un punto lontanissimo, infinitamente lontano, per l’appunto l’infinito, e allora la nostra $$y$$ improvvisamente non la vedremmo più perché è schizzata lontano, chissà dove, ad ∞.

limite-funzione

Ecco, è grazie a quel gioco di immaginazione che capii che volevo studiare matematica. Il tutto per dire che, per studiare e capire la matematica, ci vuole tanta immaginazione e fantasia. 

È una materia che arriva a plasmarti molto. Ti cambia proprio il modo di ragionare, di affrontare le cose. Ogni cosa ha una logica e razionalità. A lavoro, per un matematico, non  esistono condizionali, esistono cose che si sanno dimostrare essere vere e cose che non si sanno dimostrare o provare, quindi, fino a prova contraria, non vere. Ti porta ad avere la necessità di capire nella sua completezza una cosa prima di poterne anche solo parlare. E tante di queste caratteristiche le ho riscontrate in tutti i colleghi matematici che ho avuto. È una disciplina che ti fa essere “pignolo”, il classico “precisino”, quel giusto da poter arrivare potenzialmente a dominare qualsiasi altra disciplina scientifica. È un percorso di studi vincente. Non saprei come altro definirlo.

A: “NLP – Deep Learning Specialist”: puoi spiegarci bene in cosa consiste? Quali sono i principali task di cui ti occupi e quali sono i principali modelli matematici utilizzati? 

E: Cerco di spiegare meglio di cosa mi occupo, definendo le singole parti dell’espressione. 

NLP – è l’acronimo di Natural Language Processing e si riferisce a quella branca dell’Artificial Intelligence (AI) il cui obiettivo è rendere un software in grado di processare, capire il linguaggio naturale. Python, Java, C, JavaScript etc. sono tutti linguaggi artificiali creati ad hoc dagli umani per essere compresi da un processore. Una macchina capisce perfettamente una richiesta del genere “select res.mobile from restaurant res where res.address = ‘via Roma’”. L’obiettivo dell’NLP è quello di rendere altrettanto perfettamente comprensibile alla macchina quest’altra richiesta “Mi dici il numero di telefono dei ristoranti in via Roma?” o questa richiesta “Pouvez-vous me donner le numéro de téléphone des restaurants de la Via Roma?” e perché no anche questa “ローマ通りのレストランの電話番号を教えてください”.  È un mondo vastissimo con una molteplicità di applicazioni sempre in crescita: Text Classification (spam/non spam), Sentiment Analysis (il film è/non è piaciuto), Question & Answering (quale è la risposta ad una domanda cercando all’interno di un corpus testuale?), Text Summarization (mi puoi riassumere in poche righe il contenuto di migliaia di articoli?), Text Generation (se ti do qualche parola, mi puoi creare un testo di senso compiuto che parli di quelle label che ti ho dato?), fino ad arrivare al più articolato mondo degli assistenti virtuali e dei chatbot che gestiscono un vero e proprio flusso conversazionale uomo-macchina. Mi piace molto vedere il tutto con la metafora della scuola: stiamo portando la macchina a scuola ad imparare a parlare, leggere e scrivere. 

Deep Learning – è un sottoinsieme del Machine Learning. Si definisce Machine Learning un insieme di tecniche e teorie che hanno l’obiettivo, in presenza di un insieme di dati ($$x_1, x_2,…, x_n$$), trovare quella funzione f che li modella nel modo migliore possibile. Quando, invece di una $$f$$ qualsiasi, si utilizza una rete neurale con molti strati per modellare quei dati, si parla di Deep Learning. 

Specialist – è un modo per dire: ehi, faccio (o provo a fare) queste cose, non sono sicuramente ancora una Expert; non faccio ricerca, quindi non sono una Researcher o una Scientist, ma cerco di studiare queste tecniche ed applicarle al meglio, sporcandomi le mani anche con tante cose (data cleaning e data normalization ad esempio), che chi fa prettamente ricerca in genere non fa. 

Ecco qui. Questo è quello che faccio! Capito no? Ovvio che no, ho detto tutto e allo stesso tempo non ho detto nulla . Io mi occupo di NLP solo per quanto riguarda l’italiano. Non faccio sempre e solo Deep Learning. Deep Learning va bene per alcuni task specifici dell’elaborazione o correzione o disambiguazione del testo, ma per molte altre cose servono approcci più ‘classici’. Siamo ancora molto lontani dall’avere tecniche neurali di elaborazione del linguaggio naturale così solide ed in grado di adattarsi a tutte le sfaccettatura che una lingua ha, tanto da poter sostituire con esse tutti gli articolati workflow di NLP. È ancora un fronte aperto di ricerca a livello mondiale. Moltissimo è in evoluzione, ma sicuramente non abbastanza solido da diventare pervasivo al 100%. 

A: Oggi nel mercato del lavoro c’è una grandissima richiesta di Data Scientist. Dalle varie offerte di lavoro emerge come questa figura debba possedere un background assai articolato, rendendola in pratica molto difficile da trovare (a tal punto da ritenerla un “unicorn”). Ma quali sono i requisiti imprescindibili che deve possedere davvero un Data Scientist?

E: In effetti, è proprio difficile ormai inquadrare una figura che possa definire in maniera univoca cosa sia un Data Scientist. Aprendo Linkedin, Indeed, Monster, Glassdoor e tanti altri si vedono ormai quasi SOLO offerte per Data Scientist e se si va a leggere meglio la descrizione delle posizioni vediamo che sono tutte abbastanza differenti tra loro. Il termine è diventato cosi’ tanto gettonato e fraintendibile, che stanno nascendo da un po’ di mesi una moltitudine di figure lavorative inerenti alla Data Science che è sempre più complicato anche solo capire come inquadrare se stessi (penso che prima ne ho dato un esempio). Data Scientist, Machine Learning Expert, Deep Learning Scientist, Machine Learning Engineer, Data Engineer… AIUTO!!! A parte tutto, penso che i tre requisiti indispensabili per poter lavorare in questo campo, con qualsiasi inquadramento si preferisce, sono:

  • doti analitiche: la cosa che si fa al tempo $$t_0$$ in ogni progetto, non solo di data science, è quella di inquadrare il problema e analizzare le sue macro-componenti in modo da capire cosa è rilevante per risolverlo. Avere un approccio analitico alle situazioni è già un’ottima partenza che porta a perdere molto meno tempo poi e a sbagliare molto meno. 
  • conoscenze matematiche: non ne servono di avanzate, ma sono indispensabili per capire quali algoritmi utilizzare, se serve modificare una componente dell’algortimo per ottenere performance migliori sui nostri dati, e soprattutto per saper interpretare bene cosa gli algoritmi ci stanno dicendo.
  • conoscenze informatiche: tutto quello che abbiamo detto si risolve in un programma, in codice, che va interamente implementato. E soprattutto si devono affrontare anche i “classici” problemi di un programma informatico: la memoria, i tempi, sicurezza ed integrità dei dati, numero di richieste, ecc.

Insomma, a ben vedere si parla di “unicorn”!! È normale che una persona sia più preparata su un aspetto piuttosto che su un altro. Quindi, penso che la quarta caratteristica fondamentale da aggiungere sia:

  • la curiosità, la voglia di studiare ed imparare. È solo grazie a questo che con il tempo si può arrivare ad essere un unicorno 🙂

A: Nelle aziende si sente spesso ripetere quanto sia fondamentale un approccio data-driven per raggiungere determinati obiettivi aziendali, ma non sempre i risultati sono quelli attesi. Per la tua esperienza, quali sono i fattori di successo per un progetto data-driven in azienda?

E: Zero dubbi nella risposta. Per spiegare con un esempio: prendiamo il caso di voler creare un’applicazione mobile che, a partire da un’immagine, riconosca le razze dei gatti tra 10 scelte da noi. 

Elenco decrescente per importanza:

  1. una buona e chiara definizione del dominio e dei KPI: il dominio è un po’ lo scope del problema, la realtà in cui il problema esiste, il mondo delle foto scattate tramite cellulare che poi devono essere inviate ad un app che ne estrae qualcosa. Una volta inquadrato bene il dominio, si deve definire cosa è importante analizzare per capire se il problema è stato risolto o se il modello si sta comportando bene. Bisogna cioè definire i KPI (Key Performance Indicator). Nel nostro caso, un KPI potrebbe essere, banalmente, il numero di classificazioni errate. Seppur sembra la fase più semplice, è in realtà quella più articolata e suscettibile ad errori. Un errore in questa fase ti porta a prendere il progetto e buttarlo. 
  2. una raccolta dati adeguata al dominio: una volta definito il dominio, bisogna aver chiaro che il modello dovrà utilizzare dei dati che sono figli di quel dominio. Non posso creare un modello che dovrà riconoscere 10 tipi di gatti usando immagini di altre specie di razze o di cani. Se poi, ad esempio, per creare il mio super-riconoscitore di gatti, utilizzo solo immagini perfette e ad alta definizione prese da internet con gatti meravigliosi ed in posa, PROBABILMENTE quando questo modello dovra’ riconoscere la foto che ho scattato mentre camminavo per strada, in penombra, ad un gatto girato di profilo, con il mio cellulare dell’ante guerra, riconoscerà fischi per fiaschi. Potremmo aspettarci, cioè, delle performance abbastanza schifose. Modello da buttare via e rifare!!
  3. costruzione di metriche adeguate ai KPI: fissati i KPI, si devono definire delle metriche coerenti con l’obiettivo che si vuole monitorare. Nel nostro caso, una metrica che valga 1 se la classificazione è corretta e 0 tutte le volte che la classificazione è errata e che faccia una media aritmetica finale su tutti i dati di test cosi da avere una percentuale di ‘casi errati’ da monitorare. 
  4. costruire una buona pipeline di valutazione e test: concentrarsi meno sulla parte algoritmica del modello, e più sulla sua valutazione e sulla sua fase di test. 

A: È sempre più diffusa anche in Italia la presenza di Community specializzate in ambito Artificial Intelligence, Machine Learning e Deep Learning. Dal tuo profilo spicca che sei un membro attivo nella Community Google Developer Group. Puoi raccontarci qualcosa delle iniziative di questo gruppo?

E: C’è tanta tanta curiosità intorno a questi argomenti. Sia da parte delle aziende che dei professionisti che degli studenti. E c’è anche veramente molto da sapere. Quindi, quale miglior modo per imparare cose nuove su tematiche che ci interessano e conoscere professionisti del campo se non andare dopo lavoro o dopo lezione a degli incontri di poche ore ad ascoltare esperti del settore che ci spiegano i concetti, le tecnologie, le loro esperienze e, magari, a conoscere persone che, come noi, hanno le nostre stesse curiosità? Tutto questo è il mondo delle Community, il cui obiettivo è proprio quello di organizzare tali eventi. A me piaceva così tanto partecipare, che ho iniziato ad organizzarli o ad aiutare chi li organizza. In particolare, sono organizzatrice del GDG Cloud Milano che ha l’obiettivo di creare eventi e mettere in contatto tra di loro tutti gli esperti e i curiosi della varie tecnologie della Piattaforma Cloud di Google, la GCP. Non mi tiro, inoltre, mai indietro se c’è poi bisogno di aiutare nell’organizzazione o, perché no, a fare da speaker in diverse Community più orientate al Machine Learning (per esempio IAML, Italian Association of Machine Learning che è a cappello di tante community a livello nazione, e DLI – Deep Learning Italia). 

A: Il blocco dovuto alle misure di contenimento del Covid-19 ha interferito con le vostre iniziative? State continuando la vostra attività con dei webinar?

E: Assolutamente sì! Anzi, posso dire, ora più che mai!

Non essendoci più il vincolo fisico del luogo e della geografia, riusciamo a creare eventi online che tutti, dalla Sicilia al Veneto, possono seguire. Stiamo avendo speaker da tutta Italia che si propongono volontariamente, entusiasti di poter avere l’opportunità di confrontarsi raccontando le proprie esperienze e chiedendo consigli ad una platea interessata a quella tematica. Opportunità che non è comune avere, perché la realtà delle Community è propria solo delle maggiori città italiane. In questo modo, in questo periodo, ogni lavoratore o studente di qualsiasi paese o città italiana, può seguire streaming questi eventi, può intervenire e fare domande, parlare e mettersi in gioco. È un periodo da sfruttare al massimo, proprio tramite questi eventi. 

A: Che suggerimenti ti senti di poter dare ai giovani lettori di questo post che stanno per finire la scuola secondaria e vogliono intraprendere un percorso universitario in campo scientifico?

E: Il mio suggerimento è fatelo!! Non vi fate frenare dalla paura della difficoltà delle materie o del troppo impegno che richiede una laurea in campo scientifico. È così, sarei bugiarda a dire il contrario, è molto impegnativo ma anche pieno di soddisfazioni. E poi, se è la cosa che più vi piace, è sicuramente la cosa giusta da fare!

CC BY-NC-SA 4.0
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.