François Chollet è un ricercatore di IA e deep learning, autore di Keras, uno dei principali framework di deep learning per Python, e ha appena pubblicato un nuovo libro, Deep Learning with Python. In concomitanza con l'uscita del libro, ho avuto il piacere di intervistare François via e-mail. Sentiti libero di contattarci su @fchollet e @hugobowne.
François, sei un ingegnere software e ricercatore in intelligenza artificiale in Google. Voglio scoprire di più su quello che fai. Ma prima, ciò che le persone effettivamente fanno e l'idea che il pubblico ha di quello che fanno divergono notoriamente. Che cosa pensano le persone che tu faccia?
È un'osservazione acuta: di solito c'è uno scarto tra ciò per cui si è conosciuti, ciò per cui si vorrebbe essere conosciuti e su cosa si sta davvero lavorando. Nel mio caso, probabilmente sono conosciuto soprattutto per aver creato Keras, il framework di deep learning.
Che cosa fai davvero?
Lavoro nel team Brain di Google a Mountain View, dove passo la maggior parte del mio tempo a sviluppare Keras. Quindi credo che ci sia un buon allineamento tra ciò che faccio e ciò che la gente pensa che io faccia.
Contribuisco anche a TensorFlow, il framework di machine learning di Google, con cui Keras si integra. Parallelamente, faccio ricerca su una serie di temi. Recentemente ho lavorato a pubblicazioni su traduzione automatica, visione artificiale e applicazione del deep learning alla dimostrazione di teoremi. Il mio principale interesse di ricerca è comprendere il problema dell'astrazione e del ragionamento nell'IA: come passare dalla percezione a modelli astratti, altamente generalizzabili.
Sei noto come autore del pacchetto Keras, una rete neurale open source per il deep learning in Python: che cos'è il deep learning?
Il deep learning è un approccio specifico al machine learning, che si è rivelato molto più potente e flessibile rispetto agli approcci precedenti. Nella maggior parte delle applicazioni, ciò che chiamiamo "deep learning" può essere visto come un modo per trasformare grandi quantità di dati annotati da esseri umani in un software che può annotare automaticamente nuovi dati in un modo simile a come farebbero gli umani. In questo modo puoi automatizzare molti compiti diversi. Il deep learning è particolarmente efficace nel dare un senso ai dati "percettivi", come immagini, video o suoni.
Ecco un esempio concreto. Considera una grande raccolta di immagini, con alcuni tag associati a ciascuna ("dog", "cat", ecc.). Il deep learning ti consente di trasformare automaticamente i tuoi dati in un sistema che "capisce" come mappare le immagini ai tag, imparando solo dagli esempi, senza bisogno di messa a punto manuale o ingegnerizzazione ad hoc. Un sistema del genere può poi essere applicato a nuovi dati, automatizzando di fatto il compito di etichettare le immagini.
Allo stesso modo, puoi applicare il deep learning a un'ampia gamma di problemi, come la traduzione automatica, il riconoscimento vocale, il text-to-speech, il riconoscimento ottico dei caratteri, ecc.
Congratulazioni per il tuo nuovo libro, Deep Learning with Python. Perché hai scritto questo libro?
Questo libro è il mio tentativo di elaborare un percorso didattico per insegnare il deep learning a chi sa programmare in Python ma non ha esperienza precedente in machine learning. Sto cercando di rendere il deep learning il più accessibile possibile, senza banalizzare nulla. E si può fare, perché per lo più nel deep learning non ci sono idee difficili.
Python è probabilmente il linguaggio di programmazione in più rapida crescita, almeno nei paesi ad alto reddito. Perché Python, sia per te che per la comunità dei programmatori in generale?
Amo Python. È facile da imparare e diventa sempre più produttivo man mano che lo usi, indipendentemente da quanto tempo ci lavori. Risulta molto intuitivo ed elegante rispetto alla maggior parte degli altri linguaggi che ho usato. Ma la vera killer feature di Python non è nel linguaggio in sé, è nell'ecosistema e nella comunità che lo circondano. Qualunque cosa tu debba fare — analizzare un formato di file specifico, interfacciarti con un sistema particolare — c'è quasi certamente una libreria Python che lo fa, così non devi perdere tempo a implementarla. Questo è particolarmente vero per data science e machine learning: ci sono tantissimi ottimi strumenti — numpy, pandas, scikit-learn, librerie per il plotting, ecc. Questo rende Python un linguaggio molto produttivo.
Inoltre, mi piace che Python non sia un linguaggio specifico di dominio, ma si trovi all'intersezione di più domini, dallo sviluppo web alla data science fino all'amministrazione di sistema. Significa che non devi passare a un altro linguaggio per distribuire i tuoi modelli Keras come API web, per esempio. Qualunque cosa tu debba fare — lanciare una webapp, interrogare una REST API, analizzare dei file, addestrare modelli di deep learning allo stato dell'arte — Python è generalmente una scelta piuttosto solida.
C'è una percezione di barriere all'ingresso per chi vuole entrare nel machine learning e nello sviluppo di intelligenza artificiale. Qual è la tua opinione sulla democratizzazione delle competenze e delle tecniche necessarie?
Non credo sia vero. Entrare nel machine learning è diventato estremamente facile negli ultimi 5 anni. Certo, 5-7 anni fa era difficile. Probabilmente serviva una formazione post-laurea. Dovevi scrivere da solo molte implementazioni a basso livello, in genere in C++ o Matlab. Ci sono passato. Oggi è diverso. Ti basta Python, che è molto più semplice da apprendere, e hai accesso a strumenti ad alto livello e facili da usare come Keras. Inoltre, puoi imparare da molte risorse online di altissima qualità, e puoi fare pratica su problemi reali su Kaggle. Non è mai stato così facile imparare.
Quindi, a questo punto, puoi semplicemente, per esempio, prendere il mio libro, installare Keras, cimentarti con alcune sfide su Kaggle e dopo pochi mesi sarai abbastanza produttivo con machine learning e deep learning su problemi pratici.
In che modo Keras e il tuo nuovo libro si inseriscono in questa filosofia?
Quando ho rilasciato Keras all'inizio, non stavo cercando in modo particolare di democratizzare il deep learning. Ma col passare del tempo ho visto innumerevoli persone avvicinarsi al deep learning tramite Keras e usarlo per risolvere una grande varietà di problemi in modi che non mi aspettavo, e questo mi ha davvero affascinato. Ho capito che il deep learning può essere applicato, in modi trasformativi, a molti più domini di quanto si sospetti nella Silicon Valley. Ci sono tantissime persone là fuori che potrebbero trarre beneficio dall'uso del deep learning nel loro lavoro. Di conseguenza, ho iniziato a tenere molto a rendere queste tecnologie disponibili al maggior numero di persone possibile, ed è diventato l'obiettivo di design numero uno di Keras. È l'unico modo per dispiegare l'IA fino in fondo al suo potenziale: renderla ampiamente accessibile.
Il mio libro è un tentativo di fare un altro passo nella stessa direzione: sto cercando di portare nel modo giusto quante più persone possibile nel deep learning, così che possano iniziare a usarlo per risolvere i problemi che conoscono bene e di cui io nemmeno sospetto l'esistenza. Non basta fornire strumenti facili da usare, bisogna anche offrire materiale didattico per insegnare alle persone come usarli.
Quali sono le cose più importanti che i principianti devono imparare? Come possono farlo?
La cosa più importante è probabilmente farsi un'idea di cosa il deep learning possa e non possa fare. Questo, e acquisire dimestichezza con alcune buone pratiche chiave come valutare correttamente i modelli e contrastare l'overfitting. Ciò richiede una combinazione di spiegazioni formali e molta pratica su problemi reali.
Il termine intelligenza artificiale, per molte persone, richiama alla mente robot senzienti. Vediamo titoli come "L'IA di Google crea la sua 'figlia' IA più avanzata dei sistemi costruiti dagli umani". Ho bisogno del tuo aiuto per demistificare che cos'è davvero l'IA. Di cosa è capace l'intelligenza artificiale?
C'è sicuramente molta fuffa nel campo. Gran parte della copertura mediatica su IA e deep learning è drammaticamente scollegata dalla realtà — sia le storie allarmistiche sia quelle su come l'IA renderà tutto meraviglioso.
Quanto a ciò che l'IA può fare oggi, è una domanda difficile. Direi che ci sono tre categorie di cose che l'IA può fare:
- Svolgere compiti in cui siamo in grado di specificare completamente ed esplicitamente le regole che l'IA deve seguire. Questo è essenzialmente ciò che è noto come "IA simbolica" o, più pragmaticamente, "sviluppo software". Come sa chiunque abbia programmato, questo approccio è fragile e funziona solo in contesti in cui tutto è sotto controllo — cosa rara nei problemi del mondo reale.
- Eseguire compiti semplici di percezione e intuizione in cui non siamo in grado di specificare esplicitamente le regole, ma possiamo fornire molti esempi del compito. Questo include tutto il deep learning: classificare immagini, trascrivere parlato, ecc. Un limite importante delle nostre capacità su questo fronte è che i nostri modelli possono gestire solo input estremamente simili a quelli già visti — non puoi allontanarti molto dai dati di addestramento. Ciò che facciamo qui è fondamentalmente un fitting di curve ad alta dimensionalità un po' glorificato.
- Combinazioni piuttosto ingenue delle due cose sopra. Per esempio, puoi immaginare un robot con un modulo di deep learning addestrato su molti esempi che può estrarre tipo e posizione di vari oggetti nell'ambiente circostante, accoppiato con un modulo che codifica in modo rigido regole di alto livello per manipolare questi oggetti. Un altro esempio è AlphaGo/AlphaZero, che è fondamentalmente una combinazione di ricerca brute force (programmazione esplicita) con un modulo di deep learning addestrato su molte partite che può valutare in modo "intuitivo" il valore di una posizione sulla scacchiera.
Accade che, sfruttando le tecniche attuali fino in fondo, si possano ottenere prestazioni sovrumane su molti compiti importanti, e prestazioni dignitose su molti altri. Ma questo è possibile solo in contesti molto ristretti. E, forse controintuitivamente, non c'è un vero percorso che porti dall'essere molto bravi in tanti compiti verticali diversi ad avere l'intelligenza generale e il buon senso anche solo di un bambino piccolo — per non parlare delle sue capacità di apprendimento e adattamento.
Detto questo, essere davvero bravi in tanti compiti molto specifici è trasformativo per la maggior parte dei settori. Quindi puoi aspettarti che l'IA generi un forte impatto economico nei prossimi 20 anni. Puoi pensare all'IA come alla macchina a vapore della nostra epoca: uno strumento potentissimo nelle mani dell'uomo, che rimodellerà il paesaggio economico nell'arco di qualche decennio. Ma niente robot senzienti all'orizzonte.
Di cosa non è capace l'intelligenza artificiale?
All'interno dell'insieme di tutte le cose che potremmo voler automatizzare, oggi l'IA può gestire solo un sottoinsieme molto piccolo. Ci sono molte più cose che non possiamo fare rispetto a quelle che possiamo fare.
In generale, siamo particolarmente scarsi in:
- Qualsiasi cosa richieda "grounding" o "comprensione". Per esempio, l'IA non può comprendere il significato del linguaggio naturale, ma tratta il linguaggio in termini di dipendenze statistiche o regole di elaborazione hard-coded. Il "significato", così come esiste nella mente umana, deriva dall'esperienza umana incarnata, a cui i nostri modelli di IA non hanno accesso. Almeno per ora. Quindi oggi nessun sistema di IA può "comprendere" il proprio compito in un modo che abbia senso per un essere umano. I modelli tracciano semplicemente la varietà statistica dei loro dati di addestramento.
- Qualsiasi cosa implichi gestire dati diversi da quelli visti in precedenza. L'IA può solo applicare regole che hai codificato esplicitamente, o riconoscere cose molto, molto simili a quelle su cui è stata addestrata. Le nostre capacità decadono in modo esponenziale man mano che introduci incertezza o variazione in un compito.
- Qualsiasi cosa coinvolga ragionamento e astrazione. O possiamo codificare esplicitamente regole di ragionamento nella macchina, oppure non possiamo svolgere affatto ragionamento. L'IA attuale non riesce da sola a costruire modelli astratti di una situazione. Si può sostenere che questo sia il principale collo di bottiglia per lo sviluppo dell'IA oggi. Se lo risolvessimo, potremmo rapidamente superare i due punti precedenti.
Ho scritto un post sul blog intitolato The limitations of deep learning su questo e altri temi correlati.
Quali sono le principali sfide che la comunità del deep learning deve affrontare?
Combattere l'hype, sviluppare consapevolezza etica e acquisire rigore scientifico.
Hype: è una piaga per il nostro campo. Alcune persone stanno esagerando i progressi recenti in modo ridicolo, vendendo in maniera smisurata le nostre capacità attuali e spesso presentando l'intelligenza a livello umano come dietro l'angolo — cosa che non è. Se fissiamo aspettative altissime e poi non le rispettiamo, voltiamo le persone contro di noi. E, oltre a ciò, è semplicemente intellettualmente disonesto e tossico per il dibattito pubblico.
Etica: la maggior parte delle persone che oggi distribuiscono sistemi di IA non proviene da contesti particolarmente diversificati e spesso è beatamente inconsapevole delle implicazioni etiche e degli effetti collaterali dannosi dei sistemi che costruisce. Questo è un grosso problema, perché queste persone avranno sempre più potere sugli altri. Dobbiamo discutere di più queste questioni e aumentare la consapevolezza di possibili applicazioni non etiche dell'IA, che si tratti di modelli predittivi faziosi che incidono sulla vita delle persone, di IA applicata in ambiti davvero discutibili o di IA usata per manipolare i nostri comportamenti e le nostre opinioni in modi pericolosi.
Scienza: ogni giorno escono tonnellate di articoli sul deep learning, e la maggior parte non produce davvero nuova conoscenza significativa, perché non segue il metodo scientifico. "Valutano" i modelli in modi fumosi, o testano modelli overfit sui loro dati di addestramento (questo accade soprattutto per i modelli generativi e il reinforcement learning, due degli ambiti in più rapida crescita nella ricerca sul deep learning), scelgono selettivamente i risultati, usano baseline artificialmente deboli, regolano gli iperparametri in modo da overfittare un task specifico, valutano i modelli solo su MNIST, ecc. Il deep learning è una zona disastrata dal punto di vista scientifico. La peer review spesso non affronta questi problemi in modo significativo, forse anche perché molti revisori sono nel campo da un anno o due al massimo (dato che il settore cresce in modo esponenziale). Se vogliamo progredire più velocemente, dobbiamo introdurre nel campo aspettative più elevate di rigore, per quanto riguarda riproducibilità della ricerca, baseline, valutazione dei modelli e significatività statistica. Purtroppo il nostro sistema di incentivi è sbilanciato contro la scienza: incentiviamo la pubblicazione e, sfortunatamente, è più facile pubblicare se fai sembrare la tua ricerca complessa e misteriosa rendendo impossibile valutarne correttamente la portata.
Come immagini il futuro del deep learning?
Ho scritto proprio un post sul blog a riguardo. In sintesi, mi aspetto che l'IA fonda sempre più moduli di riconoscimento di pattern "intuitivi" con moduli di ragionamento formale. Mi aspetto anche che l'IA evolva per diventare sempre più simile a una forma di sviluppo software automatizzato, prendendo in prestito molte pratiche e schemi oggi presenti nell'ingegneria del software.
Non sei solo uno sviluppatore. Sul blog di keras, nei saggi, nel tuo libro e su Twitter, sei attento e schietto sulle questioni etiche attorno a deep learning, IA e tech in generale. Pensi che gli sviluppatori abbiano l'obbligo di occuparsi delle considerazioni etiche legate al loro lavoro?
Certo. Penso che questo sia mancato nel panorama tech in generale negli ultimi anni. Guarda Facebook, per esempio. O la maggior parte dei giochi per smartphone. La tecnologia non è mai neutrale — perché è potente, perché incide sulle nostre vite. Il modo in cui progetti prodotti e tecnologia inietta attivamente dei valori in essi, che tu ne sia consapevole o meno. Tanto vale essere deliberati al riguardo. Se costruisci una piattaforma social e cerchi di massimizzare l'"engagement", beh, è una decisione carica di implicazioni etiche, con conseguenze importanti. O ce ne preoccupiamo e rendiamo l'etica un obiettivo esplicito di design della tecnologia e delle strutture di potere che costruiamo, oppure abbandoniamo i nostri valori. Se lavori nella tecnologia, non puoi scegliere di stare "in disparte": è un'illusione.

