Articolo: Previsione dei prezzi con reti neurali - pagina 14

 
Neutron, l'effetto lisciante dell'aumento del numero di ingressi è legittimo. Ma il ritardo può essere determinato da molti fattori, sia la mancanza di questi input che le possibili imperfezioni della rete, forse l'undertraining. È un'altra questione se questo, con tutti i "+" ai criteri di cui sopra, dà un ritardo.
 
Neutron:

Questo mostra i risultati del test della capacità predittiva dei due NS.


La figura mostra in rosso la serie temporale originale (RT), in blu la previsione 1 barra prima della rete lineare a singolo strato, e in verde la rete non lineare a doppio strato. La profondità di immersione è la stessa in entrambi i casi. Si può vedere che per questo caso artificiale c'è un marcato residuo dei dati predetti sul grafico della tendenza BP. Mi chiedo se i miei colleghi esperti osservano questo effetto, e se sì, a cosa potrebbe essere collegato?

La tua rete si sta comportando in qualche modo in modo strano - sta ricevendo lo stesso set di dati di input nella sezione di tendenza e sta ottenendo previsioni diverse (sta ottenendo una linea spezzata sul grafico mentre dovrebbe essere dritta). A questo proposito, le domande sono:

1) quanti neuroni ci sono negli strati intermedi della rete?

2) quanti ingressi?

3) cosa viene alimentato agli ingressi?


Per quanto riguarda il ritardo nelle previsioni sulla tendenza. È così che dovrebbe funzionare. Hai alimentato circa 30 vettori di addestramento nella rete, dove valori consecutivi crescenti di 0,1 generavano un aumento di 0,1, e hai alimentato 1 vettore dove gli stessi valori consecutivi crescenti generavano una caduta di 3. Hai addestrato la rete su dati incoerenti. Quindi ha fatto la media di quelle 31 previsioni contraddittorie del tuo...


Ho anche costruito un NS a 2 strati. Con 3 ingressi e 3 neuroni intermedi. L'input è stato alimentato con valori incrementali. Per confrontare, ho addestrato questa rete una volta su tutti i dati, e la seconda volta ho escluso gli outlier dall'addestramento - cioè tutti i vettori di addestramento che contenevano valori troppo grandi negli input, cioè che crollano molto bruscamente di 3. La differenza è evidente:

 
rip:
slava1:
Beh, si può discutere a lungo su chi capisce o non capisce quello che capisce. La conversazione riguardava la preparazione dei dati. Capisco che nessuno voglia discutere di questo argomento qui. Pietà

Se vuoi dare una lezione su come preparare i dati per l'addestramento NS, non credo che dovrebbe essere fatto su questo forum, non molte persone sarebbero interessate qui.

Beh, ti sbagli! Penso che sarebbe interessante leggere l'esperienza dei praticanti, come lo fanno

 
ds2:

La tua rete si comporta stranamente - riceve lo stesso set di dati di input sulla sezione di tendenza, ma dà previsioni diverse (appare come una linea spezzata sul grafico, mentre dovrebbe essere dritta). A questo proposito, le domande sono:

1) quanti neuroni ci sono negli strati intermedi della rete?

2) quanti ingressi?

3) cosa viene alimentato agli ingressi?


Per quanto riguarda il ritardo nelle previsioni sulla tendenza. È così che dovrebbe funzionare. Hai alimentato circa 30 vettori di addestramento nella rete, dove valori consecutivi crescenti di 0,1 generavano un aumento di 0,1, e hai alimentato 1 vettore dove gli stessi valori consecutivi crescenti generavano una caduta di 3. Hai addestrato la rete su dati incoerenti. Quindi ha fatto la media di quelle 31 previsioni contraddittorie del tuo...


Ho anche costruito un NS a 2 strati. Con 3 ingressi e 3 neuroni intermedi. L'input è stato alimentato con valori incrementali. Per confrontare, ho allenato questa rete una volta su tutti i dati, e la seconda volta ho escluso gli outlier dall'allenamento - cioè tutti i vettori di allenamento che contengono valori troppo grandi negli input, cioè che crollano molto bruscamente di 3. La differenza è evidente:

ds2, e tutti quelli che hanno risposto, vi ringrazio molto per la vostra attenzione e i vostri consigli sensati - mi hanno davvero aiutato. Il fatto è che ho limitato il numero di cicli di allenamento (credo si chiami Epoche) a 100 volte per accelerare la previsione nella mia rete. Naturalmente, questo non era sufficiente, quindi la rete non stava imparando correttamente. Dopo aver aumentato il numero di epoche a 1000, tutto ha funzionato bene - da tick a tick (beh, quasi).

Ho una rete a due strati con non linearità in forma di tangente iperbolica, con il numero di neuroni in uno strato nascosto 2 e il numero di sinapsi d*2+2, dove d è una dimensione dell'input NS. Ho d=2, per il caso mostrato in fig. e il numero di vettori di allenamento è 6. Il numero di vettori nel campione di allenamento è uguale al numero di sinapsi, quindi vedo che la rete non si riaddestra e non cerca di smussare la previsione, il che mi permette di tracciare i salti di prezzo in modo più efficace. Per l'addestramento ho anche alimentato una sequenza di valori incrementali come input. Non ho ancora familiarità con la fine arte della preparazione dei dati di input (intendo il tuo "escluso i picchi dall'allenamento per la seconda volta") ma spero di padroneggiare quest'arte molto presto.

Ecco un risultato pre-interessante:


Si tratta di una predizione di un passo avanti con riallenamento ad ogni passo di un NS non lineare a singolo strato con UN solo ingresso e campione di allenamento = 2 vettori con un elemento in ciascuno.

Sono sbalordito....

Si scopre che Neron Networks e l'intelligenza artificiale non sono semplici, ma molto semplici!

 
Neutron:
ds2:

La tua rete si comporta stranamente - riceve lo stesso set di dati di input sulla sezione di tendenza, ma dà previsioni diverse (appare come una linea spezzata sul grafico, mentre dovrebbe essere dritta). A questo proposito, le domande sono:

1) quanti neuroni ci sono negli strati intermedi della rete?

2) quanti ingressi?

3) cosa viene alimentato agli ingressi?


Per quanto riguarda il ritardo nelle previsioni sulla tendenza. È così che dovrebbe funzionare. Hai alimentato circa 30 vettori di addestramento nella rete, dove valori consecutivi crescenti di 0,1 generavano un aumento di 0,1, e hai alimentato 1 vettore dove gli stessi valori consecutivi crescenti generavano una caduta di 3. Hai addestrato la rete su dati incoerenti. Quindi ha fatto la media di quelle 31 previsioni contraddittorie del tuo...


Ho anche costruito un NS a 2 strati. Con 3 ingressi e 3 neuroni intermedi. L'input è stato alimentato con valori incrementali. Per confrontare, ho allenato questa rete una volta su tutti i dati, e la seconda volta ho escluso gli outlier dall'allenamento - cioè tutti i vettori di allenamento che contengono valori troppo grandi negli input, cioè che crollano molto bruscamente di 3. La differenza è evidente:

ds2, e tutti quelli che hanno risposto, vi ringrazio molto per la vostra attenzione e i vostri consigli sensati - mi hanno davvero aiutato. Il fatto è che ho limitato il numero di cicli di allenamento (credo si chiami Epoche) a 100 volte per accelerare la previsione nella mia rete. Naturalmente, questo non era sufficiente, quindi la rete non stava imparando correttamente. Dopo aver aumentato il numero di epoche a 1000, tutto ha funzionato bene - da tick a tick (beh, quasi).

Ho una rete a due strati con non linearità in forma di tangente iperbolica, con il numero di neuroni in uno strato nascosto 2 e il numero di sinapsi d*2+2, dove d è una dimensione dell'input NS. Ho d=2, per il caso mostrato in fig. e il numero di vettori di allenamento è 6. Il numero di vettori nel campione di allenamento è uguale al numero di sinapsi, quindi vedo che la rete non si riaddestra e non cerca di smussare la previsione, il che permette di seguire più efficacemente i salti di prezzo. Per l'addestramento ho anche alimentato una sequenza di valori incrementali come input. Sono ancora lontano dalla fine arte della preparazione dei dati di input (intendo il tuo "escluso i picchi dall'allenamento per la seconda volta"), ma spero di imparare presto il trucco.

Per migliorare il campione, provate ad allargare la serie di allenamento, diciamo, con questo principio:

ci sono due valori adiacenti della serie - x1,x2 nell'intervallo che sommano x1,2 = (x1+x2)/2


Questo metodo funziona bene per le serie temporali con alta correlazione dei valori vicini.

Il caso di un flusso di citazioni è proprio questo.

 
Neutron:


Ecco un risultato pre-interessante:


Si tratta di una predizione a un passo in avanti con riqualificazione a ogni passo di un NS non lineare a un solo strato con UN solo ingresso e un campione di formazione = 2 vettori con un elemento in ciascuno.

Sono sbalordito...


Posso chiederti di postare il file di dati grezzi da cui sono stati generati i vettori di allenamento?

 

Come dovrebbe essere il formato del file per poterlo leggere. Il punto è che io scrivo i miei NS da zero e uso i dati in un formato con cui mi sento a mio agio.


Для улучшения выборки попробуйте расширить обучающий ряд, скажем по такому принципу:

Ci sono due valori adiacenti di una serie - x1,x2 tra di loro aggiungere x1,2 = (x1+x2)/2

Questo metodo funziona bene su serie temporali, con alta correlazione di valori adiacenti.

Il caso delle citazioni in streaming è proprio questo.

Questo caso è adatto a serie positivamente correlate. Il prezzo VR ha una significativa correlazione negativa tra campioni vicini, quindi questo metodo non sarà corretto.

Un'altra cosa. Sarebbe bene che gli stimati utenti del forum postassero argomenti fondati a favore di una maggiore capacità predittiva della NS a 2 strati rispetto a quella a strato singolo, a parità di altre condizioni.

Come opzione. Qui sotto potete trovare un archivio zip con un vettore di prova, che è mostrato in Fig. Tagliatelo voi stessi come meglio credete.

File:
rnd.zip  1 kb
 
Neutron:

Sono sbalordito...

Si scopre che Nero Networks e l'intelligenza artificiale non sono solo, ma molto semplici!


Non ho ancora provato ad applicare praticamente NS (anche se mi sembra di essere portato lì nel contesto dell'ultima idea), ma da una prospettiva umana il vettore di prova consiste di dipendenze molto semplici (circa due o tre parametri) e dovrebbe essere molto facilmente approssimato in modo parziale. Ho il sospetto che sia esattamente quello che fa NS. La riorganizzazione veloce può essere una conseguenza della semplicità di NS, cioè in questo caso la memoria breve è la felicità.

 

In generale, Candido, sono d'accordo con te, ma voglio scavare più a fondo... Per esempio, come è giustificata la complicazione di NS (strati nascosti).

In realtà, sono pazzo! Il punto è che se si rappresenta la non linearità di NS in una certa forma, si può ottenere la soluzione analitica esatta per i pesi. Questo, a sua volta, significa che sarà possibile rifiutare il metodo della Propagazione Inversa degli Errori per l'addestramento della rete e ottenere il risultato più preciso possibile in una sola azione, senza 1000 Epoche di addestramento!!!


P.S. Ho dimenticato di avvertirvi che uso una sinapsi con un livello di eccitazione costante in ogni neurone.


Addendum.

L'ha portato, l'ha portato e l'ha portato ;-)

Questa è la soluzione analitica "FINE" per le scale di un NS non lineare a singolo strato:

Mi ha fatto sorridere.

Ma l'intero calcolo richiede un millisecondo.
 

Spiegami questo come "neuroscienziato" alle prime armi... Ho capito che la rete in questione è un perceptron multistrato.

Qual è la ragione della scelta di questo tipo di rete, perché non Hopfield o Kohonen o qualcos'altro?