Optuna è un framework open source realizzato in Python per l'ottimizzazione di modelli di apprendimento automatico (in inglese machine learning (ML)). Realizzato per automatizzare il processo di scelta degli iperparametri al fine di ottimizzare le prestazioni, Optuna può essere integrato con librerie quali PyTorch, scikit-learn, e TensorFlow.

Optuna è stato introdotto nel 2018 by Preferred Networks (PFN), una startup giapponese che lavora su applicazioni pratiche di apprendimento profondo (in inglese deep learning (DL)), sviluppando tecnologie e librerie con applicazioni che variano tra diversi settori, tra cui trasporti, manufatturiero, medicina, and robotica. La versione beta di Optuna è stata pubblicata alla fine del 2018, mentre la prima versione stabile è stata annunciata a gennaio 2020.

Ottimizzazione degli iperparametri

L'ottimizzazione degli iperparametri è il processo che viene comunemente utilizzato quando si allenano modelli di apprendimento automatico per migliorarne le prestazioni e catturare lo schema dei dati. Si è osservato che tale processo è rilevante quando si ha a che fare con problemi su larga scala o a risorse limitate, in quanto migliora l'accuratezza del problema, riduce l'overfitting e diminuisce il tempo dell'allenamento.

L'ottimizzazione degli iperparametri riguarda l'identificazione della configurazione ottimale dei parametri che da definirsi prima che l'allenamento inizi, e che quindi non vengono definiti durante l'allenamento dei dati stessi. Questi valori possono essere, per esempio, il learning rate, il numero di strati (in inglese layers) o di neuroni, l'intensità della regolarizzazione, la profondità dell'albero, e altri che dipendono dal tipo di algoritmo (classificazione, regressione, clustering, ecc.).

Questo può migliorare la generalizzazione del modello e le sue prestazioni su diversi set di dati. Si è visto che una sfida rilevante si presenta quando lo spazio degli iperparametri aumenta, in quanto il processo può diventare computazionalmente costoso. Esistono metodi (come la ricerca a griglia, la ricerca casuale o l'ottimizzazione bayesiana) che semplificano questo processo di esplorazione dello spazio degli iperparametri.

Caratteristiche Optuna è progettato per ottimizzare gli iperparametri del modello. Consente di effettuare ricerche in spazi ampi e di interrompere l'allenamento quando i risultati non mostrano miglioramenti significativi del modello, nonché di parallelizzare le ricerche degli iperparametri su più processi. Optuna è modulabile, e consente quindi di definire diverse configurazioni per la ricerca degli iperparametri. Questo rende il processo personalizzabile, in quanto è possibile scegliere quali iperparametri ottimizzare e con quale modalità in fase di esecuzione. Ciò significa che i valori da esplorare per gli iperparametri (cioè lo spazio di ricerca) possono essere definiti durante la scrittura del codice, anziché in anticipo.

Campionamento Optuna sfrutta algoritmi consolidati per eseguire l'ottimizzazione degli iperparametri per il loro campionamento. I campionatori riducono progressivamente lo spazio di ricerca. Esempi sono gli algoritmi basati sul processo gaussiano, un processo per modellare la funzione obiettivo, il tree-structured parzen estimator (TPE), ovvero un metodo di ottimizzazione basato sul modello che stima la funzione obiettivo e seleziona i migliori iperparametri, e la ricerca casuale, un approccio di ottimizzazione di base utilizzato per il benchmarking.

Interruzione anticipata

Optuna include una funzione di interruzione anticipata (in inglese pruning), che viene sfruttata per interrompere l'allenamento quando i risultati non mostrano miglioramenti significativi nel modello, evitando così computazioni inutili. Viene utilizzato per modelli con lunghi tempi di addestramento, al fine di risparmiare tempo e risorse computazionali. Optuna sfrutta tecniche come gli algoritmi di pruning basati sulla mediana o su soglie.

Scalabilità Optuna è progettato per scalare con risorse di calcolo distribuite, supportando l'esecuzione in parallelo. Questa funzione consente agli utenti di eseguire prove di ottimizzazione su più processori o macchine.

Integrazione con librerie di terze parti Optuna può essere integrata con librerie e framework di ML: Catboost Dask fastai Keras LightGBM MLflow PyTorch PyTorch Ignite PyTorch Lightning TensorBoard TensorFlow tf.keras Weights & Biases XGBoost Optuna è inoltre dotato di una dashboard per la visualizzazione in tempo reale. Permette di monitorare, attraverso grafici e tabelle, il processo di ottimizzazione e l'importanza degli iperparametri.

Applicazioni Optuna è stato realizzato per essere agnostico rispetto al tipo di framework, quindi può essere utilizzato con qualunque tipo di framework di ML o DL.

Machine learning Optuna può essere utilizzato per ottimizzare gli iperparametri di modelli di ML. Alcuni esempi sono: Foresta casuale (in inglese random forest (RF)): numero di alberi, profondità massima e campioni minimi per foglia. Gradient boosting machine (GBM): learning rate, numero di estimatori, e profondità massima. Macchine a vettori di supporto (in inglese support vector machines (SVM)): regularization parameter (C), kernel type (e.g., linear, radial basis function), and gamma (gamma). K-nearest neighbors (KNN): number of neighbors (k), metriche di distanza (ad esempio, Euclidea o Manhattan), e funzione di peso . Regressione lineare e logistica: alpha nella regressione Ridge o C in nella regressione logistica. Naive Bayes: coefficienti di smussamento.

Deep learning Optuna può essere utilizzato anche durante l'allenamento di modelli di DL. Può essere utilizzato durante l'allenamento di reti neurali (in inglese neural netowrks (NN)), per ottimizzare learning rate, batch size, e il numero di strati nascosti. Per esempio, può essere utilizzato per:

Reti neurali convoluzionali (in inglese convolutional neural networks (CNNs)), per la classificazione di immagini, riconoscimento di oggetti, e segmentazione semantica. Reti neurali ricorsive (in inglese recurrent neural networks (RNNs)), per compiti basati su sequenze, come la previsione di serie temporali e l'elaborazione del linguaggio naturale. Transformers, per compiti di elaborazione del linguaggio naturale (in inglese natural language processing (NLP)) come la classificazione dei testi, l'analisi del sentiment e la traduzione automatica.

Domini Optuna ha trovato applicazione in vari studi di ricerca e implementazioni industriali in diversi ambiti applicativi.

Medicina Nel settore sanitario, Optuna viene sfruttato per l'analisi delle immagini per ottimizzare i modelli DL per il rilevamento dei tumori, per l'identificazione delle malattie, per l'esecuzione della segmentazione semantica multi-organo e per l'analisi di immagini radiologiche. Può essere sfruttato anche per la previsione delle malattie, in particolare per migliorare l'accuratezza dei modelli predittivi per la diagnosi e gli esiti dei trattamenti. Trova applicazione anche nella genomica, per l'analisi dei dati per prevedere le malattie genetiche e per l'identificazione di variazioni genetiche.

Finanza Optuna viene utilizzato per ottimizzare i modelli anche nel settore finanziario per il trading algoritmico. Data la sua capacità di gestire ampi intervalli di parametri e strutture di modelli complessi, viene utilizzato per prevedere i movimenti del mercato. In particolare, viene sfruttato per l'analisi e la previsione del rischio finanziario. I temi trattati sono i rischi di credito, di mercato e operativi.

Sistemi autonomi Optuna viene utilizzato nei sistemi autonomi in tempo reale per la robotica per supportare il processo decisionale in ambienti dinamici. Viene sfruttato anche nel contesto delle auto a guida autonoma per ottimizzare il modello per la navigazione in sicurezza in ambienti complessi. Ad esempio, Optuna può essere utilizzato in scenari in cui è necessario valutare il tasso e la gravità degli incidenti o per affrontare il problema degli attacchi informatici nella rete dovuti a potenziali vulnerabilità che potrebbero verificarsi.

Elaborazione del Linguaggio Naturale Optuna può essere applicato anche in NLP, ad esempio per classificare un testo scritto in categorie (ad esempio, spam vs. non spam, topic modeling). Un altro compito è l'analisi del sentimenti in un testo, particolarmente sfruttato per l'analisi dei contenuti dei social media e delle recensioni dei clienti.

Apprendimento per rinforzo Per quanto riguarda l'apprendimento per rinforzo (in inglese reinforced learning (RF), Optuna viene utilizzato nel gaiming e negli ambienti virtuali per migliorare le prestazioni del modello, nella robotica per ottimizzare i processi decisionali nei sistemi di esecuzione e navigazione, e nel campo dei veicoli autonomi per ottimizzare i modelli di RF al fine di ottenere una maggiore sicurezza e una strategia di navigazione più efficiente.

Note

Bibliografia

Voci correlate Apprendimento automatico Apprendimento profondo

Collegamenti esterni