Domanda sulla programmazione delle reti neurali - pagina 6

 
Vinin:


Ho fatto una normale griglia di 256 ingressi, uno strato nascosto per 256 neuroni. E uno strato di uscita di un neurone. E ho allenato tutto perfettamente in MT4

1. Con l'algoritmo del tester genetico o con l'algoritmo interno di apprendimento delle maglie?

 
Reshetov:
Dall'algoritmo genetico del tester o da un algoritmo interno di apprendimento delle maglie?

Tutto è stato fatto attraverso un copione. L'algoritmo interno
 
Anche se c'erano delle varianti con l'ottimizzazione. Ho fatto un contatore e ho salvato le migliori opzioni in variabili globali. Li ha riscritti quando il risultato è migliorato. C'era un'aderenza perfetta.
 
Il punto è che ho tutti i pesi e le soglie raccolti dal tester GA, vedi i parametri di input nel rapporto, tranne gli ultimi 3. La curva di apprendimento è alta, poiché l'ottimizzazione di 10000 barre non richiede più di 5 minuti. Inoltre, non ho bisogno di 256 ingressi perché tre sono sufficienti - anche su di loro la griglia è riqualificata in bianco e nero.
 
Reshetov:


Non ho bisogno di 256 ingressi, perché tre sono sufficienti - anche con loro, la griglia viene riqualificata in nero.

Questo va ben oltre lo scopo di questo argomento. Non vale la pena discuterne. A ciascuno il suo
 
Vinin:

Questo è già fuori dallo scopo dell'argomento. Non c'è bisogno di discuterne. A ciascuno il suo.


L'argomento si è arenato molto tempo fa, non farà alcun male...

Reshetov:


E inoltre, non ho bisogno di 256 ingressi, perché tre sono abbastanza cattivi - anche loro riqualificano la griglia in nero.


Sei sicuro che si riqualifica? Forse manca semplicemente di "generalizzazione e potenza di calcolo" a causa della debolezza dell'architettura?

L'esperto all'intersezione dei due carri è regolato nell'ottimizzatore, ma funzionerà solo su un avanti se sei molto fortunato. E ovviamente non si tratta di sovrallenamento...

In realtà è facile combattere l'overshoot - aumentare la dimensione del campione di allenamento a un plus stabile sul controllo o OOS. NS non può ricordare l'intero campione e deve solo generalizzare. In questo caso la diminuzione delle caratteristiche del sistema è inevitabile, ma qui dipende più dagli input per esempio.

 
Figar0:


Beh, l'argomento è stato affrontato da tempo, nessun danno...

Ma è meglio non discutere con i moderatori. Almeno le regole che IMHO non violiamo e nel caso di ciò che abbiamo il diritto di ricorrere all'amministrazione.

Figar0:


Sei sicuro che la riqualificazione? Forse manca solo di "generalizzazione e potenza di calcolo" a causa di un'architettura debole?

Sì, sono sicuro.

È facile da dimostrare. Il punto è che se i risultati dell'ottimizzazione sono molto granulosi, quelli in avanti non hanno successo per loro. Ma possiamo ordinare questi stessi risultati in base agli indicatori e poi cercare valori più concreti dove gli attaccanti danno già successo. Sarebbe più corretto dire che gli attaccanti di successo si affollano in risultati di ottimizzazione dove questi stessi risultati non sono troppo gravi, ma nemmeno troppo parcellizzati.

L'esempio più semplice. Prendiamo un intervallo decente di storia, rimuoviamo Take e Stop e impostiamo TS per prendere le letture TC di VS ad ogni barra e usarle per il trading. Cioè, se le letture della griglia sono contro la lana della posizione aperta, la capovolgiamo. La griglia è impostata in modo tale da aprire solo poche operazioni e tutte vincenti (non c'è fattore di profitto). Non ho riscontrato questo sul perceptron a uno strato e nemmeno sulle reti standard. La griglia è spesso sbagliata lì, quindi fa una quantità decente di trade anche senza stop e takeover su una storia lunga.

Suppongo che questo sia dovuto al fatto che ho modificato il primo strato e in qualche modo riesce ad alimentare gli ingressi del nascosto con dati strettamente lineari ora. Chi lo sa però, visto che il mio progetto è molto più semplice di quello di Rosenblatt? Molto probabilmente la ragione è che l'intera rete è regolata con GA per tutti i parametri di input in un solo passaggio e GA è come un carro armato che cerca gli estremi, anche se non direttamente, ma i dati multifattoriali per tale ottimizzazione sono come due dita sull'asfalto, finché c'è un estremo distinto o diversi estremi. D'altra parte, a causa della primitività del primo strato, si accorda molto rapidamente e abbastanza adeguatamente.

IMHO le reti neurali moderne hanno esagerato nel complicare gli strati di input. Di conseguenza, non funzionano molto bene. E in una rete multistrato il primo strato è il più importante in quanto influenzerà il risultato finale a seconda di ciò che emette allo strato nascosto. Dopo tutto, una griglia normale è più spesso a tre strati, e gli strati nascosti e di uscita sono già un piano lineare primitivo nello spazio multidimensionale.

Un altro trucco è la normalizzazione dinamica dei dati di input. Se applichiamo la statica, qualsiasi cambiamento nella volatilità (cambierà certamente in avanti) influenzerà il risultato. Ho risolto questo problema a favore della dinamica.

 
Reshetov:

....

E le entrate come nella pagina precedente? È un pendio scivoloso lì... Non posso nemmeno immaginare che tipo di magie possano essere state fatte con NS per ottenere risultati su un primitivo del genere. E qual è la verità, ovunque si prenda un campione di formazione, va in salita su SOS? Il risultato è davvero stabile? E altre coppie e strumenti? EURUSD è il più facile da prevedere.

Reshetov:

Ho dovuto armeggiare con la strategia di trading per evitare che la griglia si adattasse.

Non lo capisco nemmeno io. I NS devono dare segnali, e mi sembra illogico, personalmente, dirigere i NS per mezzo del TS nella fase di formazione. Qui in qualche modo l'approccio è proprio l'opposto... In che direzione si è attorcigliato il TS?

Reshetov:

Un altro trucco è la normalizzazione dinamica dei dati di input. Se applichiamo la statica, qualsiasi cambiamento nella volatilità (cambierà certamente in avanti) influenzerà il risultato. Ho risolto questo problema a favore della dinamica.

Lo pratico anche - a volte funziona, a volte non è così buono. Dipenderà anche dall'input, ma quegli input ne beneficeranno sicuramente. Naturalmente, la normalizzazione dinamica aggiunge informatività all'input, ma rende più difficile l'apprendimento, e poiché l'apprendimento è "facile", ha senso che funzioni per un risultato positivo.

 
Figar0:

E le entrate come nella pagina precedente? È un pendio scivoloso con il periodo di sventolio...

Ho il periodo di ondeggiamento come una costante. Una volta era un parametro di ingresso, ma ho raccolto vari test in avanti di successo e sono arrivato alla conclusione che ballano intorno a questa costante.

Figar0:


Non riesco nemmeno a immaginare quale trucco magico potrebbe fare un NS per ottenere risultati usando un tale primitivo...

...

Non lo capisco nemmeno io. I NS devono dare segnali, e dirigere i NS attraverso il TS nella fase di formazione, personalmente, mi sembra illogico. Qui in qualche modo l'approccio è proprio l'opposto... In che direzione si è attorcigliato il TS?

Tutta questa roba non è stata assemblata in un giorno, ma piuttosto un tempo lungo e un po' alla volta. Alcune cose sono state aggiunte gradualmente, altre sono state perfezionate e altre ancora sono state eliminate dall'algoritmo.

Il lavoro è stato fatto da:

1. Per ridurre al minimo il codice. Il metodo di Michelangelo: prendiamo un blocco di pietra, tagliamo le cose inutili e otteniamo una scultura (più tardi questo metodo fu attribuito a Occam e al suo rasoio).

2. bypassare i vincoli dell'ottimizzazione dei tester

3. Caricato TC ad un tale livello di spessore per sbarazzarsi del montaggio

Figar0:

Quindi è vero che ovunque si prenda un campione di allenamento, si sale sull'OOS? Il risultato è davvero stabile? E altre coppie e strumenti? EURUSD è il più facile da prevedere.

I risultati su OOS sono diversi, ci sono anche i piombini. Sarebbe sorprendente se, dopo aver montato consapevolmente i risultati, la griglia non si scaricasse sullo spread. Non ho detto che erano tutti in attivo, ho detto che ho scelto quello più "gustoso" (ce ne possono essere anche di più "gustosi", visto che non li ho guardati tutti - ce ne sono troppi in giro).

L'unica differenza rispetto alle altre strategie: gli attaccanti di successo possono essere facilmente trovati manualmente (diventano affollati quando i risultati dell'ottimizzazione vengono ordinati) e la scelta è abbastanza ampia + decente a fette per i singoli parametri di input, cioè gli estremi con dolci discese.

Tra le altre coppie ho testato un po' su oro e GBPUSD - circa lo stesso.

 
Reshetov:

Il pessimismo è determinato dai limiti del tester di strategia, cioè se gli intervalli di valori di input sono grandi o il numero di questi stessi valori supera il limite, l'ottimizzatore si rifiuta di partire. Quindi ci sono dei limiti, dopo tutto.

Oggi ho finalmente completato la costruzione di una rete neurale scritta interamente in MQL4 con architettura 3:3:1 (tre neuroni all'ingresso, tre ingressi nascosti, un'uscita). Tutti i livelli sono configurati utilizzando il tester GA. Ma il problema è che per 1 strato avete bisogno di almeno 12 parametri di input, almeno con valori da -1 a 1 in passi di 1 (come Rosenblatt). Ma l'ottimizzatore non può gestirne così tanti. Mi sono dovuto liberare e semplificare il primo strato.

In contrasto con la maglia di qualcun altro, quella fatta da sé è migliore in quanto può essere aggiornata. Per esempio, oltre a rendere il primo strato non standard, ho aggiunto la normalizzazione dinamica dei dati di input.

I segnali agli ingressi sono abbastanza primitivi:

Nonostante la primitività di cui sopra, la griglia si dimostra molto addestrabile, cioè i pesi e le soglie sono facilmente scelti in modo che i risultati dei test si dimostrino senza un solo errore (nessun fattore di profitto). Ma dopo un tale montaggio, il test in avanti inizia immediatamente a precipitare sullo spread. Ho dovuto armeggiare con la strategia di trading, in modo da non permettere alla griglia di adattarsi.

Ne è valsa la pena, anche se mi ha fatto rivoltare il cervello:

Questi sono i risultati del test. Da 1 a 273 accordi - ottimizzazione, poi test in avanti.

Ed ecco il test in avanti:

Ecco i risultati del test in avanti:

Rapporto del tester di strategia
RNN
Alpari-Demo (Build 409)

Simbolo EURUSD (Euro contro Dollaro USA)
Periodo 1 ora (H1) 2011.10.24 00:00 - 2012.01.13 23:59 (2011.10.24 - 2012.01.14)
Modello In base ai prezzi di apertura (solo per Expert Advisors con controllo esplicito dell'apertura delle barre)
Parametri t1=54; t2=4; t3=48; x1=194; x2=128; x3=68; y1=1; y2=1; y3=-1; t4=136; sl=900; lots=1; mn=888;

Bar nella storia 2431 Zecche modellate 3862 Qualità della simulazione n/a
Errori di mancata corrispondenza dei grafici 0




Deposito iniziale 10000.00



Utile netto 14713.00 Profitto totale 40711.60 Perdita totale -25998.60
Redditività 1.57 Payoff previsto 88.10

Dispersione assoluta 2721.60 Massimo prelievo 4800.00 (39.74%) Prelievo relativo 39.74% (4800.00)

Totale scambi 167 Posizioni corte (% vittoria) 101 (67.33%) Posizioni lunghe (% vittoria) 66 (92.42%)

Operazioni redditizie (% di tutte) 129 (77.25%) Operazioni in perdita (% di tutte) 38 (22.75%)
Il più grande commercio redditizio 900.00 perdere l'accordo -907.20
Media affare redditizio 315.59 commercio perdente -684.17
Massimo vittorie continue (profitto) 13 (2557.00) Perdite continue (perdita) 4 (-3605.40)
Massimo Profitto continuo (numero di vittorie) 3511.60 (11) Perdita continua (numero di perdite) -3605.40 (4)
Media vincite continue 4 perdita continua 1





La cosa più interessante è che anche sul grafico possiamo vedere che la sezione di ottimizzazione è peggiore di quella in avanti. Questo accade raramente. Anche se ho selezionato questo come il miglior attaccante tra molti altri, cioè altri attaccanti hanno risultati molto peggiori di quelli dell'ottimizzazione ma tuttavia hanno i migliori.


Grazie per il suggerimento! Tu e Vinin siete un'autorità per me. È passato molto tempo e state ancora trattando questo argomento, ho raccolto i vostri lavori su Internet, la cosa più interessante è che entrambi avete ragione e non sapete che state andando in parallelo verso lo stesso obiettivo. Ho preso da uno e preso dall'altro e ora sto aspettando il risultato. State creando una nuova direzione, ma molto difficile!!!
Motivazione: