"New Neural" è un progetto di motore di rete neurale Open Source per la piattaforma MetaTrader 5. - pagina 69

 
TheXpert:
Grazie :) poke finale.

Preferisco occuparmi di una sola implementazione e cercare di perfezionarla.

Potrei non essere in grado di competere con la genetica in scala (quelle classi di compiti che non hanno una funzione obiettivo esplicita), ma in termini di efficienza d'uso e apprendimento...

Decisione molto giusta, nel momento in cui appare qualche progetto qui avrete già fatto un sacco di lavoro di base, e se il progetto non appare, darete un risultato.

Hai più possibilità di mantenere vivo il progetto.

Non arrendetevi, pubblicate il vostro lavoro, fate domande, forse qualcuno si metterà all'opera.

 
Urain:

Non sparire, metti il tuo lavoro, fai domande e vedrai chi altro si impegnerà.

Cosa c'è in ballo. Lo posterò non appena sarà pronto.

Ho un'implementazione C++. Tutto quello che devo fare è riorganizzare e aggiornare un paio di cose.

 
ivandurak:

Vorrei che sputassero, ma mi ignorano. Ti è stato chiesto un consiglio - sì o no.

Se (SÌ), andrò a leggere qualche libro intelligente;

altrimenti vai a leggerne un altro e calcia nell'altra direzione;

Nikolay, butta qui i libri, che ti ho dato recentemente, sul clustering, ma è noioso rovistare di nuovo in biblioteca.
 
ivandurak:

Buon pomeriggio, non proprio in tema, ho bisogno di un consiglio.

Io stesso ho un compito. È necessario scegliere una finestra temporale adattiva del momento attuale, e non impostarla in parametri per esempio in 10 barre. Poi dovremmo analizzare la storia in profondità per scoprire a quale cluster appartiene la finestra selezionata. Le reti neurali possono gestirlo o è più facile fare qualcos'altro? Se non mi dispiace, per favore mandami un libro sulle griglie solo sul livello della salsiccia.

Non conosco il livello delle salsicce, come si dice ricco.

Proprio il clustering e la classificazione sono i compiti che le reti svolgono meglio.

L'approssimazione è peggiore, ma va anche bene, ma con l'estrapolazione in generale è stretta. Tutto dipende dall'implementazione però.

File:
 
Urain:

Non conosco il livello delle salsicce, come si dice.

Il clustering e la classificazione sono i compiti che le reti svolgono meglio.

L'approssimazione è peggio, ma va anche bene, ma l'estrapolazione è difficile. Tutto dipende dall'implementazione, però.

Molto obbligato, vado a masticare il granito.
 
yu-sha:
...

l'apprendimento è un processo esterno alla rete stessa

...

Poi, per completezza, l'apprendimento non è solo un processo esterno ma anche di natura interna, poiché spesso ha accesso non solo ai pesi ma anche ai dati di calcolo intermedi, così come alle proprietà della topologia.

Ed è a causa di questa proprietà del processo di apprendimento che viene spesso attribuito ai processi interni della rete.

Arrivano alla conclusione che la rete dovrebbe esporre le sue informazioni interne al processo di apprendimento, mentre le nasconde del tutto all'ambiente.

La linea d'azione logica in questa situazione è quella di avvolgere la rete stessa in un guscio di formazione, se necessario,

Così, abbiamo un oggetto di rete esterno che ha dei metodi:

  • inizializzazione
  • flusso di lavoro
  • apprendimento

Un metodo di flusso di lavoro riceve la rete così com'è, un metodo di formazione riceve la rete avvolta nel guscio di formazione; una continuazione logica dell'incapsulamento sarebbe quella di dare un metodo di rete con un flag di selezione invece di due metodi di flusso di lavoro e di formazione.

 
Urain:

quindi abbiamo un oggetto di rete esterno che ha dei metodi:

  • inizializzazione di
  • eseguire
  • formazione

Un metodo di flusso di lavoro ottiene la rete così com'è, un metodo di formazione ottiene la rete avvolta in un guscio di formazione, un'estensione logica dell'incapsulamento sarebbe quella di dare un metodo di rete con una bandiera di selezione invece di due metodi di flusso di lavoro e di formazione.

Nel caso più generale, la rete deve avere un solo metodo run()

Esegue il calcolo dei neuroni di uscita e presuppone che gli ingressi siano già stati inizializzati

L'"insegnante" è un oggetto separato che viene inizializzato con i parametri di formazione e controllato dall'oggetto di formazione

Avreste bisogno di un validatore per controllare se potete insegnare questo oggetto con questo metodo

Ma tutte queste cose sono difficili da formalizzare nel caso generale

Ecco perché il design rigido standard del tipo Network+Function+Teacher può essere sviluppato per un utente finale e permettere di impostare solo alcuni parametri, per esempio, il numero di neuroni nello strato

la rete deve esporre le sue informazioni interne al processo di apprendimento mentre le nasconde all'ambiente

Sono d'accordo. Alcuni metodi di formazione, ma non tutti, richiedono un accesso quasi completo all'interno della rete

 

yu-sha:

...

Alcuni metodi di formazione, ma non tutti, richiedono un accesso quasi completo agli interni della rete.

Questo è il problema, alcuni metodi richiedono che la rete sia non solo esposta, ma anche adeguatamente strutturata per il metodo.

In altre parole, il metodo stesso è stato scritto per una rete particolare. Che senso ha implementare questi metodi in un motore universale?

È meglio lasciare che Andrew codifichi tutto. Vedo un metodo di formazione universale per il motore universale - GA.

Nel resto abbiamo: un'idea del motore universale per qualsiasi topologia, idea del metodo universale di inizializzazione per qualsiasi topologia e GA come trainer universale di tutto questo.

Sul lato positivo, abbiamo una facile implementazione di nuovi tipi di neuroni, quelli standard ma non ancora descritti o non standard.

Solo un metodo di formazione è negli svantaggi.

Se qualcuno può capire come inserirvi altri metodi di allenamento, sarebbe fantastico, ma per ora è così.

 
Urain:

Nel resto abbiamo: l'idea di un motore universale per qualsiasi topologia, l'idea di un metodo di inizializzazione universale per qualsiasi topologia, e GA come tutor universale per tutto questo.

Sul lato positivo, è facile implementare nuovi tipi di neuroni, quelli standard ma non ancora descritti o non standard.

Gli svantaggi sono solo un metodo di formazione.

Pensando allo stesso modo sono arrivato quasi alla stessa conclusione)).

E poiché GA diventa il principale algoritmo di apprendimento, c'è un urgente bisogno di calcolo parallelo.

È qui che entrano in gioco le GPU.

Параллельные вычисления в MetaTrader 5 штатными средствами
Параллельные вычисления в MetaTrader 5 штатными средствами
  • 2010.11.24
  • Andrew
  • www.mql5.com
Время является неизменной ценностью на протяжении всей истории человечества, и мы стремимся не расходовать его понапрасну. Из этой статьи вы узнаете, как можно ускорить работу вашего эксперта, если у вашего компьютера многоядерный процессор. Причем, реализация описываемого метода не требует знания каких-либо еще языков кроме MQL5.
 
yu-sha:

Pensando allo stesso modo sono arrivato più o meno alla stessa conclusione ))

E poiché GA diventa il principale algoritmo di apprendimento, c'è un urgente bisogno di calcolo parallelo

È qui che entrano in gioco le GPU

Se leggete attentamente quello che ho scritto prima, avrete notato che nel mio modello di rete universale l'elaborazione stessa è divisa in strati, quindi i neuroni sono combinati in strati non formalmente (per proprietà), ma effettivamente (uno strato ha una memoria e un neurone no, un neurone rimane essere solo un'entità informativa che fornisce informazioni a uno strato su dove e perché). Quindi, il parallelismo è definito dalla struttura stessa del motore (le informazioni all'interno del livello sono elaborate in parallelo). Ho già fatto NS addestrato da GA e la più grande perdita di produttività è stata proprio sul calcolo di NS (soprattutto su grandi reti). E come pubblicità, posso dire che per UGA proposto da joo , imparare NS è un gioco da ragazzi.

Ma se riusciamo a parallelizzare anche i calcoli di FF (e NS per GA è una parte di FF), allora sono solo per questo. Anche se non credo che sarà un compito semplice, le azioni semplici vengono eseguite a strati, mentre il calcolo di FF può comportare una sequenza abbastanza complessa.