Machine Learning automatizzato (AutoML)?

SI APPLICA A:Python SDK azureml v1

Machine Learning automatizzato, noto anche come ML automatizzato o AutoML, è il processo che consente di automatizzare le attività ripetitive e dispendiose in termini di tempo legate allo sviluppo di modelli di Machine Learning. Consente a data scientist, analisti e sviluppatori di creare modelli di Machine Learning con scalabilità, efficienza e produttività elevate, garantendo al tempo stesso la qualità del modello. ML automatizzato in Azure Machine Learning è basato su un'analisi approfondita svolta dalla divisione Microsoft Research.

Lo sviluppo di modelli di Machine Learning tradizionale comporta un utilizzo intensivo delle risorse, richiedendo notevoli conoscenze e tempo per produrre e confrontare decine di modelli. Con Machine Learning automatizzato, si accelera il tempo necessario per ottenere modelli di Machine Learning pronti per la produzione con grande facilità ed efficienza.

Modi per usare AutoML di Azure Machine Learning

Azure Machine Learning offre le due esperienze seguenti per l'uso di Machine Learning automatizzato. Vedere le sezioni seguenti per comprendere la disponibilità delle funzionalità in ogni esperienza (v1).

Impostazioni dell'esperimento

Le impostazioni seguenti consentono di configurare l'esperimento di Machine Learning automatizzato.

Python SDK Esperienza Web di Studio
Suddividere i dati in set di training/convalida
Supporta le attività di Machine Learning: classificazione, regressione e previsione
Supporta le attività di visione artificiale: classificazione delle immagini, rilevamento oggetti e segmentazione dell'istanza
Ottimizza in base alla metrica primaria
Supporta l'ambiente di calcolo di Azure Machine Learning come destinazione di calcolo
Configurare l'orizzonte di previsione, i ritardi di destinazione e la finestra mobile
Impostare criteri uscita
Impostare il numero massimo di iterazioni simultanee
Eliminazione delle colonne
Algoritmi di blocco
Convalida incrociata
Supporta il training su cluster di Azure Databricks
Visualizzare i nomi delle funzionalità progettate
Riepilogo delle funzionalità
Definizione delle funzionalità per le festività
Livelli di dettaglio file di log

Impostazioni del modello

Queste impostazioni possono essere applicate al modello migliore in seguito all'esperimento di Machine Learning automatizzato.

Python SDK Esperienza Web di Studio
Migliore registrazione, distribuzione e spiegazione del modello
Abilitare i modelli Ensemble di voto e sovrapposizione
Mostrare il modello migliore in base a una metrica non primaria
Abilitare/Disabilitare la compatibilità del modello ONNX
Testare un modello ✓ (anteprima)

Impostazioni del controllo del processo

Queste impostazioni consentono di esaminare e controllare i processi di esperimento e i processi figlio.

Python SDK Esperienza Web di Studio
Tabella di riepilogo processo
Annullare processi e processi figlio
Ottenere protezioni
Sospendere e riprendere i processi

Quando usare AutoML: classificazione, regressione, previsione, visione artificiale e NLP

Applicare Machine Learning automatizzato in modo che Azure Machine Learning esegua il training e l'ottimizzazione di un modello usando la metrica di destinazione specificata. Machine Learning automatizzato democratizza il processo di sviluppo di modelli di Machine Learning e consente agli utenti, indipendentemente dalla loro esperienza di data science, di identificare una pipeline di Machine Learning end-to-end per eventuali problemi.

I professionisti e gli sviluppatori di ML di tutti i settori possono usare Machine Learning automatizzato per:

  • Implementare soluzioni di Machine Learning senza una conoscenza approfondita della programmazione
  • Risparmiare tempo e risorse
  • Utilizzare procedure consigliate di data science
  • Fornire efficaci soluzioni ai problemi

Classificazione

La classificazione è un'attività di Machine Learning comune. La classificazione è un tipo di apprendimento supervisionato in cui i modelli imparano a usare i dati di training e applicano tali informazioni ai nuovi dati. Azure Machine Learning offre funzionalità specifiche per queste attività, ad esempio la definizione delle funzionalità del testo per la rete neurale profonda per la classificazione. Altre informazioni sulle opzioni di definizione delle funzionalità (v1) .

L'obiettivo principale dei modelli di classificazione è quello di stimare le categorie in cui rientreranno i nuovi dati in base alle informazioni sui dati di training. Esempi di classificazione comuni includono rilevamento delle frodi, riconoscimento della grafia e rilevamento degli oggetti. Per altre informazioni, vedere un esempio dell'attività in Creare un modello di classificazione con Machine Learning automatizzato (v1) .

Vedere esempi di classificazione e Machine Learning automatizzato in questi notebook Python: Rilevamento delle frodi, Previsione marketing e Classificazione dei dati del newsgroup

Regressione

Analogamente alla classificazione, anche quelle di regressione sono attività di apprendimento supervisionato comuni.

Diversamente dalla classificazione, dove i valori di output stimati sono categorici, i modelli di regressione stimano i valori di output numerici in base a predittori indipendenti. Nella regressione l'obiettivo è di stabilire la relazione tra le variabili indipendenti del predittore stimando il modo in cui una variabile influisce sulle altre. Ad esempio, il prezzo dell'automobile in base a caratteristiche come, chilometraggio dei gas, classificazione di sicurezza e così via. Per altre informazioni, vedere un esempio dell'attività di regressione con Machine Learning automatizzato (v1) .

Vedere esempi di attività di regressione e sull'uso di Machine Learning automatizzato per le previsioni in questi notebook Python: Predizioni prestazioni della CPU,

Previsione della serie temporale

La compilazione di previsioni è parte integrante di qualsiasi azienda, sia che si tratti di ricavi, scorte, vendite o richieste dei clienti. È possibile usare Machine Learning automatizzato per combinare tecniche e approcci e ottenere una previsione della serie temporale consigliata e di alta qualità. Altre informazioni sono disponibili in questa guida pratica: Machine Learning automatizzato per la previsione di una serie temporale (v1).

Un esperimento di serie temporale automatizzato viene considerato un problema di regressione multivariata. I valori della serie temporale precedente vengono "trasformati tramite Pivot" per diventare dimensioni aggiuntive per il regressore insieme ad altri predittori. Questo approccio, a differenza dei metodi classici della serie temporale, ha il vantaggio di incorporare naturalmente più variabili contestuali e la relazione tra loro durante il training. Machine Learning automatizzato apprende un modello singolo, ma spesso con rami interni, per tutti gli elementi del set di dati e degli orizzonti di stima. Maggiori sono quindi i dati disponibili per la stima dei parametri del modello e più probabile diventa la generalizzazione per la serie non visibile.

La configurazione avanzata della previsione include:

  • Rilevamento festività e definizione delle funzionalità
  • Strumenti di apprendimento della serie temporale e della rete neurale profonda (Auto-ARIMA, Prophet, ForecastTCN)
  • Supporto di numerosi modelli tramite raggruppamento
  • Convalida incrociata dell'origine in sequenza
  • Ritardi configurabili
  • Funzionalità di aggregazione della finestra mobile

Vedere esempi di regressione e Machine Learning automatizzato per le stime in questi notebook Python: Previsioni sulle vendite, Previsioni sulla domandae Previsioni suli Utenti attivi giornalieri di GitHub.

Visione artificiale

Il supporto per le attività di visione artificiale consente di generare facilmente modelli sottoposti a training sui dati delle immagini per scenari come la classificazione delle immagini e il rilevamento degli oggetti.

Con questa funzionalità è possibile:

  • Integrare senza problemi con la funzionalità di etichettatura dei dati di Azure Machine Learning
  • Usare i dati etichettati per la generazione di modelli di immagine
  • Ottimizzare le prestazioni del modello specificando l'algoritmo del modello e ottimizzando gli iperparametri.
  • Scaricare o distribuire il modello risultante come servizio Web in Azure Machine Learning.
  • Rendere operativo su larga scala, sfruttando le funzionalità di MLOps e ML Pipelines (v1).

La creazione di modelli AutoML per le attività di visione è supportata tramite l'SDK Azure Machine Learning di Python. I processi, i modelli e gli output risultanti dalla sperimentazione sono accessibili dall'interfaccia utente dello studio di Azure Machine Learning.

Informazioni su come configurare il training AutoML per i modelli di visione artificiale.

Diagram showing resulting experiment from above.

ML automatizzato per le immagini supporta le attività di visione dei computer seguenti:

Attività Descrizione
Classificazione immagini in più classi Attività in cui un'immagine viene classificata con una sola etichetta di un set di classi, ad esempio ogni immagine viene classificata come immagine di un gatto, di un cane o di una papera
Classificazione immagini con più etichette Attività in cui un'immagine può avere una o più etichette di un set di etichette, ad esempio un'immagine può essere etichettata sia con "gatto" che con "cane"
Rilevamento di oggetti Attività per identificare gli oggetti in un'immagine e individuare ogni oggetto con un rettangolo di selezione, ad esempio individuare tutti i cani e i gatti in un'immagine e disegnare un rettangolo di selezione intorno a ognuno.
Segmentazione delle istanze Attività per identificare gli oggetti in un'immagine a livello di pixel, disegnando un poligono intorno a ogni oggetto nell'immagine.

Elaborazione del linguaggio naturale (NLP)

Il supporto per le attività di elaborazione del linguaggio naturale (NLP) in Machine Learning automatizzato consente di generare facilmente modelli sottoposti a training sui dati di testo per la classificare testi e per riconoscere scenari di entità denominati. La creazione di modelli NLP con ML automatizzato è supportata tramite l'SDK Python di Azure Machine Learning. I processi, i modelli e gli output risultanti dalla sperimentazione sono accessibili dall'interfaccia utente dello studio di Azure Machine Learning.

La funzionalità NLP supporta:

  • Training NLP della rete neurale profonda end-to-end con i modelli BERT con training preliminare più recente
  • Integrazione perfetta con etichettatura dei dati di Azure Machine Learning
  • Usare i dati etichettati per la generazione di modelli NLP
  • Supporto multilingue con 104 lingue
  • Training distribuito con Horovod

Informazioni su come configurare il training AutoML per i modelli NLP (v1).

Funzionamento di ML automatizzato

Durante il training, Azure Machine Learning crea numerose pipeline in parallelo che tentano di usare diversi algoritmi e parametri per conto dell'utente. Il servizio esegue l'iterazione tramite gli algoritmi di Machine Learning abbinati alle selezioni di funzionalità, in cui ogni iterazione produce un modello con un punteggio di training. Maggiore è il punteggio, più il modello viene considerato "adatto" ai dati. Il servizio si arresterà quando raggiunge i criteri di uscita definiti nell'esperimento.

Con Azure Machine Learning, è possibile progettare ed eseguire gli esperimenti di training di Machine Learning automatizzato con i passaggi seguenti:

  1. Identificare il problema di Machine Learning da risolvere: classificazione, previsione, regressione, visione artificiale o NLP.

  2. Scegliere se usare l'SKD Python o l'esperienza Web di Studio: informazioni sulla parità tra Python SDK e l'esperienza Web di Studio.

  3. Specificare l'origine e il formato dei dati di training etichettati: matrici Numpy o dataframe Pandas

  4. Configurare la destinazione di calcolo per il training del modello, ad esempio computer locale, ambiente di calcolo di Azure Machine Learning, macchine virtuali remote o Azure Databricks con SDK v1.

  5. Configurare i parametri di Machine Learning automatizzato che determinano il numero di iterazioni su modelli diversi, le impostazioni degli iperparametri, la definizione delle funzionalità/pre-elaborazione avanzata e le metriche da esaminare quando si determina il modello migliore.

  6. Inviare il processo di training.

  7. Esaminare i risultati

La figura seguente illustra questo processo.

Screenshot showing resulting experiment from above.

È possibile esaminare anche le informazioni registrate del processo, che contengono le metriche raccolte durante il processo. Il processo di training genera un oggetto Python serializzato (file .pkl) che contiene il modello e la pre-elaborazione dei dati.

Mentre la creazione di modelli è automatica, è anche possibile ottenere informazioni sull'importanza delle funzionalità per i modelli generati.

Linee guida per le destinazioni di calcolo locali e remote gestite di Machine Learning

L'interfaccia Web per Machine Learning automatizzato usa sempre una destinazione di calcolo remota. Tuttavia, quando si usa Python SDK, scegliere una destinazione di calcolo locale o remota per il training di Machine Learning automatizzato.

  • Computer locale: il training viene eseguito sul computer portatile locale o sul calcolo della macchina virtuale.
  • Computer remoto: il training viene eseguito nei cluster di calcolo di Machine Learning.

Scegliere una destinazione di calcolo

Quando si sceglie la destinazione di calcolo, tenere in considerazione i fattori seguenti:

  • Scegliere un computer locale: se lo scenario riguarda le esplorazioni iniziali o delle demo che usano piccoli dati e brevi training (ad esempio, secondi o un paio di minuti per processo figlio), il training sul computer locale potrebbe essere la scelta migliore. Non sono presenti tempi di installazione, le risorse dell'infrastruttura (PC o macchina virtuale) sono direttamente disponibili.
  • Scegliere un cluster di calcolo di Machine Learning remoto: se si esegue il training con set di dati più grandi, ad esempio nel training di produzione, la creazione di modelli che richiedono training più lunghi offre prestazioni di tempo end-to-end molto migliori perché AutoML parallelizzerà i training tra i nodi del cluster. In un calcolo remoto, il tempo di avvio per l'infrastruttura interna aggiungerà circa 1,5 minuti per ogni processo figlio, oltre a minuti aggiuntivi per l'infrastruttura cluster se le macchine virtuali non sono ancora attive e in esecuzione.

Vantaggi e svantaggi

Nella scelta tra calcolo locale o remoto, tenere presenti i vantaggi e gli svantaggi seguenti.

Vantaggi Svantaggi
Destinazione di calcolo locale
  • Nessun tempo di avvio dell'ambiente
  • Subset di funzionalità
  • Processi non parallelizzabili
  • Non ottimale per dati di grandi dimensioni
  • Nessun flusso di dati durante il training
  • Nessuna definizione delle funzionalità basata sulla rete neurale profonda
  • Solo Python SDK
  • Cluster di elaborazione di Machine Learning remoti
  • Set completo di funzionalità
  • Parallelizzare processi figlio
  • Supporto per dati di grandi dimensioni
  • Definizione delle funzionalità basata sulla rete neurale profonda
  • Scalabilità dinamica del cluster di elaborazione su richiesta
  • Esperienza senza codice (interfaccia utente Web)
  • Tempo di avvio per i nodi del cluster
  • Tempo di avvio per ogni processo figlio
  • Disponibilità di funzionalità

    Quando si usa il calcolo remoto, sono disponibili altre funzionalità, come illustrato nella tabella seguente.

    Funzionalità Remoto Locale
    Streaming dei dati (supporto per dati di grandi dimensioni, fino a 100 GB)
    Training e definizione delle funzionalità di testo basate su rete neurale profonda e modello BERT
    Supporto GPU predefinito (training e inferenza)
    Supporto per la classificazione delle immagini e l'assegnazione di etichette
    Modelli di previsione Auto-ARIMA, Prophet e ForecastTCN
    Più processi/iterazioni in parallelo
    Creare modelli con l'interpretabilità nell'interfaccia utente dell'esperienza Web di Machine Learning automatizzato
    Personalizzazione della progettazione delle funzionalità nell'interfaccia utente dell'esperienza Web di Studio
    Ottimizzazione degli iperparametri di Azure Machine Learning
    Supporto del flusso di lavoro della pipeline di Azure Machine Learning
    Continuare un processo
    Previsioni
    Creare ed eseguire esperimenti nei notebook
    Registrare e visualizzare le informazioni e le metriche dell'esperimento nell'interfaccia utente
    Protezione dati

    Training, convalida e test dei dati

    Con ML automatizzato è possibile fornire i dati di training per eseguire il training dei modelli di Machine Learning ed è possibile specificare il tipo di convalida del modello da eseguire. Machine Learning automatizzato esegue la convalida del modello come parte del training. Ovvero, ML automatizzato usa i dati di convalida per ottimizzare gli iperparametri del modello in base all'algoritmo applicato, per trovare la combinazione più adatta ai dati di training. Tuttavia, gli stessi dati di convalida vengono usati per ogni iterazione dell'ottimizzazione, che introduce distorsioni di valutazione del modello, poiché il modello continua a migliorare e adattarsi ai dati di convalida.

    Per verificare che tale distorsione non venga applicata al modello consigliato finale, ML automatizzato supporta l'uso di dati di test per valutare il modello finale consigliato da ML automatizzato alla fine dell'esperimento. Quando si forniscono dati di test come parte della configurazione dell'esperimento AutoML, questo modello consigliato viene testato per impostazione predefinita alla fine dell'esperimento (anteprima).

    Importante

    Il test dei modelli con un set di dati di test per valutare i modelli generati è una funzionalità di anteprima. Questa funzionalità è una funzionalità sperimentale di anteprima e può cambiare in qualsiasi momento.

    Informazioni su come configurare esperimenti AutoML per usare i dati di test (anteprima) con l'SDK (v1) o con studio di Azure Machine Learning.

    È anche possibile testare qualsiasi modello di Machine Learning automatizzato esistente (anteprima) (v1), inclusi i modelli dei processi figlio, fornendo dati di test personalizzati o riservando una parte dei dati di training.

    Progettazione delle caratteristiche

    La progettazione delle funzionalità è il processo nel quale si usano le conoscenze del dominio dei dati per creare funzionalità che consentono agli algoritmi di Machine Learning di apprendere meglio. In Azure Machine Learning, le tecniche di ridimensionamento e normalizzazione vengono applicate per semplificare la definizione delle funzionalità. Collettivamente, queste tecniche e progettazione di caratteristiche sono chiamate definizione delle funzionalità.

    Per gli esperimenti automatizzati di Machine Learning, la definizione delle funzionalità viene applicata automaticamente, ma può anche essere personalizzata in base ai dati. Altre informazioni sulle funzionalità incluse (v1) e sul modo in cui AutoML aiuta aprevenire l'overfitting e i sbilanciati nei modelli dell’utente.

    Nota

    I passaggi di definizione delle funzionalità di Machine Learning automatizzato (normalizzazione delle funzionalità, gestione dei dati mancanti, conversione dei valori di testo in formato numerico e così via) diventano parte del modello sottostante. Quando si usa il modello per le previsioni, gli stessi passaggi di definizione delle funzionalità applicati durante il training vengono automaticamente applicati ai dati di input.

    Personalizzare la definizione delle funzionalità

    Sono disponibili anche altre tecniche di progettazione delle funzionalità, ad esempio la codifica e le trasformazioni.

    Abilitare questa impostazione con:

    Modelli Ensemble

    Machine Learning automatizzato supporta i modelli Ensemble, che sono abilitati per impostazione predefinita. L'apprendimento dell'insieme migliora i risultati di Machine Learning e le prestazioni predittive combinando più modelli rispetto all'uso di modelli singoli. Le iterazioni dell'insieme vengono visualizzate come iterazioni finali del processo. Machine Learning automatizzato usa i metodi Ensemble di voto e sovrapposizione per combinare i modelli:

    • Voto: stima in base alla media ponderata delle probabilità della classe stimata (per le attività di classificazione) o alle destinazioni di regressione stimate (per le attività di regressione).
    • Sovrapposizione: combina modelli eterogenei ed esegue il training di un metamodello in base all'output dei singoli modelli. I metamodelli predefiniti correnti sono LogisticRegression per le attività di classificazione ed ElasticNet per le attività di regressione/previsione.

    L'algoritmo di selezione dell'insieme Caruana con l'inizializzazione dell'insieme ordinato viene usato per decidere quali modelli usare nell'insieme. A un livello elevato, questo algoritmo inizializza l'insieme con un massimo di cinque modelli con i punteggi individuali migliori e verifica che questi modelli siano entro il 5% di soglia del punteggio migliore per evitare un insieme iniziale scadente. Per ogni iterazione dell'insieme, viene aggiunto un nuovo modello all'insieme esistente e viene calcolato il punteggio risultante. Se un nuovo modello migliora il punteggio dell'insieme esistente, l'insieme viene aggiornato in modo da includere il nuovo modello.

    Per la modifica delle impostazioni dell'insieme predefinite in Machine Learning automatizzato, vedere la guida pratica (v1).

    Machine Learning automatizzato e ONNX

    Con Azure Machine Learning è possibile usare Machine Learning automatizzato per creare un modello Python e convertirlo nel formato ONNX. Quando i modelli sono nel formato ONNX, possono essere eseguiti in un'ampia gamma di piattaforme e dispositivi. Altre informazioni sull'accelerazione dei modelli di Machine Learning con ONNX.

    Vedere come eseguire la conversione nel formato ONNX in questo esempio di notebook Jupyter. Informazioni sugli algoritmi supportati in ONNX (v1).

    Il runtime di ONNX supporta anche C#, quindi è possibile usare il modello creato automaticamente nelle app C# senza la necessità di ricodificare o di una delle latenze di rete introdotte dagli endpoint REST. Altre informazioni sull’uso di un modello ONNX AutoML in un'applicazione .NET con ML.NET e inferenza di modelli ONNX con l'API C# di runtime ONNX.

    Passaggi successivi

    Sono disponibili più risorse per iniziare a usare AutoML.

    Esercitazioni/guide pratiche

    Le esercitazioni sono esempi introduttivi end-to-end di scenari AutoML.

    Gli articoli sulle procedure forniscono dettagli aggiuntivi sulle funzionalità offerte da Machine Learning automatizzato. ad esempio:

    Esempi di Jupyter Notebook

    Esaminare esempi di codice e casi d'uso dettagliati nel repository di notebook GitHub per esempi di Machine Learning automatizzato.

    Informazioni di riferimento su Python SDK

    Approfondire l'esperienza dei modelli di progettazione e delle specifiche delle classi SDK con la documentazione di riferimento della classe AutoML.

    Nota

    Le funzionalità di Machine Learning automatizzato sono disponibili anche in altre soluzioni Microsoft, ad esempio ML.NET, HDInsight, Power BI e SQL Server