Rete neurale multiclasse

Importante

Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.

A partire dal 1° dicembre 2021 non sarà possibile creare nuove risorse dello studio di Azure Machine Learning (versione classica). Fino al 31 agosto 2024 sarà possibile continuare a usare le risorse dello studio di Azure Machine Learning (versione classica).

La documentazione relativa allo studio di Machine Learning (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.

Crea un modello di classificazione multiclasse usando un algoritmo di rete neurale

Categoria: Machine Learning/Inizializza modello/classificazione

Nota

Si applica a: Machine Learning Studio (versione classica)

Moduli di trascinamento della selezione simili sono disponibili nella finestra Azure Machine Learning progettazione.

Panoramica del modulo

Questo articolo descrive come usare il modulo Multiclass Neural Network in Machine Learning Studio (versione classica) per creare un modello di rete neurale che può essere usato per stimare una destinazione con più valori.

Ad esempio, le reti neurali di questo tipo possono essere usate in attività di visione computer complesse, ad esempio il riconoscimento di cifre o lettere, la classificazione dei documenti e il riconoscimento dei modelli.

La classificazione tramite reti neurali è un metodo di apprendimento con supervisione e pertanto richiede un set di dati con tag che include una colonna etichetta.

È possibile eseguire il training del modello fornendo il modello e il set di dati contrassegnati come input per eseguire il training del modello o per ottimizzare gli iperparamermi del modello. Il modello con training può quindi essere usato per stimare i valori per i nuovi esempi di input.

Altre informazioni sulle reti neurali

Una rete neurale è un set di livelli interconnessi. Gli input sono il primo livello e sono connessi a un livello di output da un grafo aciclico costituito da bordi e nodi ponderati.

Tra i livelli di input e output è possibile inserire più livelli nascosti. Con uno solo o più livelli nascosti, è possibile eseguire facilmente la maggior parte delle attività di stima. Tuttavia, ricerche recenti hanno dimostrato che le reti neurali profonde (DNN) con molti livelli possono essere molto efficaci in attività complesse come il riconoscimento di immagini o voce. I livelli successivi vengono usati per modellare livelli crescenti di profondità semantica.

La relazione tra input e output viene appresa dal training della rete neurale sui dati di input. La direzione del grafo procede dagli input al livello nascosto e al livello di output. Tutti i nodi in un livello sono connessi dai bordi ponderati ai nodi nel livello successivo.

Per calcolare l'output della rete per un input specifico, viene calcolato un valore in ogni nodo nei livelli nascosti e nel livello di output. Il valore viene impostato calcolando la somma ponderata dei valori dei nodi del livello precedente. Una funzione di attivazione viene quindi applicata a tale somma ponderata.

Come configurare la rete neurale multiclasse

  1. Aggiungere il modulo MultiClass Neural Network all'esperimento in Studio (versione classica). È possibile trovare questo modulo in Machine Learning, Inizializza, nella categoria Classificazione.

  2. Crea modalità trainer: usare questa opzione per specificare come si vuole eseguire il training del modello:

    • Parametro singolo: scegliere questa opzione se si sa già come si vuole configurare il modello.

    • Intervallo di parametri: scegliere questa opzione se non si è certi dei parametri migliori e si vuole usare uno sweep di parametri. Specificare quindi un intervallo di valori e usare il modulo Tune Model Hyperparameters per scorrere le combinazioni e trovare la configurazione ottimale.

  3. Specifica del livello nascosto: selezionare il tipo di architettura di rete da creare.

    • Caso completamente connesso: selezionare questa opzione per creare un modello usando l'architettura di rete neurale predefinita. Per i modelli di rete neurale multiclasse, le impostazioni predefinite sono le seguenti:

      • Un livello nascosto
      • Il livello di output è completamente connesso al livello nascosto.
      • Il livello nascosto è completamente connesso al livello di input.
      • Il numero di nodi nel livello di input è determinato dal numero di funzioni nei dati di training.
      • Il numero di nodi nel livello nascosto può essere impostato dall'utente. Il valore predefinito è 100.
      • Il numero di nodi nel livello di output dipende dal numero di classi.
    • Script di definizione personalizzato. Scegliere questa opzione per creare un'architettura di rete neurale personalizzata usando il linguaggio Net#. È possibile definire il numero di livelli nascosti, le relative connessioni e le opzioni avanzate, ad esempio specificando i mapping tra i livelli. Per un'introduzione a Net#, vedere Altre informazioni su Net# più avanti in questo argomento.

  4. Definizione di rete neurale: se è stata selezionata l'opzione architettura personalizzata, usare la casella di testo per digitare o incollare istruzioni scritte nel linguaggio Net#. Per altri esempi di script, vedere Guida al linguaggio di specifica delle reti neurali di Net#.

  5. Numero di nodi nascosti: questa opzione consente di personalizzare il numero di nodi nascosti nell'architettura predefinita. Digitare il numero di nodi nascosti. Il valore predefinito è un livello nascosto con 100 nodi.

  6. Frequenza di apprendimento: definire le dimensioni del passaggio effettuato a ogni iterazione, prima della correzione. Un valore maggiore per la frequenza di apprendimento può causare la convergenza del modello più velocemente, ma può overshoot local minima.

  7. Numero di iterazioni di apprendimento: specificare il numero massimo di volte in cui l'algoritmo deve elaborare i case di training.

  8. Diametro dei pesi di apprendimento iniziale: specificare i pesi dei nodi all'inizio del processo di apprendimento.

  9. Lo stato di avanzamento: specificare un peso da applicare durante l'apprendimento ai nodi delle iterazioni precedenti.

  10. Tipo di normalizzatore: selezionare il metodo da usare per la normalizzazione delle funzionalità. Sono supportati i metodi di normalizzazione seguenti:

    • Normalizzatore di binning: il normalizzatore di binning crea bin di dimensioni uguali e quindi normalizza ogni valore in ogni contenitore, dividendo per il numero totale di bin.

    • Normalizzatore gaussiano: il normalizzatore gaussiano ridimensiona i valori di ogni funzionalità con media 0 e varianza 1. Questa operazione viene eseguita calcolando la media e la varianza di ogni funzionalità. Per ogni istanza, il valore medio viene sottratto e il risultato viene diviso per la radice quadrata della varianza (deviazione standard).

    • Normalizzatore min-max: il normalizzatore min-max ridimensiona in modo lineare ogni funzionalità in base all'intervallo [0,1].

      Questa operazione viene eseguita scalando i valori di ogni funzione in modo che il valore minimo sia 0 e dividendo per il nuovo valore massimo, che è la differenza tra i valori massimo e minimo originali.

    • Non normalizzare: non viene eseguita alcuna normalizzazione.

  11. Esempi casuali: selezionare questa opzione per eseguire la riproduzione casuale dei case tra le iterazioni.

    Se si deseleziona questa opzione, i case vengono elaborati esattamente nello stesso ordine ogni volta che si esegue l'esperimento.

  12. Valore di serie di numeri casuali: digitare un valore da usare come valore di seed, se si vuole garantire la ripetibilità tra le esecuzioni dello stesso esperimento.

  13. Consenti livelli di categoria sconosciuti: selezionare questa opzione per creare un raggruppamento per i valori sconosciuti nei set di training e convalida. Il modello potrebbe essere meno preciso sui valori noti, ma fornire stime migliori per i nuovi valori (sconosciuti).

    Se si deseleziona questa opzione, il modello può accettare solo i valori contenuti nei dati di training.

  14. Connessione set di dati di training e uno dei moduli di training:

    Nota

    Se si passa un intervallo di parametri a Train Model, viene utilizzato solo il primo valore nell'elenco di intervalli di parametri.

    Se si passa un singolo set di valori di parametro al modulo Tune Model Hyperparameters ,quando prevede un intervallo di impostazioni per ogni parametro, ignora i valori e usa i valori predefiniti per lo learner.

    Se si seleziona l'opzione Intervallo parametri e si immette un singolo valore per qualsiasi parametro, il singolo valore specificato viene usato in tutta la sweep, anche se altri parametri cambiano in un intervallo di valori.

Risultati

Al termine del training:

  • Per visualizzare un riepilogo dei parametri del modello, insieme ai pesi delle funzionalità appresi dal training e ad altri parametri della rete neurale, fare clic con il pulsante destro del mouse sull'output di Train Model (Train Model ) o Tune Model Hyperparameters (Ottimizza iperparamezzi modello) e selezionare Visualize (Visualizza).

  • Per salvare uno snapshot del modello con training, fare clic con il pulsante destro del mouse sull'output del modello con training e scegliere Salva come modello con training. Questo modello non viene aggiornato nelle esecuzioni successive dello stesso esperimento.

  • Per eseguire la convalida incrociata su un set di dati con etichetta, connettere il modello senza training al modello con convalida incrociata.

Esempio

Per esempi di come viene usato questo algoritmo di apprendimento, vedere questi esperimenti di esempio nel Azure AI Gallery. Gli esperimenti sono correlati e descritti in un unico documento, che analizza le configurazioni di base fino a quelle avanzate:

Note tecniche

Questa sezione contiene informazioni dettagliate sull'implementazione, suggerimenti e risposte alle domande frequenti.

Personalizzazione della rete neurale tramite script

In Machine Learning Studio (versione classica) è possibile personalizzare l'architettura di un modello di rete neurale usando il linguaggio Net#. Le personalizzazioni supportate dal linguaggio Net# includono:

  • Specifica del numero di livelli nascosti e del numero di nodi in ogni livello
  • Specifica dei mapping tra i livelli
  • Definizione di convoluzioni e aggregazioni di condivisione del peso
  • Scelta della funzione di attivazione

Un modello di rete neurale è definito dalla struttura del relativo grafo, che include gli attributi seguenti:

  • Numero di livelli nascosti
  • Numero di nodi in ogni livello nascosto
  • Modalità di connessione dei livelli
  • Funzione di attivazione usata
  • Pesi sui vertici del grafo

Importante

La struttura complessiva del grafo, nonché la funzione di attivazione, può essere specificata dall'utente. Tuttavia, i pesi sui bordi non possono essere specificati e devono essere appresi durante il training della rete neurale sui dati di input.

In generale, la rete ha le impostazioni predefinite seguenti:

  • Il primo livello è sempre costituito dal livello di input.
  • L'ultimo livello è sempre costituito dal livello di output.
  • Il numero di nodi nel livello di output deve corrispondere al numero di classi.

È possibile definire un numero qualsiasi di livelli intermedi, denominati talvolta livelli nascosti, perché sono contenuti nel modello e non vengono esposti direttamente come endpoint.

La guida di riferimento di Net# illustra la sintassi e fornisce le definizioni di rete di esempio. in cui viene spiegato come usare Net# per aggiungere livelli nascosti e definire le modalità di interazione tra i vari livelli.

Ad esempio, lo script auto seguente usa la parola chiave , che imposta automaticamente il numero di funzionalità per i livelli di input e output e usa i valori predefiniti per il livello nascosto.

input Data auto;  
hidden Hidden auto from Data all;  
output Result auto from Hidden all;   

Per altri esempi di script, vedere Guida al linguaggio di specifica delle reti neurali di Net#.

Suggerimento

Le reti neurali possono essere costose dal punto di vista del calcolo, a causa di una serie di iperparamersi e dell'introduzione di topologie di rete personalizzate. In molti casi, tuttavia, le reti neurali producono risultati migliori rispetto ad altri algoritmi e la possibilità di ottenere questi risultati può comportare una notevole quantità di sweep (iterazioni) sugli iperparametri.

Parametri del modulo

Nome Intervallo Type Predefinito Descrizione
Hidden layer specification Elenco Topologia di rete neurale Fully-connected case Specifica l'architettura del livello o dei livelli nascosti
The initial learning weights diameter >=double.Epsilon Float 0,1 Specifica i pesi dei nodi all'inizio del processo di apprendimento
The learning rate [double.Epsilon;1.0] Float 0,1 Specifica le dimensioni di ogni passaggio nel processo di apprendimento
The momentum [0,0;1,0] Float 0,0 Specifica un peso da applicare ai nodi dalle iterazioni precedenti durante l'apprendimento
Neural network definition Qualsiasi StreamReader Quando si seleziona Custom definition script, digitare un'espressione di script valida in ogni riga per definire i livelli, i nodi e il comportamento di una rete neurale personalizzata
The type of normalizer Elenco Metodo di normalizzazione Minimum-maximum normalizer Specifica il tipo di normalizzazione da applicare agli esempi di apprendimento
Number of learning iterations >=1 Integer 100 Specifica il numero di iterazioni durante l'apprendimento
Shuffle examples Qualsiasi Boolean True Selezionare questa opzione per cambiare l'ordine delle istanze tra le iterazioni di apprendimento
Random number seed Qualsiasi Integer Specifica un valore di inizializzazione numerico da usare per la generazione di numeri casuale. Lasciare vuoto per usare il valore di inizializzazione predefinito.
Allow unknown categorical levels Qualsiasi Boolean True Indica se è necessario creare un livello aggiuntivo per le categorie sconosciute. Se il set di dati di test contiene categorie non presenti nel set di dati di apprendimento, queste vengono mappate a questo livello sconosciuto.

Output

Nome Tipo Descrizione
Untrained model ILearner interface Modello di classificazione multiclasse senza training

Vedi anche

Classificazione
Rete neurale a due classi
Neural Network Regression (Regressione rete neurale)
Elenco moduli A-Z