Galateo del mercato o buone maniere in un campo minato - pagina 31

 
paralocus писал(а) >>

Ciao Neurton! Comunque, ancora nessuna fortuna con il doppio strato.

Ho scritto un perceptron a singolo strato con ORO e l'ho eseguito tutto il giorno ieri. Si comporta in modo strano. Impara e non impara, ed è catastroficamente dipendente dal numero di epoche.

Quindi i miei risultati sono i seguenti: 8 epoche - la griglia non impara, 12 epoche - la griglia impara, 13 epoche - la griglia non impara.

In breve, i risultati si vantano che non posso ancora.

In ogni caso, descriverò un algoritmo che ho implementato. Vediamo se mi è sfuggito qualcosa.

1. Il perceptron ha D ingressi binari, uno dei quali è una costante +1.

2. Il BP usato è incrementi sequenziali di cotier su un certo numero di Open.

3. Tutti i pesi sono inizializzati con piccoli valori casuali dall'intervallo +/-1 prima di iniziare.

4. La lunghezza del vettore di allenamento è calcolata come P = 4 * D*D/D = 4*D.

5. Il vettore di addestramento è alimentato all'ingresso della griglia e l'errore della griglia è calcolato come Qs = Test - OUT, dove Test è il valore di BP a n+1, cioè il prossimo, readout, OUT è l'uscita della griglia a n readout.

6. Per ottenere il valore dell'errore agli ingressi Qs, l'errore della griglia Qs viene moltiplicato per la derivata della funzione di compressione (1 - OUT+OUT): Q = Qs *(1 - OUT*OUT).

7. Il vettore di correzione per ogni peso che entra in un neurone COR[i] += Q*D[i] è calcolato e accumulato durante l'epoca.

8. SQR[i] += COR[i]*COR[i] è calcolato separatamente e accumulato durante l'intera epoca per ogni peso, incluso nel neurone.

9. Alla fine di un'epoca, per ogni peso viene calcolata la correzione personale e aggiunta a quel peso W[i] += COR[i]/SQR[i]

Ho provato a usare un coefficiente di (1 - j/N), così come a randomizzare i pesi i cui valori assoluti sono cresciuti oltre 20. La randomizzazione aiuta meglio.

P.S ha corretto un errore nel testo.

paralocus, attacca la tua ragazza all'ingresso Questo:

Invece di aprire i prezzi. E pubblicare il risultato. Se non impara, allora l'errore è catastrofico e bisogna fare qualche ricerca seria.

P.S. Dividi per norma vettoriale o per quadrato? Dovrei farlo per norma, ma quello che hai scritto sembra la somma dei quadrati senza prendere la radice.

 

Grazie, lo sto provando.

Ecco i risultati per AUDUSD, H4, D = 13, 33 epoche. I test sono stati effettuati su una parte della storia dal 2009.01.08 al 2009.05.21

Ci sono alcuni punti in più (numero di epoche: 31, 25, 14, 10, 7) ottenuti con l'ottimizzatore, ma i risultati sono peggiori.





P.S. Esattamente! La radice è ... quadrata ... Ho dimenticato di toglierlo!

 
paralocus писал(а) >>

P.S. Esattamente! La radice è... quadrata... Ho dimenticato di toglierlo!

Proprio come in quella battuta di Chapaev! :-)

 
Neutron >> :

È come quella battuta di Chapaev! :-)

-:) ... Piangendo, ma affilando la sua sciabola...

 

No, Petya ha strappato tutti i cespugli del cortile - gli è stato chiesto di trovare la radice quadrata:-)

Ecco, guarda. Questo è un Ns-ca a doppio strato con due ingressi e 8 epoche di allenamento su ogni campione. Si tratta di 500 campioni in totale e la probabilità di predizione corretta è calcolata come media di 10 esperimenti indipendenti (per la significatività statistica dei risultati):

Il rosso mostra il risultato sul campione di allenamento, il blu sul campione di prova. Si può vedere che i risultati non sono molto diversi e questo è un bene, perché dimostra che la rete non è sovrallenata. Spesso l'errore è che selezioniamo un vettore di allenamento troppo corto (meno della lunghezza ottimale), e quasi il 100% degli impatti sul campione di allenamento. Allo stesso tempo, non guardano i risultati di previsione del campione che non ha partecipato al training! In questo caso, il risultato è di solito vicino allo zero. Questo è sovrallenamento, la griglia ha semplicemente imparato la lezione a memoria e non è in grado di comporsi. Poi si chiedono cosa li fa bocciare.

 

Urrà!!!

Il mio deposito ha appena superato 1K!

Neutron, le voci binarie per la griglia sono formate dalla tua formula del campione di prova?

 

Divido il BP costruito con questa formula in segmenti dello stesso incremento di prezzo H e prendo la prima differenza. Arrotondo gli incrementi a +/-1 e cerco di prevederli. Hn Fig. l'orizzonte di trading H è tracciato in pip sull'asse delle ascisse e la probabilità è tracciata sull'asse delle ordinate. Quindi, le voci sono binarie.

 

Ecco come l'ho capito. Per guardare questa formula con i miei occhi l'ho messa sul grafico come indicatore. Ho messo tutta questa roba nell'input della griglia, ma non riesco a capire come vedere i risultati.

Cioè, non posso farlo con un tester. Puoi solo stampare i pesi e vedere come è... vivo o no.

No, non è così. Non ho rotto la BP risultante in segmenti dello stesso incremento, ma ho preso incrementi consecutivi di BP sui conteggi D.

 
paralocus писал(а) >>

Ecco come l'ho capito. Per guardare questa formula con i miei occhi l'ho messa sul grafico come indicatore. Ho messo tutta questa roba nell'input della griglia, ma non riesco a capire come vedere i risultati.

Cioè, non posso farlo con un tester. Puoi solo stampare i pesi e vedere come è... vivo o no.

No, non è così. Non ho rotto la BP risultante in segmenti di incrementi uguali, ma ho preso incrementi consecutivi di BP sui conteggi D.

Che ne dite di visualizzare i pesi tramite Comment()?

 
FION >> :

I pesi possono essere visualizzati attraverso Comment()?

È possibile, ma non è conveniente, perché ogni chiamata successiva di Comment() "intaserà" i risultati dell'uscita precedente, poiché sarà eseguita utilizzando le stesse coordinate grafiche della precedente. Pertanto, Print() è meglio;