Rete neurale a due classi
Crea un classificatore binario 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 Rete neurale a due classi in Machine Learning Studio (versione classica) per creare un modello di rete neurale che può essere usato per stimare una destinazione con solo due valori.
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. Ad esempio, è possibile usare questo modello di rete neurale per stimare i risultati binari, ad esempio se un paziente ha o meno una determinata malattia o se è probabile che una macchina non riesca entro un intervallo di tempo specificato.
Dopo aver definito il modello, eseguire il training fornendo un set di dati con tag e il modello 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 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 Two-Class neurale
Aggiungere il modulo Two-Class Neural Network all'esperimento in Studio (versione classica). È possibile trovare questo modulo in Machine Learning, Inizializza, nella categoria Classificazione.
Specificare la modalità di training del modello impostando l'opzione Crea modalità trainer .
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. Specificare quindi un intervallo di valori e usare il modulo Tune Model Hyperparameters per scorrere le combinazioni e trovare la configurazione ottimale.
Per Specifica livello nascosto selezionare il tipo di architettura di rete da creare.
Caso completamente connesso: usa l'architettura di rete neurale predefinita, definita per le reti neurali a due classi, come indicato di seguito:
Ha 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 di input è uguale al numero di funzionalità nei dati di training.
Il numero di nodi nel livello nascosto viene impostato dall'utente. Il valore predefinito è 100.
Il numero di nodi è uguale al numero di classi. Per una rete neurale a due classi, questo significa che tutti gli input devono essere mappati a uno dei due nodi nel livello di output.
Script di definizione personalizzata: scegliere questa opzione per creare un'architettura di rete neurale personalizzata usando il linguaggio Net #. Con questa opzione è possibile definire il numero di livelli nascosti, le relative connessioni e i mapping tra i livelli.
Dopo aver selezionato l'opzione script personalizzato, nella casella di testo Definizione rete neurale digitare o incollare istruzioni Net# che definiscono la rete. Per esempi, vedere Guida al linguaggio di specifica delle reti neurali di Net#.
Se non si usa l'opzione script , usare Numero di nodi nascosti e digitare il numero di nodi nascosti. Il valore predefinito è un livello nascosto con 100 nodi.
Per Learning, definire le dimensioni del 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 Numero di iterazioni di apprendimento specificare il numero massimo di volte in cui l'algoritmo deve elaborare i case di training.
Per Il diametro dei pesi di apprendimento iniziale, specificare i pesi dei nodi all'inizio del processo di apprendimento.
Per Il momento, specificare un peso da applicare durante l'apprendimento ai nodi dalle iterazioni precedenti
In Tipo di normalizzatore selezionare un 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.
Selezionare l'opzione Esempi casuali 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.
Per Valore di serie numero casuale digitare un valore da usare come valore di serie.
La definizione di un valore di seme è utile quando si vuole assicurare la ripetibilità nelle esecuzioni dello stesso esperimento. In caso contrario, viene usato un valore di clock di sistema come valore di seed, che può causare risultati leggermente diversi ogni volta che si esegue l'esperimento.
Selezionare l'opzione Consenti livelli di categoria sconosciuti per creare un raggruppamento per 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.
Aggiungere un set di dati con tag all'esperimento e connettere uno dei moduli di training.
Se si imposta Crea modalità di training su Parametro singolo, usare il modulo Train Model (Train Model ).
Se si imposta Crea modalità trainer su Intervallo parametri, usare il modulo Tune Model Hyperparameters (Ottimizza iperparamezionari modello).
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, tale singolo valore viene usato in tutta la sweep, 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 (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 l'Azure AI Gallery. Questi esperimenti sono correlati e descritti in un singolo documento che avanza da configurazioni di base a avanzate:
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 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 (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 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. Anche se in molti casi le reti neurali producono risultati migliori rispetto ad altri algoritmi, l'ottenimento di tali risultati può comportare un'equa quantità di sweep (iterazioni) su iperparamezzi.
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;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 | Min-Max normalizer | Specifica il tipo di normalizzazione da applicare agli esempi di apprendimento |
Number of learning iterations | >=1 | Integer | 100 | Specifica il numero di iterazioni eseguite 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 binaria senza training |
Vedi anche
Classificazione
Neural Network Regression (Regressione rete neurale)
Rete neurale multiclasse
Elenco moduli A-Z