Regressione rete neurale
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).
- Vedere leinformazioni sullo spostamento di progetti di Machine Learning da ML Studio (versione classica) ad Azure Machine Learning.
- Altre informazioni sulle Azure Machine Learning.
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 regressione usando un algoritmo di rete neurale
Categoria: Machine Learning/Inizializza modello/Regressione
Nota
Si applica a: Machine Learning Studio (versione classica)
Nella finestra di progettazione sono disponibili moduli simili Azure Machine Learning trascinamento della selezione.
Panoramica del modulo
Questo articolo descrive come usare il modulo Neural Network Regression (Regressione rete neurale) in Machine Learning Studio (versione classica) per creare un modello di regressione usando un algoritmo di rete neurale personalizzabile.
Anche se le reti neurali sono ampiamente note per l'uso di problemi complessi di formazione e modellazione, ad esempio riconoscimento di immagini, sono facilmente soggetti a problemi di regressione. Qualsiasi classe di modelli statistici può definirsi rete neurale se usa pesi adattivi e può definire in maniera approssimativa funzioni non lineari dei relativi input. Pertanto la regressione della rete neurale è adatta a problemi in cui un modello di regressione più tradizionale non può contenere una soluzione.
La regressione della rete neurale è un metodo di apprendimento supervisionato e pertanto richiede un set di dati con tag, che include una colonna etichetta. Poiché un modello di regressione effettua stime su un valore numerico, la colonna di etichetta deve essere un tipo di dati numerico.
È possibile eseguire il training del modello fornendo il modello e il set di dati con tag come input per eseguire il training del modello o ottimizzare gli iperparametre del modello. Il modello con training può quindi essere usato per stimare i valori per i nuovi esempi di input.
Come configurare la regressione della rete neurale
Le reti neurali possono essere ampiamente personalizzate. Questa sezione descrive come creare un modello usando due metodi:
Creare un modello di rete neurale usando l'architettura predefinita
Se si accetta l'architettura di rete neurale predefinita, usare il riquadro Proprietà per impostare i parametri che controllano il comportamento della rete neurale, ad esempio il numero di nodi nel livello nascosto, la velocità di apprendimento e la normalizzazione.
Iniziare da qui se non si ha di nuovo una rete neurale. Il modulo supporta molte personalizzazioni, nonché l'ottimizzazione del modello, senza una conoscenza approfondita delle reti neurali.
Definire un'architettura personalizzata per una rete neurale
Usare questa opzione se si vogliono aggiungere livelli nascosti aggiuntivi o personalizzare completamente l'architettura di rete, le connessioni e le funzioni di attivazione.
Questa opzione è ottimale se si ha già familiarità con le reti neurali. Usare il linguaggio Net# per definire l'architettura di rete.
Creare un modello di rete neurale usando l'architettura predefinita
Aggiungere il modulo Neural Network Regression (Regressione rete neurale) all'esperimento in Studio (versione classica). È possibile trovare questo modulo in Machine Learning, Inizializza, nella categoria Regressione.
Indicare come si vuole eseguire il training del modello impostando l'opzione Create trainer mode (Crea modalità di training ).
Parametro singolo: scegliere questa opzione se si conosce già la modalità di configurazione del modello.
Intervallo di parametri: scegliere questa opzione se non si è certi dei parametri migliori. Specificare quindi un intervallo di valori e usare il modulo Tune Model Hyperparameters per scorrere le combinazioni e trovare la configurazione ottimale.
In Specifica livello nascosto selezionare Caso completamente connesso. Questa opzione crea un modello usando l'architettura di rete neurale predefinita, che per un modello di regressione di rete neurale ha questi attributi:
- La rete ha esattamente un livello nascosto.
- Il livello di output è completamente connesso al livello nascosto e il livello nascosto è completamente connesso al livello di input.
- Il numero di nodi nel livello nascosto può essere impostato dall'utente (il valore predefinito è 100).
Poiché il numero di nodi nel livello di input è determinato dal numero di funzioni nei dati di training, in un modello di regressione può essere presente un solo nodo nel livello di output.
In Numero di nodi nascosti digitare il numero di nodi nascosti. Il valore predefinito è un livello nascosto con 100 nodi. Questa opzione non è disponibile se si definisce un'architettura personalizzata con Net#.
Per Learning, digitare un valore che definisce il passaggio effettuato a ogni iterazione, prima della correzione. Un valore superiore per la velocità di apprendimento può provocare una convergenza più rapida del modello, ma può eccedere i valori minimi locali.
Per Number of learning iterations (Numero di iterazioni di apprendimento) specificare il numero massimo di volte in cui l'algoritmo elabora i case di training.
Per Diametro dei pesi di apprendimento iniziale digitare un valore che determina i pesi dei nodi all'inizio del processo di apprendimento.
Per The a corso digitare un valore da applicare durante l'apprendimento come peso sui nodi delle iterazioni precedenti.
Per Il tipo di normalizzatore scegliere uno dei metodi seguenti da usare per la normalizzazione delle funzionalità:
Normalizzatore binning: Binning crea gruppi di dimensioni uguali e quindi normalizza ogni valore in ogni gruppo in modo che sia diviso per il numero totale di gruppi.
Normalizzatore gaussiano: la normalizzazione gaussiana ridimensiona i valori di ogni funzionalità in modo che abbia media 0 e varianza 1. Questa operazione viene eseguita calcolando la media e la varianza di ogni caratteristica e quindi, per ogni istanza, sottraendo il valore medio e dividendo per la radice quadrata della varianza (deviazione standard).
Normalizzatore min-max: la normalizzazione 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.
Selezionare l'opzione Shuffle examples (Esempi casuali) per modificare l'ordine 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.
Per Valore di seed casuale, è possibile digitare facoltativamente un valore da usare come valore di seed. La definizione di un valore di seme è utile quando si vuole assicurare la ripetibilità nelle esecuzioni dello stesso esperimento.
Selezionare l'opzione Consenti livelli di categoria sconosciuti per creare un raggruppamento per valori sconosciuti. 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.
Connessione un datset di training e uno dei moduli di training:
Se si imposta Create trainer mode (Crea modalità di training) su Single Parameter (Parametro singolo), usare Train Model (Training modello).
Se si imposta Create trainer mode (Crea modalità di trainer) su Parameter Range (Intervallo parametri), usare Tune Model Hyperparameters (Ottimizza iperparametre modello).
Avviso
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 si prevede un intervallo di impostazioni per ogni parametro, vengono ignorati i valori e vengono utilizzati i valori predefiniti per lo learner.
Se si seleziona l'opzione Intervallo di parametri e si immette un singolo valore per qualsiasi parametro, il singolo valore specificato viene usato durante l'intera transazione, anche se altri parametri cambiano in un intervallo di valori.
Eseguire l'esperimento.
Definire un'architettura personalizzata
Aggiungere il modulo Neural Network Regression (Regressione rete neurale ) all'esperimento.
Indicare come si vuole eseguire il training del modello impostando l'opzione Create trainer mode (Crea modalità di training ).
Parametro singolo: scegliere questa opzione se si conosce già la modalità di configurazione del modello.
Intervallo di parametri: scegliere questa opzione se non si è certi dei parametri migliori. Specificare quindi un intervallo di valori e usare il modulo Tune Model Hyperparameters per scorrere le combinazioni e trovare la configurazione ottimale.
In Specifica livello nascosto selezionare Script di definizione personalizzato. È necessario scegliere questa opzione se si vuole definire un'architettura di rete neurale personalizzata usando il linguaggio Net #.
Dopo aver selezionato l'opzione Script di definizione personalizzato, viene visualizzata la casella di testo Definizione rete neurale. È possibile incollare nello script Net# per definire un'architettura personalizzata per la rete neurale, inclusi il numero di livelli nascosti, le relative connessioni e le opzioni avanzate, ad esempio la specifica dei mapping tra i livelli.
Per Learning, digitare un valore che definisce il passaggio effettuato a ogni iterazione, prima della correzione. Un valore superiore per la velocità di apprendimento può provocare una convergenza più rapida del modello, ma può eccedere i valori minimi locali.
Per Number of learning iterations (Numero di iterazioni di apprendimento) specificare il numero massimo di volte in cui l'algoritmo elabora i case di training.
Per Diametro dei pesi di apprendimento iniziale digitare un valore che determina i pesi dei nodi all'inizio del processo di apprendimento.
Per The a corso digitare un valore da applicare durante l'apprendimento come peso sui nodi delle iterazioni precedenti.
Per Il tipo di normalizzatore scegliere uno dei metodi seguenti da usare per la normalizzazione delle funzionalità:
Normalizzatore binning: Binning crea gruppi di dimensioni uguali e quindi normalizza ogni valore in ogni gruppo, dividendo per il numero totale di gruppi.
Normalizzatore gaussiano: la normalizzazione gaussiana ridimensiona i valori di ogni funzionalità in modo che abbia media 0 e varianza 1. Questa operazione viene eseguita calcolando la media e la varianza di ogni caratteristica e quindi, per ogni istanza, sottraendo il valore medio e dividendo per la radice quadrata della varianza (deviazione standard).
Min-Max: la normalizzazione 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.
Selezionare l'opzione Shuffle examples (Esempi casuali) per modificare l'ordine 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.
Per Valore di seed casuale, è possibile digitare facoltativamente un valore da usare come valore di seed. La definizione di un valore di seme è utile quando si vuole assicurare la ripetibilità nelle esecuzioni dello stesso esperimento.
Selezionare l'opzione Consenti livelli di categoria sconosciuti per creare un raggruppamento per valori sconosciuti. Tutti i valori sconosciuti nel set di dati di test vengono mappati a questa categoria sconosciuta. L'uso di questa opzione potrebbe rendere il modello leggermente meno preciso sui valori noti, ma fornire stime migliori per i nuovi valori (sconosciuti).
Se si deseleziona questa opzione, il modello può eseguire stime solo per i valori contenuti nei dati di training.
Connessione un datset di training e uno dei moduli di training:
Se si imposta Create trainer mode (Crea modalità di training) su Single Parameter (Parametro singolo), usare Train Model (Training modello).
Se si imposta Create trainer mode (Crea modalità di trainer) su Parameter Range (Intervallo parametri), usare Tune Model Hyperparameters (Ottimizza iperparametre modello).
Avviso
Se si passa un intervallo di parametri a Train Model, verrà 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 si prevede un intervallo di impostazioni per ogni parametro, vengono ignorati i valori e vengono utilizzati i valori predefiniti per lo strumento di apprendimento.
Se si seleziona l'opzione Intervallo di parametri e si immette un singolo valore per qualsiasi parametro, il singolo valore specificato verrà usato durante l'intera transazione, anche se altri parametri cambiano in un intervallo di valori.
Eseguire l'esperimento.
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 (Training modello) o Tune Model Hyperparameters (Ottimizza iperparametramenti 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 di convalida incrociata.
Esempio
Per esempi di come questo algoritmo viene usato negli esperimenti, vedere questi esempi nella Azure AI Gallery:
- Confrontare più regressori: illustra l'uso di diversi algoritmi di regressione e ne confronta i risultati.
Gli esperimenti offrono altre informazioni su Net#. Gli esperimenti sono correlati e avanzano dalle configurazioni di base alle configurazioni avanzate:
- Esempio di reti neurali basate su machine deep learning (parte A)
- Esempio di reti neurali basate su machine deep learning (parte B)
- Esempio di reti neurali basate su machine deep learning (parte C)
- Esempio di reti neurali basate su machine deep learning (parte D)
Note tecniche
Questa sezione contiene informazioni dettagliate sull'implementazione, suggerimenti e risposte alle domande frequenti.
Altre informazioni su Net #
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 di mapping tra 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 grafico, nonché la funzione di attivazione, possono essere specificate 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 (talvolta denominati livelli nascosti perché sono contenuti all'interno del modello e non sono direttamente esposti 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 seguente auto
usa la parola chiave , che imposta automaticamente il numero di funzioni 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 net# neural networks specification language.
Suggerimento
Le reti neurali possono essere costose dal punto di vista del calcolo, a causa di una serie di iperparameboli 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 |
Velocità di apprendimento | [double.Epsilon;0,01] | Float | 0.005 | 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 | Min-Max normalizer | Specifica il tipo di normalizzazione da applicare agli esempi di apprendimento |
Numero di nodi nascosti | Qualsiasi | string | 100 | Digitare il numero di nodi nel livello nascosto. Per più livelli nascosti, digitare un elenco delimitato da virgole. |
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. Questo parametro è facoltativo |
|
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 regressione senza training |