Machine learning — L’imperatore è nudo?

Un retroscena su come funziona il machine learning

Cassie Kozyrkov
8 min readJul 30, 2019

Tradotto da Felice Rocchitelli, originale di Cassie Kozyrkov

Il Machine learning usa i pattern nei dati per etichettare le cose. Ha un suono magico? I concetti chiave sono di una semplicità imbarazzante. Dico “imbarazzante” perchè se qualcuno te ne avesse parlato come se fosse una cosa mistica, dovrebbe sentirsi in imbarazzo. Lasciami cercare di chiarirti le idee.

I concetti chiave sono di una semplicità imbarazzante.

Il nostro esempio di etichettatura delle cose richiede di classificare il vino come buono o non-così-buono, renderemo le nozioni abbastanza semplici da poter essere accompagnate da un buon calice di vino… o tre.

Come funziona?

Il ML non è magia — è impossibile imparare senza dati, quindi dovrò provare un po’ di vino. Se vuoi saperlo, questo ha ricevuto un’etichetta N, N per no-non-proviamolo-ancora. E me lo sono versato tutto addosso. Cosa non facciamo per amore della scienza!

Dati

Per imparare, ti serve qualcosa da cui imparare. Immaginiamo che abbiamo provato 50 vini (per la scienza!) e illustrato qui sotto le loro informazioni, per il tuo piacere visivo. Ogni vino ha un età in anni, un punteggio di qualità, e in più la risposta corretta che stiamo cercando di apprendere: Y per buono e N per non-così-buono.

Dopo aver assaggiato i vini e riportato i loro dati in una tabella (sinistra), le buone maniere suggeriscono che ti mostri le informazioni in un formato più consono alla visualizzazione (destra). Se stai cercando i tecnicismi come le caratteristiche e le istanze, ecco la mia guida. Dato che siamo amici, gli “input” andranno bene.

Algoritmo

Scegliendo di usare un algoritmo di machine learning specifico, stiamo scegliendo il tipo di ricetta che vogliamo ottenere. Perchè non provi a interpretare tu il ruolo di algoritmo per me? Il tuo unico compito è quello di separare le cose blu dalle cose rosse. Puoi farlo?

Lo scopo di un algoritmo di machine learning è scegliere il punto più preciso in cui delimitare i dati.

Se pensi di disegnare una linea, congratulazione! Hai appena inventato un algoritmo di machine learning il cui nome è…percettrone. Esatto, un nome così fantascientifico per una cosa così semplice! Non essere intimidito dai tecnicismi del machine learning, di solito non meritano il timore e lo stupore ai cui alludono i propri termini.

Come separeresti gli elementi blu da quelli rossi?

Dove collocheresti la linea? Spero tu sia d’accordo sul fatto che un linea retta non rappresenti una soluzione intelligente. Il nostro scopo è separare Y da N, non dipingere l’orizzonte.

Lo scopo di un algoritmo di machine learning è quello di scegliere il posto più preciso in cui delimitare il confine, facendolo in base a dove hai collocato i punti (dati). Come riesce a farlo? Ottimizzando una funzione obiettivo.

Ottimizzazione

Riserverò all’ottimizzazione una pubblicazione tutta sua, ma per il momento vedila così: la funzione obiettivo è come le regole per l’assegnazione dei punteggi in un gioco da tavolo, ottimizzarla vuol dire trovare il metodo di gioco tale per cui tu riesca a ottenere il più alto punteggio possibile.

Una funzione obiettivo (funzione di perdita) è come il punteggio per un gioco da tavola. Questa foto suggerisce che al college dovevo ancora imparare l’ottimizzazione… perchè sto giocando la strategia “land-war-in-Asia”?

Tradizionalmente nel ML, apprezziamo il bastone più della carota — i punti rappresentano le penalità per gli errori (ottenere un’etichetta sulla parte sbagliata della area circoscritta) e il gioco consiste nel ricevere il minor numero possibile di penalità. Ecco perché la funzione obiettivo nel ML tende ad essere chiamata “funzione di perdita” è lo scopo è quello di minimizzare la perdita.

La funzione di perdita è come il punteggio per un gioco da tavolo, ottimizzarla vuol dire trovare il metodo di gioco che ti consente di ottenere il miglior punteggio possibile.

Vuoi giocare? Vai indietro al grafico qui sopra, metti il dito orizzontalmente sullo schermo e ruotalo finchè non ottieni un risultato in cui non vi siano punti sbagliati (nessun punto può sfuggire alla collera segregazionista del tuo potente dito). Congratulazioni, Compagno Percettrone! Ti senti già nel futuro?

I tecnicismi del machine learning di solito non meritano il timore e lo stupore a cui alludono i propri termini.

La soluzione a cui sei giunto spero si avvicini a queste:

Nell’immagine più a sinistra, andiamo; non ci abbiamo neanche provato. Spero che concorderai sul fatto che quella centrale sia meglio, ma ancora non si adatta come potrebbe. Sono fan di quella più a destra.

Il sale della vita

Se ti piace la diversità, amerai gli algoritmi. Ce ne sono moltissimi. Una cosa in cui differiscono l’uno dall’altro è il modo in cui provano a raggiungere le differenti posizioni per suddividere il confine.

Se ti piace la diversità, amerai gli algoritmi. Ce ne sono così tanti!

Gli studiosi di ottimizzazione ti direbbero che ruotare il confine con piccoli incrementi è veramente poco convincente (scusami per averti ingannato!) e ci sono molti modi migliori per ottenere la posizione ottimale in maniera più veloce. Alcuni ricercatori dedicano la loro intera vita nel cercare il modo migliore di ottenere la posizione di confine nel minor numero di salti, non importa quanto diventi perverso il campo d’azione (determinato dagli input a disposizione).

Un’altra fonte di diversità è la forma del confine. Scopriamo che il confine non debba per forza essere una retta. Algoritmi differenti usano forme differenti di linee di confine.

Quando scegliamo questi nomi incomprensibili, stiamo solo scegliendo la forma della linea di confine che disegneremo tra le etichette. Vogliamo separarle con un’unica linea diagonale o con più linee orizzontali/verticali o scarabocchi flessibili… o qualcos’altro? Ci sono tantissimi algoritmi da poter scegliere.

Algoritmi per hipsters

Oggi, nessun hipster della Scienza dei dati sceglierebbe l’umile linea retta. Forme flessibili, sinuose, sono di gran moda tra il pubblico mondano (potresti conoscerli come reti neurali, sebbene non ci sia molto di neurale in questi — sono stati chiamati in tal modo, piuttosto ambizioso, più di mezzo secolo fa e a nessuno sembra piacere la mia proposta di rinominarli “reti di yoga” o diversi-livelli-di-operazioni-matematiche”).

Invece della trovata-commerciale di comparare gli altri algoritmi a linee e le reti neurali a cervelli umani, è meglio vederli per la lora abilità da contorsionisti. Gli altri modelli sono semplicemente meno bravi nel fare yoga sui dati. Tuttavia, niente è gratis, e le reti neurali esigono un prezzo elevato (presto maggiori dettagli!), quindi non fidarti di tutti quelli che dicono che rappresentano sempre la migliore soluzione.

Le reti neurali potrebbero tranquillamente essere chiamate “reti di yoga” — il loro super potere è quello di fornirti un confine estremamente flessibile.

Questi algoritmi dai nomi incomprensibili dicono qual è la forma di confine che inseriranno nei tuoi dati. Se sei un entusiasta di machine learning, va’ comunque bene se non li memorizzi tutti — in pratica ti basta inserire i tuoi dati nel maggior numero possibile di algoritmi e iterare sulle parti che sembrano più promettenti. Provare per credere…quindi, proviamo!

Anche se studi dal libro di testo, non otterrai la soluzione al primo tentativo. Non provarci. Questo non è un gioco in cui esiste un’unica risposta giusta e nessuno ottiene la soluzione al primo tentativo. Dai a te stesso il permesso di provare diverse soluzioni, di immergerti e giocare. La prova della ricetta del machine learning è nell’assaggio — funziona con nuovi dati? Lascia il “come funziona” ai ricercatori che progettano nuovi algoritmi. (E alla fine, probabilmente, ti troverai a tuo agio con tutti questi nomi allo stesso modo in cui hai imparato i nomi dei personaggi delle brutte soap opera che infestano gli schermi del tuo paese. Contro la tua volontà. Dagli tempo.)

Modello

Una volta collocati i confini, l’algoritmo è finito e ciò che ottieni e quello che avresti voluto: un modello, che è solo una parola più raffinata per esprimere il termine ricetta. Ora consiste in una serie di istruzioni usate dal computer per convertire i dati in una scelta la prossima volta che gli mostrerò una nuova bottiglia di vino. Se i dati si collocano nel pezzo blu, li etichetta di blu. Se nel pezzo rosso? Li etichetta di rosso.

Etichetta

Una volta che avrai messo in produzione il tuo modello fresco di elaborazione, lo utilizzi fornendo al computer un’età e un punteggio da confrontare. Il sistema cerca la regione che corrisponde ad essi e restituisce un’etichetta.

Quando acquisto quattro nuove bottiglie, confronto semplicemente i loro dati con quelli delle aree blu e rosse e li etichetto conformemente a quanto espresso dal modello. Visto? È semplice!

Come possiamo sapere se funziona? Nello stesso modo in cui possiamo sapere che un gruppo di scimmie con la macchina da scrivere hanno scritto alcune frasi di Shakespeare. Controllando il risultato!

Per provare la ricetta, devi assaggiarla.

Testa il tuo sistema fornendogli nuovi dati da analizzare e assicurati che il risultato sia giusto. Di fatto, fallo comunque, a prescindere dal fatto che la ricetta ti venga fornita da un algoritmo o da un programmatore.

Riepilogo

Qui potete trovare un pratico riepilogo visivo, preso in prestito da un mio precedente articolo:

Il machine learning per i poeti

Se sei confuso, forse apprezzerai maggiormente questa analogia: Un poeta sceglie un approccio (un algoritmo) per esprimere sul foglio le parole. L’approccio determina la forma poetica risultante (forma della linea di confine) — sarà un sonetto o un endecasillabo? Non appena avrà completato di arricchire il contenuto del sonetto, esso diverrà poesia (modello). Come può una poesia essere una ricetta? Colpiscimi — sono pronto ai suggerimenti. Sebbene, il risultato nell’analogia funzioni.

Modelli di ML vs codice tradizionale

Vorrei far notare che la ricetta non è tanto differente dal codice che un programmatore potrebbe aver scritto avendo analizzato il problema e avendo creato manualmente alcune regole pratiche. Lascia stare il machine learning antropomorfico. Un modello è, concettualmente, uguale a un regolare codice. Lo sai, quel tipo di ricetta che viene fuori da quegli uomini armati di opinioni e caffeina.

Lascia stare il machine learning antropomorfico.

E non andare in giro dicendo che il retraining — tecnicismo usato per indicare la ri-esecuzione dell’algoritmo al fine di aggiustare il confine man mano che vengono aggiunti nuovi esempi — renda la tua creatura inerentemente differente dal risultato che avresti con il tuo lavoro da normale programmatore. Gli umani possono mettersi lì e modificare il codice in risposta a nuove informazioni allo stesso modo. Se sei preoccupato per il fatto che il tuo sistema di machine learning si aggiorni troppo velocemente, investi in metodologie di test efficienti o serviti di un lungo time.sleep().

È tutto qui?

Si, quasi tutto. La parte più difficile dell’ingegneria del ML è installare i pacchetti per poi litigare con quella bestia pelosa del tuo insieme di dati affinché un algoritmo schizzinoso si degni di eseguirlo. Ciò è seguito da un infinità di effusioni con le impostazioni del codice (non lasciarti ingannare dal nobile nome “regolazione degli iperparametri”) fino a che voila! Un modello! Uno che si scopre non essere funzionale quando provi ad eseguirlo su un nuovo insieme di dati…e sei di nuovo sulla tavola da disegno, ancora e ancora, fino a che si apre il paradiso e la tua soluzione smette di imbarazzarsi da sola. Questo è il motivo per il quale è così importante assumere per una tale impresa delle personalità tolleranti al fallimento.

Non odiarlo per la sua semplicità. Le leve sono altrettanto semplici, eppure possono sollevare il mondo.

Se ti aspettavi un qualche tipo di magia, beh, prima rimani deluso e meglio è per te. La morte dell’eccitamento superstizioso verso la fantascienza lascia spazio a una rinascita: l’eccitamento per riuscire a fare cose fighe. Il machine learning potrà pure essere banale, ma ciò che puoi fare con esso è incredibile! Ti aiuta a scrivere il codice che non avresti potuto realizzare da solo, permettendoti di automatizzare l’ineffabile. Non odiarlo per la sua semplicità. Le leve sono altrettanto semplici, eppure possono sollevare il mondo.

Se sei desideroso di iniziare un progetto di AI/ML, ho messo su una guida completa per seguirti passo dopo passo. Buon divertimento!

Clicca qui, per saperne di più sulla scienza dei dati e l’intelligenza artificiale.

--

--

Cassie Kozyrkov
Cassie Kozyrkov

Written by Cassie Kozyrkov

Head of Decision Intelligence, Google. Hello (multilingual) world! This account is for translated versions of my English language articles. twitter.com/quaesita

No responses yet