Il machine learning, o apprendimento automatico, è una branca dell’intelligenza artificiale che utilizza metodi o algoritmi per la creazione automatica di modelli dai dati. A differenza di un sistema che esegue un’attività seguendo regole esplicite e predefinite, un modello di machine learning apprende costantemente dall’esperienza.

Mentre un sistema basato su regole predeterminate eseguirà un’attività ogni volta allo stesso modo (nel bene o nel male), le prestazioni di un sistema di machine learning possono essere migliorate attraverso l’apprendimento, esponendo l’algoritmo a una maggiore quantità di dati differenti. Questo significa che i risultati di un modello di machine learning non sono mai certi e vanno quindi presi con le pinze. Per questo, molto spesso, i risultati sono corredati da una percentuale di accuratezza stimata. Sta all’utilizzatore, in base alla criticità e al rischio correlato a una sbagliata interpretazione, stabilire quale sia la percentuale di confidenza minima da utilizzare.

In altre parole, e in linea generale, un problema può essere affrontato con un approccio tradizionale tradizionale allo sviluppo software, che consiste principalmente nell’identificare e scrivere una funzione specifica in base a cui un certo input produce sempre un certo output.

In un problema risolto dalla funzione y=f(x), è il programmatore a descrivere nel dettaglio come funziona “f(x)”.

Con il machine learning, si usano algoritmi matematici e statistici generici che, esposti a una determinata serie di dati in una fase iniziale definita “di addestramento” (training) e passando per una seconda fase di valutazione dei risultati con ottimizzazione dei parametri, ricavano autonomamente la funzione – non sempre conosciuta e non sempre conoscibile dallo sviluppatore – in grado di individuare in una differente serie di dati (dati di esecuzione), il valore più probabile di y, indicando eventualmente un grado di confidenza nella stima. In pratica, ricava da solo la funzione f(x).

Il sistema composto da algoritmo addestrato, dati e parametri operativi viene chiamato modello. Vedremo più avanti nell’articolo quali sono gli algoritmi più usati per risolvere differenti problemi, e maggiori dettagli sulle fasi di training e valutazione dei modelli.

I modelli di machine learning sono molto efficaci nell’individuare caratteristiche comuni o tendenze in enormi serie di dati, prendendo in considerazione un numero di variabili che nessun essere umano può essere in grado di valutare, o addirittura di notare.  Non parliamo poi di inserirle tutte in un singolo algoritmo funzionante.

Leggi anche: L’intelligenza artificiale può essere utile, ma anche disruptive per le aziende
In questo articolo:

Applicazioni del machine learning

Ogni giorno nascono nuove applicazioni del machine learning, anche se non sempre si tratta di successi incondizionati. Le auto a guida autonoma sono un buon esempio in cui possiamo ritrovare attività semplici e che funzionano molto bene, come gli assistenti per il parcheggio e il mantenimento della corsia stradale, e attività complesse e dai risultati ancora incerti, come la guida autonoma senza intervento o supervisione umana, dove c’è ancora molta strada da fare (perdonateci il gioco di parole).

Nel campo dei giochi, l’apprendimento automatico ha portato a risultati strepitosi con dama, scacchi, shogi e con il gioco del Go, fino a poco tempo fa ritenuto troppo complesso per poter essere padroneggiato da un computer. A Novembre 2019, dopo aver ricevuto numerose sconfitte da parte del progetto AlphaGo di Google, il campione mondiale di Go Lee Se-dol ha annunciato il suo ritiro dal gioco professionale dichiarando che la IA è ormai imbattibile.

La traduzione automatica delle lingue è ormai usata da molti con soddisfazione, sebbene alcune coppie linguistiche funzionino meglio di altre, e molte traduzioni automatiche abbiano ancora bisogno di un intervento di correzione da parte di traduttori umani.

Il riconoscimento vocale e la conversione della voce in testo scritto funziona abbastanza bene per le persone con accenti tradizionali, ma non così bene per le persone con forti accenti regionali. Le prestazioni dipendono dai set di dati di apprendimento utilizzati dai vari produttori.

L’analisi automatica dei sentimenti sui social media (social media sentiment analisys) ha un tasso di successo ragionevolmente buono, probabilmente perché i set di dati per l’apprendimento (ad esempio le classificazioni dei prodotti Amazon, che accoppiano un commento con un punteggio numerico) sono numerosi e di facile accesso.

La valutazione automatica dei curriculum vitæ è un’area controversa. Amazon ha dovuto ritirare il proprio sistema interno a causa di alcuni errori di campionamento che hanno causato il declassamento di tutte le domande di lavoro presentate da donne.

Leggi anche: I segreti per superare i software di selezione e conquistare un colloquio

Altri sistemi per la valutazione di curriculum attualmente in uso potrebbero avere pregiudizi insiti nei dati di apprendimento che li inducono a migliorare i candidati che hanno caratteristiche simili a quelle degli attuali dipendenti in modi che non dovrebbero essere legalmente rilevanti (ad esempio, giovani, bianchi, candidati maschi di quartieri borghesi che giocano a tennis hanno maggiori probabilità di superare la selezione).

IBM, Microsoft e altre aziende, oltre a ricercatori indipendenti, si stanno sforzando di eliminare il più possibile i pregiudizi impliciti dai processi di apprendimento automatico. IBM in particolare ha una divisione di ricerca dedicata agli aspetti etici della IA guidata dall’italiana Francesca Rossi, ha pubblicato un suo codice di condotta e il CEO Jinni Rommetty si è spinta a dire che i produttori software che non sono in grado di spiegare e giustificare i risultati di un algoritmo di intelligenza artificiale, dovrebbero uscire dal mercato.

La classificazione automatica delle immagini diagnostiche è arrivata al punto in cui può aiutare (ma non sostituire) medici e radiologi per la rilevazione di alcuni tipi di anomalie.

Nel frattempo, i sistemi di identificazione facciale suscitano perplessità e controversie sia quando funzionano bene (a causa di considerazioni sulla privacy), sia quando funzionano male. In particolare, tendono a essere meno accurati nell’identificare donne e persone di colore, probabilmente a causa di un bias nella selezione dei dati di apprendimento.

Leggi anche: 10 casi concreti di utilizzo di AI e machine learning

Machine learning: training supervisionato e non supervisionato

Gli algoritmi di machine learning vengono spesso divisi in supervised (supervisionati) e unsupervised (non supervisionati). Nel primo caso, i dati con cui gli algoritmi vengono istruiti sono già contrassegnati con risposte valide, o in ogni caso è possible valutare i risultati per confermare o correggere il modello. Per esempio, per istruire un algoritmo su come riconoscere immagini di gatti, gli si forniscono una serie di immagini di gatti a cui si applica l’etichetta “è un gatto”, e immagini di oggetti o animali diversi con l’etichetta “non è un gatto”.  Con gli algoritmi non supervisionati invece i dati non vengono etichettati con la risposta corretta ed è la macchina a dover ricavare dai dati le informazioni necessarie, riuscendo così a individuare caratteristiche o pattern di cui non si conosceva l’esistenza a priori.

I problemi di machine learning supervisionato si possono poi ulteriormente suddividere in problemi di classificazione (previsione di risposte non numeriche, come la probabilità di un mancato pagamento del mutuo) e di regressione (previsione di risposte numeriche, come il numero di prodotti che verranno venduti il ​​mese prossimo in un punto vendita di Milano).

Nel machine learning non supervisionato si possono invece distinguere problemi di clustering o raggruppamento (ricerca di gruppi di oggetti simili, come scarpe da corsa, scarpe da passeggio e scarpe eleganti), associazione (ricerca di sequenze comuni di oggetti, come caffè e latte) e di riduzione della dimensionalità (o dimensionality reduction, cioè la proiezione, selezione ed estrazione delle caratteristiche chiave di un modello, per esempio allo scopo di eliminare da una tabella le colonne con i dati non necessari o fuorvianti).

Algoritmi di machine learning

Il machine learning utilizza svariati algoritmi per trasformare un set di dati in un modello. Quale algoritmo funzioni meglio dipende dal tipo di problema che si sta affrontando, dalle risorse informatiche disponibili e dalla natura dei dati. Indipendentemente dall’algoritmo o dagli algoritmi utilizzati, è prima necessario ripulire e preparare i dati, argomento che affronteremo più avanti.

Classificazione e uso dei principali algoritmi di machine learning.

Alcuni algoritmi di machine learning, la loro classificazione e i principali utilizzi. (clic per ingrandire)

Vediamo quali sono gli algoritmi utilizzati più frequentemente per ogni tipo di problema.

Algoritmi di classificazione

Un algoritmo di classificazione individua la funzione che meglio descrive le zone che separano i dati che presentano caratteristiche differenti tra loro. (Immagine di Alisneaky, licenza CC BY-SA 4.0)

Un algoritmo di classificazione individua la funzione che meglio descrive le zone che separano i dati che presentano caratteristiche differenti tra loro. (Immagine di Alisneaky, licenza CC BY-SA 4.0)

Un problema di classificazione è un problema di apprendimento supervisionato che richiede di fare una scelta tra due o più classi da attribuire ai dati, in genere fornendo una probabilità per ogni classe. Tralasciando le reti neurali e il deep learning, che richiedono un livello molto elevato di risorse informatiche, gli algoritmi più comuni sono il Naive Bayes Classifier, l’Albero decisionale, la Regressione logistica, K-Nearest Neighbours (K-NN) e Support Vector Machine (SVM). Si possono anche usare metodi abbinati (combinazioni di modelli), come Random Forest e altri metodi metodi di potenziamento come AdaBoost e XGBoost. Qui su Wikipedia si trova un lungo elenco di algoritmi di classificazione.

Algoritmi di regressione

La regressione individua una funzione che traccia una linea che minimizzi la distanza media tra i punti.

La regressione individua una funzione che traccia una linea che minimizzi la distanza media tra i punti.

Un problema di regressione è un problema di apprendimento supervisionato che richiede al modello di prevedere un numero. L’algoritmo più semplice e veloce è la regressione lineare (metodo dei minimi quadrati), ma bisognerebbe fermarsi qui, perché spesso offre un risultato mediocre. Altri algoritmi di regressione di machine learning comuni (escluse le reti neurali) includono Naive Bayes, Albero decisionale, K-Nearest Neighbors, LVQ (Learning Vector Quantization), Least Angle Regression (LARS), Elastic Net, Random Forest, AdaBoost e XGBoost. Si noterà una forte sovrapposizione tra gli algoritmi di apprendimento automatico per la regressione e quelli per la classificazione.

Algoritmi di clustering

l’algoritmo K-Means affina il raggruppamento dei dati (Immagine di Chire, licenza CC BY-SA 4.0)

l’algoritmo K-Means affina il raggruppamento dei dati (Immagine di Chire, licenza CC BY-SA 4.0)

Un problema di clustering è un problema di apprendimento senza supervisione che richiede al modello di trovare gruppi di punti dati che presentino delle similarità tra loro.

L’algoritmo più popolare è il K-Means Clustering; altri esempi includono il clustering a spostamento medio, DBSCAN (cluster spaziale basato su densità di applicazioni con rumore), GMM (Gaussian Mixture Models) e HAC (Hierarchical Agglomerative Clustering o Clustering gerarchico).

Algoritmi di riduzione della dimensionalità

La riduzione della dimensionalità è un problema di apprendimento senza supervisione che richiede al modello di eliminare o combinare variabili che hanno un effetto scarso o nullo sul risultato. Questo è spesso usato in combinazione con la classificazione o la regressione. Gli algoritmi di riduzione della dimensionalità includono la rimozione di variabili con molti valori mancanti, la rimozione di variabili con bassa varianza, l’albero decisionale, Random Forest, la rimozione o la combinazione di variabili con alta correlazione, Backward Feature Elimination, Forward Feature Selection, Factor Analisys (analisi dei fattori) e PCA (analisi dei componenti principali).

Metodi di ottimizzazione

Il training e la valutazione trasformano gli algoritmi di apprendimento supervisionato in modelli ottimizzando i pesi dei parametri per trovare l’insieme di valori che si adattano meglio alla realtà fondamentale espressa dai dati. Per l’ottimizzazione gli algoritmi spesso si basano su metodi di analisi della “discesa più ripida”, ad esempio la discesa stocastica del gradiente (SGD), che è essenzialmente la ricerca della discesa più ripida eseguita più volte da punti di partenza casuali.

Il modello varia i parametri alla ricerca del punto di flessione nella curva che descrive la percentuale di errore (a sinistra), per individuare la funzione che meglio risolve un problema di classificazione e uno di regressione (a destra, alternativamente). L’animazione è contenuta in un divertente e istruttivo fumetto realizzato da Google per spiegare il machine learning.

Il modello varia i parametri alla ricerca del punto di flessione nella curva che descrive la percentuale di errore (a sinistra), per individuare la funzione che meglio risolve un problema di classificazione e uno di regressione (a destra, alternativamente). L’animazione è contenuta in un divertente e istruttivo fumetto realizzato da Google per spiegare il machine learning.

Gli affinamenti più comuni su SGD aggiungono fattori che correggono la direzione del gradiente in base al momento (combinazione di intensità e verso), o regolano la velocità di apprendimento in base ai progressi fatti da un passaggio attraverso i dati (chiamati epoch – epoca – o batch) al successivo.

Reti neurali e deep learning

Le reti neurali sono state nate prendendo ispirazione dall’architettura della corteccia visiva biologica. Il deep learning è un insieme di tecniche per l’apprendimento che utilizza reti neurali e coinvolge un gran numero di livelli “nascosti” per identificare le caratteristiche dei dati. I livelli nascosti si trovano tra i livelli di input e output. Ogni strato è costituito da neuroni artificiali, spesso con funzioni di attivazione a sigmoide o ReLU (Unità Lineare REttificata).

In una rete feed-forward, i neuroni sono organizzati in livelli distinti: un livello di input, un numero qualsiasi di livelli di elaborazione nascosti e un livello di output e gli output di ciascun layer passano solo al layer successivo.

In una rete feed-forward con connessioni dirette (shortcut connection), alcune connessioni possono saltare uno o più livelli intermedi. Nelle reti neurali ricorrenti, i neuroni possono influenzare sé stessi, direttamente o indirettamente attraverso il layer successivo.

Il deep learning utilizza reti neurali con più livelli “nascosti” e interconnessi tra loro.

Il deep learning utilizza reti neurali con più livelli “nascosti” e interconnessi tra loro.

L’apprendimento supervisionato di una rete neurale viene fatto come qualsiasi altro apprendimento automatico: si presentano alla rete gruppi di dati di addestramento, si confronta l’output di rete con l’output desiderato, si genera un vettore di errore e si applicano correzioni alla rete basate su di esso, di solito utilizzando un algoritmo di back propagation. I gruppi di dati di training che vengono trattati insieme prima dell’applicazione delle correzioni sono chiamati epoch (epoche).

Come per tutto il machine learning, è necessario verificare le previsioni della rete neurale rispetto a un set di dati di test separato. Senza fare questo passaggio, si rischia di creare reti neurali in grado di trattare solo il campione di training, invece di imparare a operare su dati generalizzati.

La svolta nel campo delle reti neurali nel campo della visione è stata l’architettura LeNet-5 che Yann LeCun ha creato nel 1998. Si tratta di una rete neurale convoluzionale (CNN) a sette livelli  per il riconoscimento di cifre scritte a mano e digitalizzate in immagini di 32×32 pixel. Per analizzare immagini ad alta risoluzione, la rete avrebbe bisogno di più neuroni e più livelli.

Le reti neurali convoluzionali in genere usano strati convoluzionali, di pooling, ReLU, livelli completamente connessi e livelli loss per simulare la corteccia visiva. Lo strato convoluzionale prende sostanzialmente gli integrali di molte piccole regioni sovrapposte. Il livello di pooling esegue una forma di down-sampling non lineare.

In un layer completamente connesso, i neuroni hanno connessioni complete a tutte le attivazioni dello strato precedente. Un livello loss calcola il modo in cui l’allenamento della rete penalizza la deviazione tra le etichette previste e quelle vere.

L’elaborazione del linguaggio naturale (Natural Language Processing, o NLP) è un’altra importante area di applicazione per il deep learning. Oltre al problema della traduzione automatica affrontato per esempio da Google Translate, le principali attività della NLP comprendono il riassunto automatico, la creazione di riferimenti incrociati, l’analisi del discorso, la segmentazione morfologica, il riconoscimento di entità nominate, la generazione del linguaggio naturale, la comprensione del linguaggio naturale, la codifica parziale, la sentiment analisys e il riconoscimento vocale.

Oltre alle reti neurali convoluzionali, le attività di NLP vengono spesso affrontate con reti neurali ricorrenti (RNN), che includono il modello LSTM (Long-Short Term Memory).

Più livelli ci sono in una rete neurale profonda, maggiore è la potenza di calcolo necessaria ad addestrare il modello. Per questo, si ricorre spesso ad hardware specializzati per accelerare il processo, come GPU, TPU e FPGA.

Reinforced learning

Il reinforced learning, o apprendimento rafforzato, addestra un agente autonomo a rispondere a un ambiente in modo da perseguire un obiettivo, per esempio massimizzare un certo valore, generalmente usando un meccanismo di prove ed errori (trial and error). È un concetto diverso da quelli di apprendimento supervisionato e non supervisionato, ma viene usato spesso in combinazione con essi.

L’agente intelligente viene fatto interagire con un ambiente, e ottiene una “ricompensa” quando le previsioni verificano determinate condizioni. Ripetendo più e più volte il processo, il modello è in grado di trovare le soluzioni che massimizzano la ricompensa.

Per esempio, AlphaGo di DeepMind, al fine di imparare a giocare (l’azione) il gioco di Go (l’ambiente), per prima cosa ha imparato a imitare i giocatori Go umani utilizzando un vasto set di dati di partite storiche (fase di training). In seguito, ha quindi migliorato il suo gioco per tentativi ed errori (apprendimento di rinforzo), giocando un gran numero di partite Go contro istanze indipendenti di sé stesso.

Il controllo di robot è un altro problema che è stato attaccato con metodi di deep reinforcement learning, ovvero apprendimento rafforzato più reti neurali profonde. Le reti neurali profonde sono spesso addestrate dalle CNN per estrarre informazioni dai frame video.

Machine learning: come creare e addestrare un modello

Come si fa a creare un modello di machine learning? Si inizia pulendo e preparando i dati, si continua con l’ingegnerizzazione delle funzionalità e quindi si prova ogni algoritmo di machine learning che abbia senso. Per alcune classi di problemi, come la visione e l’elaborazione del linguaggio naturale, gli algoritmi che potrebbero funzionare coinvolgono senz’altro il deep learning.

Leggi anche: I migliori strumenti di machine learning per data scientist e sviluppatori

Preparazione dei dati per il machine learning

In natura, non esistono dati davvero “puliti”. Per essere utilizzabili con un modello di machine learning, i dati devono quindi essere pesantemente filtrati. Per esempio, sarà necessario:

  • Osservare i dati ed escludere tutte le colonne che contengono molti dati mancanti.
  • Selezionare le colonne che si desidera utilizzare (selezione delle caratteristiche) per la propria previsione. Questo è un passaggio che potrebbe essere ripetuto, con variazioni, per confrontare e valutare diverse iterazioni.
  • Escludere, nelle colonne rimanenti, quelle righe che contengono dati mancanti.
  • Correggere errori di battitura ovvi e raggruppare le risposte equivalenti. Per esempio, Stati Uniti, United States, USA e U.S.A. dovrebbero essere raggruppati in un unico valore.
  • Escludere le righe che contengono dati non compresi nell’intervallo. Per esempio, se si stanno analizzando i viaggi in taxi all’interno di Roma, dovremmo filtrare le righe che mostrano punti di salita o discesa con latitudine e longitudine al di fuori dei confini dell’area metropolitana.

Si può fare molto di più in questo campo, ma dipenderà dai dati raccolti. Questo processo può essere lungo e noioso, ma se si imposta un passaggio di pulizia automatizzata dei dati nella pipeline di machine learning, può essere ripetuto a piacimento con poche modifiche fino a ottenere il risultato desiderato.

Codifica e normalizzazione dei dati per il machine learning

Per utilizzare i dati di categoria per la classificazione automatica, è necessario codificare le etichette di testo in un’altra forma. Esistono due codifiche comuni.

Uno è la codifica con etichette (label), il che significa che il valore di ciascuna etichetta di testo viene sostituito con un numero. L’altra è la codifica One-Hot, in cui ciascun valore dell’etichetta di testo viene trasformato in una colonna con un valore binario (1 o 0). La maggior parte dei framework di machine learning hanno funzioni che fanno automaticamente la conversione dall’uno all’altro sistema. In generale, si preferisce la codifica one-hot, poiché la codifica dell’etichetta può talvolta indurre l’algoritmo di apprendimento automatico a pensare che la colonna codificata sia ordinata.

label-one-hot-differenza

Per utilizzare dati numerici per la regressione, in genere è necessario normalizzare i dati. Altrimenti, i numeri con intervalli più ampi potrebbero tendere a dominare la distanza euclidea tra i vettori delle caratteristiche. I loro effetti potrebbero essere ingranditi a spese degli altri campi e l’ottimizzazione della discesa più ripida potrebbe avere difficoltà a trovare una convergenza. Esistono diversi modi per normalizzare e standardizzare i dati per il machine learning, tra cui la normalizzazione min-max, la normalizzazione media, la standardizzazione e il ridimensionamento in base all’unità di misura. Questo processo viene spesso chiamato ridimensionamento delle caratteristiche o dei dati.

Ingegnerizzazione delle caratteristiche per il machine learning

Una caratteristica è una proprietà misurabile individuale o caratteristica di un fenomeno osservato. Il concetto di “caratteristica” è correlato a quello di una variabile esplicativa, che viene utilizzata in tecniche statistiche come la regressione lineare. I vettori di caratteristiche combinano tutte le caratteristiche di una singola riga in un vettore numerico.

L’arte della scelta delle caratteristiche consiste in parte nello scegliere un set minimo di variabili indipendenti che spieghino il problema. Se due variabili sono altamente correlate, devono essere combinate in un’unica funzione, oppure è necessario eliminarne una. Molti eseguono l’analisi dei componenti principali per convertire le variabili correlate in un insieme di variabili non correlate linearmente.

Alcune delle trasformazioni utilizzate per costruire nuove funzionalità o ridurre la dimensionalità dei vettori di caratteristiche sono semplici. Per esempio, sottraendo l’Anno di  nascita dall’Anno del decesso si otterrà l’Anzianità alla morte, che è una variabile indipendente principale che può essere usata per analisi sull’aspettativa di vita e sulla mortalità. In altri casi, la costruzione di caratteristiche di sintesi potrebbe non essere così ovvia.

Suddivisione dei dati da usare per il machine learning

Nell’apprendimento automatico supervisionato, è pratica comune quella di suddividere il set di dati in sottoinsiemi per le fasi di addestramento, convalida e test. Spesso si assegna l’80% dei dati disponibili al set destinato al training e il 10% ciascuno ai set di dati di validazione e test. La maggior parte dell’addestramento viene eseguita in base al set di dati di addestramento e la previsione viene eseguita in base al set di dati di convalida alla fine di ogni epoca.

Gli errori nel set di dati di convalida possono essere utilizzati per identificare i criteri di arresto o per effettuare la messa a punto Di iperparametri. Soprattutto, gli errori nel set di dati di validazione possono aiutare a scoprire se il modello ha esagerato nell’adattare i dati di training (overfitting).

La previsione rispetto al set di dati di test viene in genere eseguita sul modello finale. Se un set di dati di test non è mai stato utilizzato per la formazione, a volte viene chiamato set di dati di controllo.

Esistono diversi altri schemi per suddividere i dati. Una tecnica comune, la convalida incrociata, prevede la suddivisione ripetuta del set di dati completo in un set di dati di training e un set di dati di validazione. Alla fine di ogni epoca, i dati vengono mescolati e nuovamente suddivisi.

AutoML e ottimizzazione dell’iperparametro

AutoML e l’ottimizzazione degli iperparametri sono metodi per indurre il computer a provare molti modelli differenti e identificare il migliore tra di essi. Con AutoML il computer prova tutti i modelli di apprendimento automatico appropriati, e può anche provare tutte le tecniche appropriate di ingegneria e ridimensionamento delle caratteristiche. Con l’ottimizzazione degli iperparametri, in genere si definiscono quali iperparametri si desidera variare per un modello specifico, per esempio il numero di livelli nascosti, il tasso di apprendimento e il tasso di abbandono, e l’intervallo di variazione per ciascuno.

Google ha una definizione diversa per Google Cloud AutoML. Invece di provare tutti i modelli di apprendimento automatico appropriati, tenta di personalizzare un modello di deep learning pertinente (visione, traduzione o linguaggio naturale) utilizzando il deep transfer learning. Il servizio Azure Machine Learning offre servizi di deep transfer learning simili con nomi diversi: custom vision, customizable speech and translation e custom search.

Machine learning in cloud

Si possono addestrare e utilizzare modelli di machine learning e deep learning su computer locali o in cloud. AWS, Azure e Google Cloud offrono tutti servizi di machine learning che è possibile utilizzare in modalità “as a service”, e in più offrono infrastrutture cloud con acceleratori hardware specifici.

Tutti e tre i fornitori hanno un livello base gratuito dei loro servizi cloud con cui è possibile cominciare a fare pratica, ma quando si entra nel vivo di un progetto le risorse necessarie cominciano a generare fatture mensili anche consistenti, soprattutto se si utilizzano istanze di grandi dimensioni con GPU, TPU o FPGA. Nella valutazione di un progetto, è necessario ponderare bene costo operativo rispetto all’investimento per l’eventuale acquisto di una workstation con una o più GPU dedicate. Se si devono addestrare molti modelli in modo costante, allora ha senso acquistare hardware dedicato.

Il grande vantaggio dell’utilizzo del cloud per il machine learning è che è possibile mettere insieme in pochi minuti una infrastruttura molto potente, eseguire rapidamente la fase di training, e quindi rilasciare le risorse cloud interrompendo così la fatturazione. Visto che ogni progetto di machine learning va un po’ visto come un esperimento dai risultati incerti (la percentuale di successo è del 15-20 percento), la possibilità di “sbagliare più velocemente” è senz’altro un fattore positivo, perché evita di rimanere per giorni o settimane attaccati a un modello destinato a fallire.

Leggi anche: 3 soluzioni per ingegnerizzare lo sviluppo dell’intelligenza artificiale

Inoltre, tutti i principali cloud provider offrono per i problemi più comuni dei servizi di machine learning e deep learning pronti all’uso, accessibili attraverso API e che quindi non richiedono un elevato grado di specializzazione. Ci sono opzioni per usare modelli pre-addestrati, personalizzarli per il proprio caso specifico o creare nuovi modelli con uno dei principali framework di machine learning e deep learning, come Scikit-learn, PyTorch e TensorFlow.

Esistono anche opzioni gratuite per utilizzare i Notebook Jupyter, come Google Colab e Kaggle (anch’esso recentemente acquisito da Google). I Notebook Jupiter sono documenti che contengono sia codice di programmazione, sia contenuti leggibili da un essere umano (testo, formule, immagini, figure e tabelle). I Notebok quindi sono contemporaneamente documenti che descrivono l’analisi e mostrano i risultati, ma anche dei software che possono essere eseguiti per generare l’analisi in questione. Colab offre una scelta di istanze CPU, GPU e TPU. Kaggle offre istanze di CPU e GPU, oltre a essere una piattaforma per la condivisione di data set, kernel e dove lanciare alla comunità degli utenti dei contest per sfidarli a risolvere, dietro ricompensa, il proprio problema specifico con il machine learning.

Testi e risorse per approfondire i concetti del machine learning

Si può imparare molto sul machine learning e sul deep learning installando uno dei tanti pacchetti disponibile, provando gli esempi forniti e leggendo i tutorial. Per un maggiore approfondimento, è bene però considerare una o più delle seguenti letture: