Trovare un set di indicatori per alimentare gli ingressi della rete neurale. Discussione. Uno strumento di valutazione dei risultati. - pagina 5

 
joo писал(а) >>

Perché non possono essere visti? Le differenze sono visibili. Non c'è sovrasaturazione dei neuroni quando si sceglie il giusto intervallo di ricerca. "È solo che non sai come cucinarli"(c) :)

Per la diversa complessità dei compiti ci sarà una diversa ottimizzazione degli strumenti, come avete giustamente notato (cacciaviti).

Sul tema della selezione della gamma è molto discutibile. GA è molto lungo, molto più lungo di ORO - un altro svantaggio.

Interessante conoscere la tua tecnica per la selezione di una scala, o da cosa sei guidato

joo ha scritto >>.

Ci saranno diversi strumenti ottimali per diverse complessità, come lei giustamente sottolinea (cacciaviti).

La GA non è per i NS. Per l'NS-th ha i propri metodi di allenamento (ottimizzazione). Almeno semplicemente perché non si può usare il CV come con ORO.

 
rip >> :

Corretto, l'algoritmo genetico non usa la funzione di errore per regolare i pesi.

Per quanto ho capito, si potrebbe marcare l'm5 per il massimo profitto che può essere sulla storia e usare questo mark-up come funzione di fitness.

Questa è esattamente la funzione con cui si stima un individuo.

>> così :)

 public double evaluate( IChromosome a_subject) {
        this. NNWeights=new double[ a_subject. size()]; //создаем вектор весов для нейросети
        for (int i=0; i<this. NNWeights. length; i++)
        {
            DoubleGene g= ( DoubleGene) a_subject. getGene( i);
            this. NNWeights[ i]= g. doubleValue(); //заполняем вектор весов для нейросети
        }
        net. SetWeights(this. NNWeights); //устанавливаем веса нейросети
        Trade trade =new Trade();
        for ( int i=0; i<this. csv. CSVInputs. length; i++)
        {
            trade. TradeCurrentSignal( net. ComputeForOneNeuronOutLayer(this. csv. CSVInputs[ i]),this. csv. CSVPrice[ i]);
        }
        
      return 1000000+ trade. Profit; //целевая функция должна быть >0
    }
 
rip >> :

È una questione di errore di campionamento del test. Cioè, si prende il mese successivo al campione di allenamento. Lo segni secondo il suo algoritmo. Voi date le uscite alla rete addestrata. Confrontate i risultati. Questo è esattamente il grafico di questi errori che ci interessa.


Potete anche ottenere il grafico degli errori del campione di allenamento e stimare il processo di apprendimento della vostra rete (o lo sviluppo delle generazioni nell'algoritmo genetico).

Durante l'addestramento, imparo fino a quando la funzione obiettivo aumenta o fino a quando mi annoio (nel tempo). mi occupo di riqualificare indirettamente - il campione di addestramento è molto più grande dei pesi nella rete neurale. poi, scarico in .mq4 ( qui, ci può essere un errore... Sto testando ... tutto funziona correttamente) e guarda con MT4 strategy tester cosa ne risulta.

"confrontare il risultato" - questa è la parte del tuo pensiero che non capisco... Non capisco questa parte del tuo pensiero: che senso ha riaddestrare intenzionalmente la rete e confrontare il suo risultato con quello della rete addestrata nei periodi precedenti?

 
rip >> :

Mostra il risultato quando confronti tutti gli insiemi che dai in pasto agli ingressi :) Penso che tutti saranno altamente correlati. Tutti gli indicatori forniti utilizzano gli stessi dati di input per il calcolo.

Non sto confrontando tutti i set.... Anche passare attraverso 200 serie di ingressi, in realtà ce ne sono di più, è lungo e non ha molto senso perché si potrebbe perdere qualcosa.

 
iliarr >> :

Quando mi alleno, imparo fino a quando la funzione target aumenta o fino a quando mi annoio (nel tempo). mi prendo cura del retraining indirettamente - il campione di allenamento è molto più grande dei pesi nella rete neurale. poi, scarico in .mq4 ( qui, forse, c'è un errore... lo provo ) e uso MT4 strategy tester per vedere qual è il risultato.

"Non capisco questa parte del tuo pensiero... Non capisco questa parte del tuo pensiero. Quello che voglio fare è riqualificare la rete appositamente e confrontare il suo risultato con quello della rete addestrata nei periodi precedenti.


Perché riqualificare? C'è un campione su cui si sta addestrando la rete. Ora simula il suo funzionamento, alimenta la rete con un campione che non conosce e confronta il risultato ottenuto dalla rete con quello previsto per il campione di prova.

 
rip >> :

Perché riqualificare? C'è un campione su cui si sta addestrando la rete. Ora simula il suo funzionamento, alimenta la rete con un campione che non conosce e confronta il risultato ottenuto dalla rete con quello previsto per il campione di prova.

quello che stai suggerendo determinerà le capacità predittive della rete addestrata, non la qualità dell'addestramento... e le capacità predittive di una rete dipendono non solo dalla qualità dell'addestramento, ma anche dalla struttura della rete, da come la rete interpreta ciò che produce e da quali informazioni alimenta.

 
iliarr >> :

Ma in Forex, il risultato di ciò che suggerisci determina le capacità predittive della rete addestrata, non la qualità dell'addestramento... mentre le capacità predittive di una rete dipendono non solo dalla qualità dell'addestramento, ma anche dalla struttura della rete, da come interpreti il suo output e dalle informazioni che alimenti la rete.

Ahem... Che cosa ha a che fare questo con le capacità di previsione? Avete una rete, avete la vostra rete con un'interpretazione presunta delle sue risposte.

In base al vostro codice, la classe Trade() simula il processo di trading in un modo o nell'altro. Aprire una posizione, tenere una posizione, chiudere una posizione.

>>In base a questo, decidete quanto sia adatto a voi il dato individuo. Quindi all'inizio hai stabilito una specie di regola

di interpretare gli output.

 
iliarr >> :

Non posso confrontare tutti i set.... Provare anche solo 200 serie di input, in effetti ce ne sono di più, è lungo e non ha molto senso perché si potrebbe perdere qualcosa.

Hm ... L'idea di un campione di allenamento: (Predittore di prezzo successivo utilizzando la rete neurale)


ntr - di set di allenamento

lb - lastBar


// Riempite gli array di input con i dati; in questo esempio nout=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Open[lb+ntr-1-i]/Open[lb+ntr-i]-1.0);
int fd2=0;
int fd1=1;
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // usa Fibonacci: 1,2,3,5,8,13,21,34,55,89,144...
fd2=fd1;
fd1=fd;
inpTrain[i*nin+j]=Open[lb+ntr-i]/Open[lb+ntr-i+fd]-1.0;
}
}

 
rip >> :

Hm ... L'idea di un campione di allenamento: (Predittore di prezzo successivo utilizzando la rete neurale)


ntr - di set di allenamento

lb - lastBar


// Riempite gli array di input con i dati; in questo esempio nout=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Open[lb+ntr-1-i]/Open[lb+ntr-i]-1.0);
int fd2=0;
int fd1=1;
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // usa Fibonacci: 1,2,3,5,8,13,21,34,55,89,144...
fd2=fd1;
fd1=fd;
inpTrain[i*nin+j]=Open[lb+ntr-i]/Open[lb+ntr-i+fd]-1.0;
}
}

Grazie. Darò un'occhiata.

 

IlyaA писал(а) >>

Il pubblico ha bisogno di vedere una dipendenza grafica dell'errore di apprendimento dal tempo (numero di epoche).

->

iliarr ha scritto(a) >>.
dobbiamo parlare di cose diverse... Non sto insegnando con un insegnante (c'è un errore di apprendimento in questo modo di insegnare)... Sto insegnando al massimo della funzione obiettivo e non so quale sia il massimo valore possibile della funzione obiettivo.

->

rip ha scritto >>.

Stiamo parlando di un errore di campionamento nei test. Cioè si prende il mese successivo al campione di formazione. Lo segni, secondo il suo algoritmo. Voi date le uscite alla rete addestrata. Confrontate i risultati, questo è il grafico degli errori che ci interessa.

Potete anche ottenere un grafico degli errori del campione di allenamento e stimare come la vostra rete sta imparando (o lo sviluppo delle generazioni nell'algoritmo gen. sta andando avanti).

Sembra che rip e IlyaA non capiscano che iliarr sta usando un metodo di insegnamento senza insegnante. Di che tipo di errore di apprendimento stiamo parlando quando la funzione obiettivo è il profitto? O entrambi pensate che avendo addestrato la rete sulla storia, si dovrebbe eseguirla su una storia di prova e confrontare il profitto ottenuto? Il profitto sarà diverso, meno o più, ma diverso. La storia del test è diversa. Non confondere con l'approssimazione, dove il criterio per la qualità dell'approssimazione è la deviazione standard della funzione originale e quella ottenuta.


StatBars ha scritto :>>.

ORO quando un neurone diventa sovrasaturo praticamente smette di "allenarlo", mentre GA può facilmente sovrasaturare un neurone e continuare ad aumentare ulteriormente i pesi dei neuroni.

->

StatBars ha scritto >>.

Per quanto riguarda la selezione della gamma, è molto discutibile. GA è molto lungo, molto più lungo di ORO - un altro svantaggio.

->

StatBars ha scritto(a) >>.

La GA non è per i NS. Per i NS, ci sono i loro propri metodi di formazione (ottimizzazione). Se non altro perché non si può usare il CV come con ORO.

Non capisco perché un atteggiamento così indiscutibile?

Ecco alcuni link che sono venuti fuori da una ricerca che dice il contrario:

http://alglib.sources.ru/dataanalysis/neuralnetworks.php

http://network-journal.mpei.ac.ru/cgi-bin/main.pl?l=ru&n=13&pa=10&ar=3

http://masters.donntu.edu.ua/2004/fvti/solomka/library/article2.htm

http://www.neuropro.ru/memo314.shtml


Non ho sostenuto e non sostengo che GA sia l'unica soluzione di ottimizzazione corretta per tutti i problemi. È semplicemente più versatile di qualsiasi altra soluzione, e spesso più veloce, facilmente adattabile a quasi tutti i compiti. Un'altra domanda, legittima, è quale numero minimo di corse di una funzione di fitness è necessario per trovare la soluzione ottimale. È di questo che dovremmo parlare, non della velocità degli algoritmi di ottimizzazione stessi. E qui GA supererà la maggior parte degli altri algoritmi.

Posso aprire un thread separato, se qualcuno è interessato, dove posso postare interessanti funzioni di test per algoritmi di ottimizzazione e i risultati di vari algoritmi. Penso che sarà molto utile non solo per chi si occupa di NN, ma per chiunque voglia ottenere un risultato dei propri sforzi ottimale in molti modi.

StatBars ha scritto :>>.

Interessante sentire la tua tecnica per selezionare una gamma di pesi, o quello che ti guida

In Maple o Mathca guardo la gamma di pesi in cui lavora la funzione di attivazione. Se l'ambito di qualche funzione è [-1;1], che senso ha "cercare" per esempio in un tale intervallo di variabili (-100;100)?

Motivazione: