Indica un intervallo di date:
  • Dal Al

La verità su machine learning e deep learning

Mi fa molto piacere vedere che, dopo molti anni di hype, in cui tutti parlavano di intelligenza artificiale e machine learning come possibili soluzioni a tutti i problemi del mondo (unico limite: il cielo), finalmente diverse persone oneste e intelligenti hanno iniziato a pubblicare articoli e commenti che descrivono le cose come realmente sono. Ci è voluto più del previsto, ma era inevitabile che succedesse, era solo questione di tempo. Come diceva Lincoln, Potete ingannare tutti per qualche tempo e alcuni per tutto il tempo, ma non potete ingannare tutti per tutto il tempo.

Tra i vari articoli pubblicati di recente, consiglio questo, breve e comprensibile (è in inglese ma è facile da leggere). Ci sono alcuni passaggi molto importanti perché spiegano chiaramente che le tecniche di machine learning possono essere utili (anzi utilissime, in alcuni casi molto specifici), ma sono più semplici e limitate di quello che in tanti sembrano pensare, e richiedono ancora una grande quantità di lavoro e fatica.

Il primo passaggio chiave è questo: Despite evocative names like “artificial intelligence,” “machine learning” and “neural networks,” such technologies have little to do with human thought or intelligence. Rather, they are alternative ways of programming computers, using vast amounts of data to train computers to perform a task. Mi piacciono queste due frasi perché dimostrano che non c’è bisogno di più di 42 parole per descrivere correttamente la realtà e fare piazza pulita di tutte le sciocchezze e le falsità che sono state scritte su questi argomenti negli ultimi 2-3 anni utilizzando milioni e milioni di parole!

Prima perla: machine learning e reti neurali hanno davvero poco in comune con l’intelligenza umana, quindi possono essere utilizzate solo per attività di base: se si necessita di un po’ di intelligenza reale, non sono gli strumenti giusti.

Seconda perla, ancora più importante perché praticamente nessuno sembra aver capito questa semplice verità fondamentale: il machine learning è solo un modo diverso di programmare un computer per eseguire un’attività. Invece di scrivere programmi in linguaggi come Java, C++ o JavaScript, si analizzano grandi set di dati (set che, in molti casi, devono essere etichettati manualmente per uno o più attributi) e poi si inizia a lavorare su parametri, campioni, feature e molti altri elementi allo scopo di trovare un buon punto di equilibrio nella qualità dei risultati. Non c’è niente di magico o di nuovo, il computer non sta imparando a programmare sé stesso, l’output sarà buono solo se l’input è buono, c’è un sacco di lavoro manuale da fare, possono essere commessi errori e il risultato sarà approssimativo: alla fine, ci si muove sempre all’interno dei limiti di una normale programmazione.

Detto questo, ecco l’ovvio corollario: Because of recent improvements in machine learning and neural networks, computing systems can now be trained to solve challenging tasks, usually based on data from humans performing the task. This training generally involves not only large amounts of data but also people with substantial expertise in software development and machine learningVisto che sempre di programmazione stiamo parlando, sono sempre necessari gli sviluppatori software e, cosa ancor più importante, servono persone con una notevole competenza ed esperienza di machine learning: il sogno che il machine learning sia qualcosa che chiunque possa facilmente utilizzare e gestire (basta prendere alcuni dati, organizzarli e poi impostare un sistema seguendo alcuni semplici passaggi…) rimane appunto solo un sogno! Nel mondo reale, c’è bisogno di sviluppatori, esperti e di grandi competenze di machine learning: queste necessità sono ovvie per chi lavora nell’ambito dell’intelligenza artificiale da anni (o anche solo da pochi mesi), ma sono completamente sottovalutate da tutti coloro che sono al di fuori del settore.

Anche il seguente passaggio merita un commento perché chiarisce un malinteso molto comune: The biggest recent progress in machine learning has been in so-called deep learning, where a neural network is arranged into multiple “layers” between an input, such as the pixels in a digital image, and an output, such as the identification of a person’s face in that image. Conoscendo le forti limitazioni del machine learning, in tanti sostengono che il deep learning non è come il machine learning, ma qualcosa di molto più intelligente e potente; come scritto nell’articolo, semplicemente non è vero.

Vale la pena leggere tutto l’articolo (non richiede più di 5-6 minuti) ma voglio sottolineare un’ultima cosa: While both conventional software development and AI methods require a precise definition of the task to be solvedAnche con le più avanzate tecniche di deep learning, per risolvere problemi reali e ottenere risultati utili è necessario lavorare sulla definizione precisa dell’attività da svolgere. Questo passaggio, che richiede una buona quantità di lavoro manuale, non può essere evitato: non si può definire l’attività in modo vago e aspettarsi che il sistema impari e si migliori da solo magicamente (non funzionerà mai).

L’articolo parla di intelligenza artificiale e machine learning in generale, non specificatamente dell’ambito cognitivo in cui lavoriamo: l’applicazione del machine learning a testi e documenti implica una serie di sfide e problemi che spesso sono molto più complessi di quelli legati all’elaborazione di immagini o al riconoscimento vocale.

È un dato di fatto che anche in campo cognitivo, le tecniche di machine learning possano far risparmiare tempo e denaro nell’implementazione del progetto, ma è importante conoscerle e utilizzarle solo negli scenari in cui possono davvero essere utili. Avere a disposizione un ricco set di strumenti è sempre meglio che averne uno piccolo, ma è comunque necessario ricordare che gli strumenti sono solo strumenti e che sono indispensabili le persone per utilizzarli nel modo giusto.