Usare le reti neurali nel trading - pagina 39

 

È un peccato che non ci siano "pionieri". Continuerò a scavare...

 
Ho provato la trasformata di Hartley, un analogo della trasformata di Fourier. Il compito era quello di utilizzare una funzione di finestra rettangolare spostata nel tempo al "passato". Decomporre i vettori risultanti in componenti e usarli per l'ingresso NS. Come previsione - cambiamento delle componenti spettrali, seguito da una trasformazione inversa. La trasformazione inversa risultante dello spettro predetto è usata nell'indicatore. QUI descritto in modo più dettagliato.
 

Ho letto un articolo così divertente.

Mi interessa il principio di strutturare il cervello come una rete neurale - prima si recluta un gran numero di connessioni di ogni tipo senza prestare molta attenzione alla loro qualità, poi inizia la selezione sul principio di "rimuovere tutto ciò che non è necessario per raggiungere il risultato".

È molto probabile che questo approccio aiuti a combattere sia il sovrallenamento che il "cedimento strutturale", per così dire.

A questo proposito una domanda: nessuno ha incontrato studi sul principio simile nella teoria NS.

 
alsu:

Ho letto un articolo così divertente.

Mi interessa il principio di strutturare il cervello come una rete neurale - prima si recluta un gran numero di connessioni di ogni tipo senza prestare molta attenzione alla loro qualità, poi inizia la selezione sul principio di "rimuovere tutto ciò che non è necessario per raggiungere il risultato".

È molto probabile che questo approccio aiuti a combattere sia il sovrallenamento che il "cedimento strutturale", per così dire.

A questo proposito una domanda: nessuno ha incontrato studi sul principio simile nella teoria NS.

Visto qualcosa con "assottigliamento netto" quando viene rilevato un piccolo valore assoluto nei coefficienti.

Ma non ho visto niente del genere nelle decine di volte, e come principio di base "grande, grande eccedenza, poi riduzione". Vuoi farne uno?

Sono interessato. Solo le risorse computazionali sarebbero insufficienti. // Non so come adattare la GPU - è redditizio calcolare solo lo stesso tipo di schemi, e qui ogni volta la topologia della rete è diversa.

 

MetaDriver:

Vuoi essere agganciato?

Lo faccio. Ma per ora penso: ho bisogno di pensarci su per capire quale algoritmo di riduzione usare. La prima idea è quella di assottigliare realmente per valore assoluto, e rendere la soglia dipendente dal numero di esempi già presentati: più grande è il campione di allenamento, più difficile dovrebbe essere per i collegamenti sopravvivere.

 
MetaDriver:
Non so come adattare la GPU - è vantaggioso calcolare solo lo stesso tipo di schemi, ma qui ogni volta la topologia della rete è diversa.
Di tipo singolo e implementato dall'hardware. L'efficienza dei calcoli paralleli in generale è molto esagerata, infatti (ci sono calcoli reali e anche tesi di dottorato su questo) in generale sono anche più lenti di quelli sequenziali; la ragione è nel consumo di tempo per il trasferimento dei dati.
 
alsu:
Sono dello stesso tipo e sono implementati a livello hardware. L'efficienza del calcolo parallelo in generale è molto esagerata, infatti (ci sono calcoli reali e anche tesi di dottorato sono difese a riguardo) nel caso generale è addirittura più lento del sequenziale; la ragione è nel tempo speso per il trasferimento dei dati.

Non posso essere immediatamente d'accordo. Se avete una buona comprensione delle specifiche, potete escogitare di spremere centinaia di volte più velocità da alcuni di compiti. Quindi per i calcoli intensivi ha sempre senso cercare di ridurre il problema a una classe di questi "alcuni". Se funziona, il guadagno può essere enorme. Se no, allora no - calcola in modo sequenziale su un processore ordinario.

--

Per esempio, l'ottimizzazione genetica di reti neurali dello stesso tipo (con la stessa topologia) con un gran numero di esempi di allenamento è estremamente vantaggiosa (la velocità di esecuzione è decine o centinaia di volte superiore). L'unico problema è che ogni topologia richiede un nuovo programma OpenCL. Questo può essere risolto costruendo ocl-template di base e generando automaticamente (programmaticamente) nuovi ocl-programma per una data topologia.

Qui, a proposito. Mentre scrivevo quanto sopra, mi è venuta in mente un'idea su come ridurre il tuo problema a una classe vantaggiosa per i calcoli della GPU. Per farlo passo dopo passo: all'interno di ogni passo dobbiamo leggere tutto in un programma OCL, ma ridurre a zero i coefficienti (in sostanza imitare). E per un nuovo passo, genera un nuovo programma in cui le riduzioni del passo precedente sono già state "flashate" nel programma. E così via. Ma questo è il caso se si usa l'"apprendimento" genetico.

 
MetaDriver:
Non posso essere d'accordo subito. Se si ha una buona comprensione delle specifiche, si può riuscire a spremere cento volte più velocità da alcuni di compiti. Pertanto, con calcoli complessi ha sempre senso cercare di ridurre il problema alla classe di quelli "alcuni". Se funziona, il guadagno può essere enorme. Se no, allora no - conta in modo sequenziale su un processore ordinario.

Per quanto mi ricordo, il valore critico è il rapporto tra il tempo di esecuzione dei compiti parallelizzati e quelli non paralleli (preparazione e trasmissione dei dati) nel ciclo principale e più alto è il parallelismo, più severi sono i requisiti di questo rapporto. Ecco perché non dovremmo solo mirare a ridurre l'algoritmo a "file parallelo", ma anche a minimizzare la parte non parallela.

Per esempio, nell'ormai di moda (e, tra l'altro, implementato in Five) cloud computing le limitazioni di guadagno sono molto gravi proprio a causa del tempo di trasferimento. In tutta onestà va notato che queste limitazioni appariranno solo quando una rete cloud è caricata non meno che in decine di percentuali.

Beh, ma non si tratta di questo adesso - non c'è davvero molto in termini di parallelismo in questo compito.

 
MetaDriver:// L'unico problema è che ogni topologia richiede un nuovo programma OpenCL. Questo può essere risolto costruendo ocl-template di base e generando un nuovo ocl-programma automaticamente (programmaticamente) per una data topologia.


Non ci sarà parallelismo: i template dipendono in modo sequenziale l'uno dall'altro, quindi bisogna generarli tutti in anticipo, ma poi ce ne saranno trilioni e la maggior parte del tempo sarà spesa per trovare quello giusto al momento)
 
alsu:

Non ci sarà parallelismo: i modelli dipendono sequenzialmente l'uno dall'altro, quindi dobbiamo generarli tutti in anticipo, ma poi ce ne saranno trilioni e la maggior parte del tempo sarà spesa per trovare il necessario al momento)
Non è vero. L'ho fatto per le reti neurali di tipo singolo. Posso anche mandarti un generatore di codici. La domanda è un'altra: come ridurre il tuo compito a una classe redditizia. Rileggete il mio post precedente - l'ho aggiunto lì.

Ah, bene, lo duplicherò:

Qui, a proposito. Mentre scrivevo quanto sopra, mi è venuta un'idea su come ridurre il tuo problema a una classe di calcoli vantaggiosi per la GPU. Per farlo passo dopo passo: all'interno di ogni passo dobbiamo leggere tutto in un programma OCL, ma ridurre a zero i coefficienti (in sostanza imitare). E per un nuovo passo, genera un nuovo programma in cui le riduzioni del passo precedente sono già state "flashate" nel programma. E così via. Ma questo è il caso se si usa l'"apprendimento" genetico.

Motivazione: