Corso
Oggi il termine machine learning non è affatto raro: realtà come DataCamp, Coursera, Udacity e molte altre lavorano costantemente per rendere l’educazione al machine learning più efficiente e accessibile a tutti. Grazie alle loro piattaforme, iniziare in questo campo è davvero semplice anche senza grandi prerequisiti. Tuttavia, l’espressione Automated Machine Learning sta facendo sempre più notizia nei forum dedicati alla Data Science. Molte organizzazioni come Google, H2O.ai, ecc. stanno facendo un lavoro notevole in quest’area. Non è un argomento così comune rispetto al Machine Learning in generale. Dal momento che il machine learning riguarda di per sé l’automazione, è naturale che la prima domanda che viene in mente sia: "Si può automatizzare anche il machine learning?"
In questo tutorial troverai le risposte a molte domande di questo tipo.
Iniziamo.
Capire una pipeline standard di Machine Learning
Quando, da Data Scientist, affronti un problema, il tuo flusso di lavoro tipico somiglia a questo:
- Raccolta dei dati
- Preprocessing dei dati
- Inizializzazione di un modello di machine learning potenzialmente adatto al problema
- Training del modello
- Test del modello
- Regolazione dei parametri del modello
- Nuovo test del modello
- Comunicazione dei risultati
Il secondo passaggio, Preprocessing dei dati, è molto ampio perché è in sostanza una delle attività più dispendiose in termini di tempo dell’intera pipeline: include molte sotto-attività come Data Cleaning, Data Transformation, Feature Selection, ecc. I passaggi dal 3 al 7 riguardano un singolo modello di machine learning. Un buon professionista non si ferma certo a un solo modello: proverà diversi modelli per confrontarne i risultati e decidere infine il migliore per il problema. Ed ecco un altro insieme di attività molto impegnative in termini di tempo: decidere quale modello scegliere?
La seguente citazione sul processo di debugging in un compito di machine learning è quanto mai calzante ed è fondamentale tenerla a mente:
A questo punto dovresti avere un’idea di massima di un tipico compito di ingegneria del machine learning. In definitiva dovrai decidere quale modello è il migliore per il problema che hai tra le mani e spiegare anche perché lo è. A volte ti troverai in situazioni in cui le possibilità da provare sono tantissime e la scadenza è vicina. Colto il punto? Vediamo oltre.
Come si può automatizzare la pipeline di Machine Learning?
Proseguiamo partendo dall’idea di dover scegliere il modello migliore in una situazione in cui il numero di possibilità e la scadenza sono inversamente proporzionali.
All’inizio di questo tutorial ti sei imbattuto nella domanda "Si può automatizzare anche il machine learning?". Non è affatto una domanda sciocca. Persino Sebastian Raschka, in un’intervista, ha descritto l’Automated Machine Learning come "l’automazione dell’automatizzare l’automazione".
Rivedi il punto 5 del flusso di lavoro standard che hai appena esaminato: Regolare gli iperparametri del modello. Mettiamo che tu abbia finito di preparare i dati e abbia appena inizializzato un classificatore $X$. Supponiamo che $X$ preveda 5 iperparametri diversi. Dovrai quindi provare lo stesso classificatore $X$ con differenti insiemi di valori degli iperparametri, il che non è affatto banale da eseguire. E ora arriva la parte più problematica: dopo aver provato varie combinazioni, scopri che i risultati non sono abbastanza buoni. Decidi quindi di testare altri quattro classificatori (ognuno con 6 iperparametri diversi). Riesci a immaginare quanto tempo possa richiedere? E se anche dopo questo non ottenessi risultati soddisfacenti? L’indagine su cosa non va sarebbe un altro processo estremamente dispendioso.
È da questo problema che nasce l’idea stessa dell’Automated Machine Learning.
"Se occorre costruire numerosi modelli di machine learning, usando una varietà di algoritmi e molteplici configurazioni di iperparametri, allora la costruzione dei modelli può essere automatizzata, così come il confronto delle prestazioni e dell’accuratezza." - KDNuggets
Ora è chiaro perché il termine Automated Machine Learning stia attirando tanta attenzione nei forum di educazione alla Data Science. Approfondiremo l’argomento nella prossima sezione.
Introduzione all’Automated Machine Learning
La messa a punto degli iperparametri per diversi modelli di machine learning è anch’essa un’operazione che può richiedere molto tempo. In termini più informatici, il tuning degli iperparametri è un processo di ricerca che, in questo caso, può essere estremamente esaustivo. E se potessimo automatizzare questo processo? Ecco, in sostanza è ciò che fa l’automated machine learning. "L’automated machine learning è una soluzione diretta alla carenza di data scientist, poiché può aumentare drasticamente le prestazioni e la produttività dei data scientist accelerando i cicli di lavoro, migliorando l’accuratezza dei modelli e, in ultima analisi, persino sostituendo la necessità dei data scientist." -Automated Machine Learning for Internet of Things
Ora hai abbastanza elementi sull’automated machine learning e sei pronto a vederlo in azione. Prima, però, vediamo alcune delle librerie Python più usate per farlo.
Librerie Python per l’Automated Machine Learning
Esistono molte librerie Python per eseguire l’automated machine learning. Tutte puntano più o meno allo stesso obiettivo: automatizzare il processo di machine learning. Ecco alcune tra le più utilizzate:
Ognuna di queste librerie adotta un proprio approccio per affrontare il processo di "automazione dell’automatizzare l’automazione". In questo tutorial userai Auto-Keras. Allora, perché aspettare? Facciamolo.
Introduzione ad Auto-keras
"Auto-Keras è una libreria software open source per l’automated machine learning." (Fonte) È sviluppata dal DATA Lab della Texas A&M University e da contributori della community. Secondo il sito ufficiale di auto-keras: "L’obiettivo finale di questo automated machine learning è fornire strumenti di deep learning facilmente accessibili a esperti di dominio con competenze limitate in data science o machine learning. Auto-Keras offre funzioni per cercare automaticamente architetture e iperparametri di modelli di deep learning."

Fonte: Auto-Keras
Per installare auto-keras esegui il seguente comando.
Nota: attualmente Auto-Keras è compatibile solo con: Python 3.6.
!pip install autokeras
Ora che hai installato correttamente Auto-Keras, è il momento di una rapida implementazione.
Un caso d’uso di AutoML con Auto-keras
Per questo case study userai il popolarissimo dataset MNIST. keras include già questo dataset, quindi non devi scaricarlo a parte. Inizierai caricando il modulo ImageClassifier di auto-keras. Caricherai anche il dataset MNIST dal modulo keras.
from keras.datasets import mnist
from autokeras import ImageClassifier
Hai caricato il dataset MNIST dal modulo keras.datasets e importato ImageClassifier da auto-keras. Ora separerai il dataset in train e test split.
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,)) # (1,) denotes the channles which is 1 in this case
x_test = x_test.reshape(x_test.shape + (1,)) # (1,) denotes the channles which is 1 in this case
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 1s 0us/step
Hai separato train e test e ora effettuerai il fit di ImageClassifier con x_train e y_train. Testerai le prestazioni su x_test e y_test.
# Instantiate the ImageClassifier class
clf = ImageClassifier(verbose=True, augment=False)
# Fit the train set to the image classifier
clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
# Summarize the results
y = clf.evaluate(x_test, y_test)
print(y * 100)
È semplice come vedi sopra. Bastano 4–5 righe di codice per un esperimento rapido. In realtà non è poi così rapido: il codice richiede un tempo considerevole per l’esecuzione. Una configurazione adeguata per esperimenti di Deep Learning ti aiuterà senza dubbio. Anche Google Colab è un ottimo punto di partenza.
Ora vediamo meglio i parametri usati nel codice. Faremo riferimento alla documentazione di auto-keras; di seguito i punti rilevanti:
- In ImageClassifier():
- verbose: booleano che indica se stampare a output il processo di ricerca.
- augment: booleano che indica se è necessario effettuare data augmentation. Se non definito, usa il valore di Constant.DATA_AUGMENTATION, che è True per impostazione predefinita.
- Nel metodo fit():
- time_limit: il limite di tempo per la ricerca in secondi.
- final_fit(): training finale dopo aver trovato la migliore architettura.
- retrain: booleano che indica se re-inizializzare i pesi del modello.
Auto-keras è una libreria in evoluzione ed è ancora in versione pre-release. Secondo il sito ufficiale, supporta i seguenti moduli principali:
- supervised: la classe base per tutti i task supervisionati.
- bayesian: un GaussianProcessRegressor per l’ottimizzazione bayesiana.
- search: classe base di tutti i searcher. Ogni searcher può sovrascrivere la propria funzione di ricerca per implementare la propria strategia.
- graph: classe che rappresenta il grafo dell’architettura neurale di un modello Keras. Estrae il grafo dell’architettura da un modello Keras. Ogni nodo del grafo è un tensore intermedio tra layer. Ogni layer è un arco del grafo. In particolare, più archi possono riferirsi allo stesso layer (ad es. il layer Add somma due tensori in un unico tensore, perciò è collegato a due archi).
- preprocessor: classe che può formattare i dati. Fornisce metodi per trasformare le etichette di classificazione dei dati in un vettore.
- model_trainer: classe usata per addestrare il modello. Può addestrare un modello Pytorch con i data loader forniti. Metric, loss_function e modello devono essere compatibili tra loro. Vedi i dettagli negli Attributi.
Note finali
Sei arrivato alla fine. In questo tutorial hai rivisto il processo del machine learning in generale e hai visto come possa essere automatizzato. Hai dato un’occhiata alle librerie disponibili per l’AutoML. Hai usato auto-keras per capire che tipo di astrazione ad alto livello offre e quanto sia facile da usare.
Questo tutorial potrebbe farti pensare che l’AutoML, una volta a prova di errore, possa sostituire molti data scientist. Davvero? Ripensaci. L’AutoML libera i data scientist dal peso del processo iterativo di selezione del modello migliore per un problema. In questo modo, ci si può concentrare di più sui dati, che sono l’aspetto più essenziale. Questa intervista a Randy Olson offre spunti interessanti sull’argomento. Dagli un’occhiata e non ti sentirai demotivato. Se mai dovessi dubitare del lavoro di un professionista del machine learning, leggi questo post.
Il campo dell’automated machine learning sta davvero facendo progressi. Per esempio, NAS, acronimo di Neural Architecture Search, è un algoritmo che cerca la migliore architettura di rete neurale. Di seguito alcuni link a risorse che mostrano casi d’uso all’avanguardia dell’AutoML:
- Design by Evolution: come far evolvere la tua rete neurale con l’AutoML
- AutoML Challenge: un balzo in avanti per le competizioni di machine learning
- L’AI di Google può creare codice di machine learning migliore di quello dei ricercatori che l’hanno sviluppata
- Auto-Keras, ovvero come creare un modello di Deep Learning in 4 righe di codice
Alcune fonti utilizzate:
- Auto-Keras, ovvero come creare un modello di Deep Learning in 4 righe di codice
- AutoKeras: il killer dell’AutoML di Google
Se vuoi approfondire il Deep Learning, segui il corso "Deep Learning in Python" di DataCamp e dai un’occhiata al nostro corso Introduction to Deep Learning in Python.

