Machine learning — L’imperatore è nudo?
Un retroscena su come funziona il machine learning
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?
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.
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.
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.
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:
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.
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”).
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!
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.
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.