NS + indicatori. Esperimento. - pagina 11

 
Figar0 >>:

Пора поднять веточку, все-таки она посвящена входам НС и новую тему заводить не стану...

Появилась пара совсем простых теоритических вопросов-раздумий.

*

Ать). Подавая в НС варианты входов, которые утрировано выглядят примерно так:

а) Open[0]-Open[1], Open[0]-Open[2], Open[0]-Open[3], Open[0]-Open[4],..., Open[0]-Open[N]

б) Open[0]-Open[1], Open[1]-Open[2], Open[2]-Open[3], Open[3]-Open[4],..., Open[N-1]-Open[N]

рассчитывал получить примерно одинаковый результат. Все-таки входы весьма тавтологичны. Ан нет, результаты далеко не всегда даже рядом лежат, как и на участке обучения так и вне его. Пробовал разные варианты сетей, разные нейросетевые пакеты, везде картина примерно одинакова... Почему? несовершенство механизма обучения? "Слабость" сети? Многого от нее хочу?

*

Два). Хочу услышать мнение опытных или считающих себя таковыми нейросетевиков, как далеко должны быть входы от цены в нащей прикладной задаче прогнозирования ценового ВР? Мои опыты показывают, что использование всяческих индикаторов, "производных N-го порядка" от цены, в лучшем случае, вообщем-то ничего не дает. Цена, максимум сглаживание, экстремумы, все остальное от опиум для НС.. Не считаете?

At) L'informazione è "tautologica" per te, per me, per molti altri programmatori μl... Avete provato una correlazione reciproca e vedere quanto sono correlati gli ingressi? Al di fuori dell'area di apprendimento, per esperienza personale, la differenza appare solo a causa della non stazionarietà dell'input...

Due) Per quanto riguarda "quanto lontano devono essere gli input dal prezzo" - relativamente, al contrario, per me l'uso dei derivati migliora il criterio... Personalmente, non credo. Ciò che gli input dovrebbero essere dipende dall'output, il problema dipende da come si arriva (approssimativamente).

 
Figar0 >>:

Ать). Подавая в НС варианты входов, которые утрировано выглядят примерно так:

а) Open[0]-Open[1], Open[0]-Open[2], Open[0]-Open[3], Open[0]-Open[4],..., Open[0]-Open[N]

б) Open[0]-Open[1], Open[1]-Open[2], Open[2]-Open[3], Open[3]-Open[4],..., Open[N-1]-Open[N]

рассчитывал получить примерно одинаковый результат. Все-таки входы весьма тавтологичны. Ан нет, результаты далеко не всегда даже рядом лежат, как и на участке обучения так и вне его. Пробовал разные варианты сетей, разные нейросетевые пакеты, везде картина примерно одинакова... Почему? несовершенство механизма обучения? "Слабость" сети? Многого от нее хочу?

A prima vista, l'informazione fornita all'ingresso della rete nei casi a) e b) è effettivamente tautologica. Il cervello, attraverso gli occhi, riceve informazioni grafiche sotto forma di formule scritte.

I simboli delle formule stesse non portano alcuna informazione utile al cervello, l'informazione è contenuta nei valori di quei simboli.

Praticamente non vede la differenza all'inizio. Non l'ho visto. :)

Non vede la differenza finché non comincia a capire quali numeri sono nascosti sotto i segni delle formule. È qui che diventa immediatamente chiaro qual è la differenza, una grande differenza.


Ecco uno screenshot del grafico a),

Vediamo una linea quasi perfetta dall'infinito al valore della differenza tra Open[0]-Open[1]:



Guardiamo ora il grafico b):



La differenza, come si dice, è evidente! Nel secondo caso, il valore della nostra funzione "salta" intorno a 0, in limiti ben definiti.

Qualsiasi NS ha limiti di sensibilità degli ingressi determinati dalla funzione di attivazione del neurone e limiti dei pesi. Non si può chiedere alla rete di imparare qualcosa che non ha imparato all'interno degli schemi della funzione di apprendimento e nei suoi limiti di sensibilità. Questo significa che la NS può calcolare correttamente solo sui dati di input, anche se non era nel campione di allenamento, ma allo stesso tempo, se i valori sottoposti all'input appartengono all'area di determinazione della funzione di allenamento e si trovano all'interno della sensibilità della rete. Queste sono due condizioni necessarie, sotto le quali qualsiasi NS funziona correttamente.

Figar0 >>:
Due). Voglio sapere l'opinione di esperti o considerarsi esperti neural-networkers, quanto lontano dagli input di prezzo dovrebbe essere nel nostro problema applicato di previsione del prezzo VR? La mia esperienza mostra che l'utilizzo di tutti i tipi di indicatori, "derivati dell'ennesimo ordine" dal prezzo, generalmente non dà nulla nel migliore dei casi. Prezzo, lisciatura massima, estremi, tutto il resto da NS oppio... Non credete?

Gli indicatori derivati dal prezzo, che hanno principali differenze tra loro nei principi di calcolo, possono e devono essere utilizzati. Le barre vicine separate da sole non portano alcuna informazione utile. Si possono ottenere informazioni utili solo se si considera l'interazione di "gruppi" di barre, o, in altre parole, di "finestre".

 
joo писал(а) >>

A prima vista, l'informazione fornita all'ingresso della rete nei casi a) e b) è effettivamente tautologica.

Ecco uno screenshot del grafico a),

Qualcosa mi dice che non hai interpretato graficamente la formula a) correttamente.

Il tuo grafico è qualcosa come (variante di):

f[0] = Open[0]-Open[1] Capisco.

f[1] = Open[0]-Open[2] Cioè guardare avanti?

Oppure sostituite Open[0] con il valore corrente, cioè

f[1] = Open[1]-Open[2] cioè formula b)

O ahem.

f[1] = Open[1]-Open[3] Ma questo non segue dal contesto

Come lo capisco (almeno questo è quello che avevo in mente con simili "esperimenti" con gli input), è tutto un array di N-1 cifre al "punto 0", cioè f[0][N-1]

nel punto f[1][N-1] sarà Open[1]-Open[2], Open[1]-Open[3], ...

Significa che si dovrebbe disegnare un piano n-1-dimensionale.

Il fatto che i risultati siano diversi è naturale. Ma non ho deciso quali ingressi sono "più corretti" (per le stesse uscite).

SZY. Ho cercato molto tempo fa e in "scatole nere".

 
SergNF >>:

Что-то мне подсказывает, что Вы не правильно графически интерпретировали формулу a).

E voi state consultando questo "Qualcosa" per niente.

Fare un indicatore e vedere.

SergNF >>
Il

fatto che i risultati siano diversi è naturale

.

Ma quali ingressi sono "corretti" (per le stesse uscite) non

ho

ancora deciso

.

Cosa vuol dire che i risultati sono diversi? Che gli ingressi sono uguali alle uscite! E quali di loro sono "corretti", ha descritto il post sopra.

 
joo писал(а) >>

E tu stai prendendo consigli da quel 'Qualcosa' per niente.

Probabilmente hai ragione :)

Fare un indicatore e vedere.

Il "grafico" superiore del vettore di ingresso!!!!! DBuffer[i]=Close[i]-Close[i+DPeriod];

"Grafico" inferiore del vettore di ingresso!!!!! DBuffer[i]=Close[i+DPeriod]-Close[i+DPeriod+1];


Quello che segue è un'analisi linguistica del post originale e... Di nuovo alla questione della correttezza della formulazione del ToR. ;)

 
SergNF >>:

Наверное Вы правы :)

Верхний "график" входного вектора!!!!! DBuffer[i]=Close[i]-Close[i+DPeriod];

Нижний "график" входного вектора!!!!! DBuffer[i]=Close[i+DPeriod]-Close[i+DPeriod+1];


Дальше будет лингвистический разбор исходного поста и ... опять к вопросу о корректности формулировок в ТЗ. ;)

Sì, quindi i ToR dell'interrogante non sono buoni, dato che due persone hanno interpretato la domanda in modo diverso. :)

Dovremmo aspettare Figar0 per vedere cosa ha da dire.

 
StatBars писал(а) >>

Ciò che gli input dovrebbero essere dipende dall'output (compito), il compito (output) da come si arriva (grosso modo).

Quali uscite possono esserci? I segnali che speriamo di utilizzare per ottenere la crescita graduale del patrimonio netto senza slittamenti) Anche se il compito può effettivamente essere impostato in modo diverso dal NS....

joo ha scritto >>.

Beh, significa che il ToR dell'interrogante non è buono, dato che due persone hanno interpretato la domanda in modo diverso. :)

Dobbiamo aspettare Figar0, quello che ha da dire.

Onestamente, non pensavo che ci sarebbe stata una tale differenza di opinione... Il costo della produzione di NS nei loro mondi angusti. SergNF ha capito bene il mio "ToR") Due vettori di ingresso, dove uno può essere facilmente ottenuto dall'altro e con risultati diversi in uscita. E mi sembra di cominciare a capire perché sono diversi, domani farò un paio di esperimenti e cercherò di mettere in lettere questa comprensione...

 
Figar0 >>:

Какие могут быть выходы? Сигналы, работая по которым надеемся получить плавный рост эквити без просадок) Хотя задачу НС можно действительно поставить по разному....

I segnali per i quali speriamo di ottenere un aumento regolare sono un tipo di problema, e ci possono essere molti principi, ma molti saranno ancora molto simili (almeno in termini di correlazione). E l'uscita era intesa proprio in questo contesto.

Cosa ne pensate?

Sono d'accordo che non dovremmo condividere l'esperienza, in ogni caso, molte cose sarebbero più facili da un lato, e le informazioni importanti sul progetto e gli sviluppi rimarrebbero ancora nascoste, cioè per esempio, io ho qualcosa da condividere che renderà la vita più facile agli altri, ma allo stesso tempo non rivelerò i miei segreti in alcun modo :)

 
Figar0 писал(а) >>

E penso che sto cominciando a capire perché diverso, farò alcuni esperimenti domani e cercherò di mettere questa comprensione in lettere...

Bene, sembra esserci un'intesa definitiva, una conclusione:

- Gli input a) e b) sono gli stessi, e i risultati diversi sono dovuti a un meccanismo di apprendimento imperfetto e a errori di calcolo nella conversione dei dati. Cioè se uso per l'input incrementi di qualsiasi cosa: indicatori, prezzo, prenderò ancora la differenza dal rapporto zero o dai punti adiacenti. L'ho imparato solo sperimentalmente, avendo semplificato al massimo il NS e reso possibile l'apprendimento per ricerca completa dei pesi. I risultati coincidono con un cent...

Dopo aver digerito questa conclusione, sono caduto nello studio della GA.

StatBars ha scritto >>.

Sono d'accordo che è uno spreco non condividere l'esperienza, in ogni caso, molte cose sarebbero più facili da un lato, e le informazioni importanti sul progetto e gli sviluppi rimarrebbero ancora nascoste, cioè per esempio, ho qualcosa da condividere che faciliterà la vita degli altri, ma allo stesso tempo non rivelerà i miei segreti :)

Sicuramente uno spreco... Non è una cattiva idea sincronizzare l'orologio almeno una volta ogni tanto)

Comincerò con me stesso. Al momento sto preparando le mie reti in MQL, e le sto allenando solo nel tester/ottimizzatore del terminale. Tuttavia, indago su alcuni componenti degli input in Statistica. Questo approccio ha sia degli svantaggi che alcuni vantaggi. Il più grande vantaggio è imparare la rete direttamente nell'ambiente dell'applicazione e si può insegnare all'obiettivo finale - il profitto. Come architettura mi sono fermato sperimentalmente a MLP con pochi strati: in entrata, in uscita e uno o due nascosti. Un approssimatore più che sufficiente IMHO. Al momento sto pensando di aggiungere dei backlink a MLP. Numero di ingressi utilizzati ~ 50 a 200, di più complicherebbe l'architettura e la formazione, e penso che sarebbe ridondante.

Forse alcune delle mie descrizioni sono strane, forse no, ma sono un autodidatta delle reti neurali, inoltre, custodisco gelosamente il mio cervello dall'eccessiva letteratura polverosa)

 

Uso MQL per pre-elaborare i dati, caricarli nel formato interno e analizzare i risultati della rete. Alleno solo reti in NSH2. Certo, ci sono anche reti in MCL e C++, ma NSH2 è meglio...

Le reti di solito non sono più del solito 3 strati (MLP), di più non è necessario.

A proposito, per quanto riguarda gli input, al massimo ne ho alimentati 128, da alcuni esperimenti ho scoperto che più di 20-30 input è già un forte eccesso, e molto probabilmente la rimozione di quelli non importanti migliorerà notevolmente il criterio di apprendimento. Se meno di 40 ingressi la questione può essere ancora discutibile, ma più di 40 ingressi è 100% overkill.

Il criterio di apprendimento è standard in NSH2 - sko.

Assicuratevi di usare un campione di prova per evitare il montaggio della rete. Inoltre, la divisione del campione in modo sequenziale - la prima parte del campione diciamo da 2005.01.01 - 2006.01.01 - campione di formazione, campione di prova - 2006.01.01 - 2006.04.01. Molti possono dubitare che un tale modo per sbarazzarsi di rete riqualificazione, ma io sono sicuro al 100% che si sbarazza di riqualificazione, se non si sbarazza di, quindi il problema in un altro, cioè, non consiglio di cambiare la partizione del campione, piuttosto per formare esattamente così (con 2 campioni). Considera cosa è più importante per te: la rete dovrebbe essere stabile per cominciare, ma devi anche lavorarci per renderla abbastanza redditizia :) Oppure la rete è redditizia, ma non si sa quando sarà non redditizia, cioè prima si vede il profitto, e poi si capisce la stabilità della rete. Non intendevo una crescita regolare del patrimonio netto, ma il fatto che la rete mostra risultati diversi su diversi test in avanti (depo drena e viceversa).

La prima è più importante per me personalmente, dato che mi sto sviluppando in questa direzione. Ora ho raggiunto certi risultati, per esempio: (L'ho già detto sul forum, ma lo ripeto) c'è il "campione generale", alleno la rete su circa il 20-30% del campione generale e dopo l'allenamento la rete funziona ugualmente ovunque, su tutto il campione, e la data del "campione generale" è dal 2003 ad oggi.

Anche con la redditività della rete, sono già arrivato molto vicino a una soluzione. La rete riconosce l'84% dei campioni e l'87% è una soglia minima per una crescita stabile e regolare di

equità. Quando ho iniziato a risolvere questo problema, il tasso di riconoscimento era del 70%.

Motivazione: