Vettore di input per la rete neurale artificiale?

3

Il mio problema è piuttosto complesso, quindi ecco un esempio simile e semplificato.

Supponiamo che volessi predire il Miles Per Gallon (consumo di carburante) di un'auto, sulla base delle seguenti informazioni: hai il peso del veicolo in sterline, il numero di cilindri nel motore e un numero che corrisponde a un tipo di veicolo (0 = cubo auto, 1 = auto standard, 2 = furgone, ecc. cetera), e la quantità di pioggia nell'ultima ora (in galloni).

Supponi di prendere tutte queste informazioni e di compilarle in un vettore a 4 dimensioni, [Weight, Cylinders, Vehicle Class, Rain] . Poiché la pioggia di 4 ore fa è ancora importante, diciamo che abbiamo preso più di questi vettori nelle ultime 5 ore e li abbiamo inseriti in una rete, quindi abbiamo qualcosa di simile a questo:

[Weight 5 hours ago, Cylinders 5 hours ago, Vehicle Class 5 hours ago, Rain 5 hours ago]
[Weight 4 hours ago, Cylinders 4 hours ago, Vehicle Class 4 hours ago, Rain 4 hours ago]
...
[Weight in past hour, Cylinders in past hour, Vehicle Class in past hour, Rain in past hour]

Inserimento, con conseguente "importo attuale della pioggia"

Domanda: come si formatterà questo problema per l'uso in Artificial Neural Network? Le reti possono prendere vettori come input? Sarebbe meglio assegnare ogni nodo a un singolo valore (quindi ogni vettore richiede 4 nodi, uno per ogni dimensione, risultante in 20 nodi per l'insieme)?

A causa del cambio di orario, ho considerato l'utilizzo di un HMM / MM, tuttavia, non sto trattando esclusivamente dati categoriali. Questo non è per una classe o altro, sto solo imparando per puro interesse ... Grazie!

    
posta Kyle 26.04.2016 - 00:34
fonte

1 risposta

0

Un approccio finestra scorrevole (NN è addestrato a usare l'ultimo k dei valori di una serie) è la strada da seguire per un avanzare rete neurale .

I valori di input ridondanti devono essere rimossi perché possono influire negativamente sulla capacità di apprendimento della rete neurale (un altro vantaggio nell'eliminazione delle variabili ridondanti è rappresentato dai tempi di addestramento più rapidi):

[Weight Cylinders VehicleClass Rain5 Rain4 Rain3 Rain2 Rain1]

è un primo cambiamento (si consideri che la "dimensione della finestra" ha un effetto importante sulla qualità di un sistema di previsione basato su una rete neurale, quindi dovresti controllare con un numero diverso di% input diRain[n]).

Inoltre, anziché utilizzare un numero per il tipo di veicolo (0 = auto cubo, 1 = auto standard, 2 = van ...) dovresti usare un 1-hot encoding :

                  <-- Vehicle Class -->
[Weight Cylinders (0.0 ... 1.0 ... 0.0) Rain5 Rain4 Rain3 Rain2 Rain1]    

Funzionerà molto meglio, anche se il tuo vettore di funzionalità diventerà molto più grande (e, a seconda di quanti dati hai, potresti subire un sovradattamento).

Reti neurali ricorrenti (controlla Variazione Long-Short Term Memory ) può tenere conto di molte istanze nei timestamp precedenti (valore rain) e non è necessario definire una finestra scorrevole.

    
risposta data 26.04.2016 - 13:54
fonte