9
Un algoritmo è una sequenza fissa di istruzioni per svolgere un compito. Il compito è suddiviso in fasi facili e prive di confusione: come una ricetta ben scritta.
I linguaggi di programmazione sono linguaggi che un computer può seguire ed eseguire. Fanno da ponte tra ciò che capiamo e ciò che può fare una macchina – in definitiva, interruttori che si accendono e si spengono. Per un computer immagini, video, istruzioni sono tutti degli 1 (interruttore acceso) e degli 0 (interruttore spento).
Quando viene scritto in un linguaggio di programmazione, un algoritmo diventa un programma. Le applicazioni sono programmi scritti per un utente finale.
I programmi convenzionali ricevono i dati e seguono le istruzioni per fornire un risultato. Molti dei primi programmi di intelligenza artificiale erano convenzionali. Poiché le istruzioni non possono adattarsi ai dati, questi programmi non erano molto bravi in cose come la previsione basata su informazioni incomplete e l’elaborazione del linguaggio naturale (NLP).
Un motore di ricerca è alimentato sia da fonti convenzionali che da algoritmi di apprendimento automatico. A differenza dei programmi convenzionali, gli algoritmi di apprendimento automatico analizzano i dati alla ricerca di modelli e utilizzano questi modelli o regole per prendere decisioni o previsioni future. In altre parole, basandosi sui dati – esempi buoni e cattivi – trovano la loro ricetta.
Questi algoritmi sono adatti a situazioni molto complesse e caratterizzati da dati mancanti. Possono anche monitorare le loro prestazioni e utilizzare questo feedback per migliorare con l’uso.
Questo approccio non è molto diverso da quello usato dagli esseri umani, in particolare dai bambini, che apprendono abilità al di fuori del sistema educativo convenzionale. I bambini osservano, ripetono, imparano, verificano il loro apprendimento e migliorano. Se necessario, improvvisano.
Ma la somiglianza tra macchine e umani è molto superficiale. L'”apprendimento” dal punto di vista umano è molto diverso e molto più sfumato e complesso dell'”apprendimento” per la macchina.
Un problema di classificazione
Un compito comune che un’applicazione di apprendimento automatico adotta per il suo funzionamento è la classificazione: questa è la foto di un cane o di un gatto? Questo studente è in difficoltà o ha superato l’esame? Esistono due o più gruppi. L’applicazione deve classificare i nuovi dati in uno di questi gruppi.
Prendiamo l’esempio di un mazzo di carte da gioco diviso in due pile – Gruppo A e Gruppo B, secondo un certo schema. Dobbiamo classificare una nuova carta, l’asso di quadri, come appartenente al Gruppo A o al Gruppo B.
Per prima cosa, dobbiamo capire come vengono suddivisi i gruppi: abbiamo bisogno di esempi. Pesciamo quattro carte dal gruppo A e quattro dal gruppo B. Questi 8 casi di esempio formano il nostro insieme di addestramento – dati che ci aiutano a vedere il modello – “allenandoci” a vedere il risultato.
Non appena ci viene mostrata la disposizione a destra, la maggior parte di noi indovina che l’Asso di quadri appartiene al gruppo B. Non abbiamo bisogno di istruzioni, il cervello umano è un prodigio nel trovare schemi. Come farebbe una macchina a farlo?
Gli algoritmi di apprendimento automatico (machine learning – ML) si basano su potenti teorie statistiche. I diversi algoritmi si basano su equazioni matematiche diverse che devono essere scelte con attenzione per adattarsi al compito da svolgere. È compito del programmatore scegliere i dati, analizzare quali caratteristiche dei dati sono rilevanti per il problema specifico e scegliere l’algoritmo di apprendimento automatico corretto.
L’importanza dei dati
L’estrazione della carta qui sopra potrebbe essere andata male in diversi modi. Fate riferimento all’immagine. 1 ha troppe poche carte, non è possibile indovinare. Il 2 ha più carte, ma tutte dello stesso seme: non c’è modo di sapere dove andrebbero i diamanti. Se i gruppi non sono della stessa dimensione, il 3 potrebbe benissimo significare che le carte numero sono nel gruppo A e le carte immagine nel gruppo B.
Di solito i problemi di apprendimento automatico sono più aperti e coinvolgono insiemi di dati molto più grandi di un mazzo di carte. Gli insiemi di addestramento devono essere scelti con l’aiuto dell’analisi statistica, altrimenti gli errori si insinuano. Una buona selezione dei dati è fondamentale per una buona applicazione di ML, più di altri tipi di programmi. L’apprendimento automatico ha bisogno di un gran numero di dati rilevanti. Come minimo assoluto, un modello di apprendimento automatico di base dovrebbe contenere un numero di punti dati dieci volte superiore al numero totale di caratteristiche1. Detto questo, il ML è anche particolarmente adatto a gestire dati rumorosi, disordinati e contraddittori.
Estrazione delle caratteristiche
Quando sono stati mostrati gli esempi del Gruppo A e del Gruppo B, la prima cosa che avete notato potrebbe essere il colore delle carte. Poi il numero o la lettera e il seme. Per un algoritmo tutte queste caratteristiche devono essere inserite in modo specifico. Non può sapere automaticamente cosa è importante per il problema.
Nel selezionare le caratteristiche di interesse, i programmatori devono porsi molte domande. Quante funzioni sono troppo poche per essere utili? Quante caratteristiche sono troppe? Quali caratteristiche sono rilevanti per il compito? Qual è la relazione tra le caratteristiche scelte – una caratteristica dipende dall’altra? Con le caratteristiche scelte, è possibile che l’output sia accurato?
Il processo
Quando il programmatore crea l’applicazione, prende i dati, ne estrae le caratteristiche, sceglie un algoritmo di apprendimento automatico appropriato (funzione matematica che definisce il processo) e lo addestra utilizzando dati etichettati (nel caso in cui l’output sia noto, come il gruppo A o il gruppo B) in modo che la macchina capisca il modello alla base del problema.
Per una macchina la comprensione assume la forma di un insieme di numeri – i pesi – che essa assegna a ciascuna caratteristica. Con l’assegnazione corretta dei pesi, la macchina può calcolare la probabilità che una nuova tessera appartenga al gruppo A o al gruppo B. In genere, durante la fase di addestramento, il programmatore aiuta la macchina modificando manualmente alcuni valori: questa operazione si chiama ottimizzazione dell’applicazione.
Una volta fatto questo, il programma deve essere testato prima di essere utilizzato. A tale scopo, al programma vengono forniti i dati etichettati che non sono stati utilizzati per l’addestramento. Questi dati sono chiamati dati di prova. A questo punto si valutano le prestazioni della macchina nel predire l’output. Una volta stabilito che le prestazioni sono soddisfacenti, il programma può essere messo in uso: è pronto a prendere nuovi dati e a fare una decisione o una previsione su di essi.
Un modello può funzionare in modo diverso sui set di dati di allenamento e di test? In che modo il numero di caratteristiche influisce sulle prestazioni in entrambi i casi? Guardate questo video per scoprirlo.
Le prestazioni in tempo reale vengono poi continuamente monitorate e migliorate (i pesi delle caratteristiche vengono aggiustati per ottenere risultati migliori). Spesso, le prestazioni in tempo reale danno risultati diversi rispetto a quando l’algoritmo di apprendimento automatico viene testato con dati già disponibili. Poiché sperimentare con utenti reali è costoso, richiede un elevato sforzo e spesso è rischioso, gli algoritmi vengono sempre testati utilizzando dati storici degli utenti, che potrebbero non essere in grado di valutare l’impatto sul comportamento degli utenti1. Per questo motivo è importante effettuare una valutazione completa delle applicazioni di apprendimento automatico una volta in uso:
Avete voglia di mettere mano all’apprendimento automatico? Provate questa attività.
1 Theobald, O. Machine Learning For Absolute Beginners: A Plain English Introduction (Second Edition) (Machine Learning From Scratch Book 1) (p. 24). Scatterplot Press. Kindle Edition.
2 Konstan, J., Terveen, L., Human-centered recommender systems: Origins, advances, challenges, and opportunities, AI Magazine, 42(3), 31-42, 2021.