Discussione sull’articolo "Programmazione di una rete neurale profonda da zero utilizzando il linguaggio MQL" - pagina 2

 
Anddy Cabrera #:

Ciao Li,

Ho aggiornato l'articolo con 2 file demo. Uno per MQL5 e uno per MQL4. Il DeepNeuralNetwork.mqh può essere usato per entrambi, mql5 e mql4.


In ogni caso, sto allegando questo file qui per mostrare come usarlo.


Fatemi sapere se avete altre domande.

Davvero un bell'articolo, ho provato la demo e ho notato che solo yValues[1] può dare valori superiori a .5, yValues[0] e yValues[2] sono valori massimi di .2 o .3. anche nell'ottimizzazione non si apre più di un trade, cioè un ordine di vendita.
 
nail sertoglu #:

Grazie per i codici che hai condiviso. Ho cercato di capire il tuo modo di fare.


Ho qualche esitazione in quanto su yValues[0] , yValues[1], yValues[2] in quanto NON stanno cambiando e sempre 0,33333 ma_xValori[1,2,3] cambiano con la nuova barra; quindi se il commercio basato suyValori non ho visto alcun commercio mentre il commercio avviene quando le condizioni basate su _xValori.

E' colpa mia o semplicemente un errore di codifica nel tuo codice originale?

Aggiorna la seguente funzione per restituire `bool` invece di `void` e vedrai che c'era un cattivo numero di pesi dati.

bool SetWeights(double &weights[])
     {
      int numWeights=(numInput*numHiddenA)+numHiddenA+(numHiddenA*numHiddenB)+numHiddenB+(numHiddenB*numOutput)+numOutput;
      if(ArraySize(weights)!=numWeights)
        {
         printf("Bad weights length (%i), expected %i", ArraySize(weights), numWeights);
         return false;
        }

Nota che devi anche aggiornare i pesi in cima al file (non è sufficiente aggiornarli solo quando inizializzi la rete :P

#define  SIZEI 25 // input * hidden A
#define  SIZEA 25 // hidden A * hidden B
#define  SIZEB 15 // hidden B * output
 
Ciao Anddy,

Questo è un articolo molto buono.
Ho alcune domande.
1) Posso usare sia l'attivazione Sigmoid che Tan-h porta all'uscita in un neurone multistrato per combinazione?
2) È necessario aggiornare le wheights all'inizio del file come suggerito da Karlis Balcers?
#define  SIZEI 20 // (input * hidden A)+hidden A
#define  SIZEA 25 // (hidden A * hidden B)+hidden B
#define  SIZEB 18 // (hidden B * output)+output
Nota: SIZEI dovrebbe essere 20 e SIZEB dovrebbe essere 18, è corretto?
3) Ho allegato un diagramma di rete neurale profonda come descritto in questo articolo, è corretto?

molte grazie


EADNN

 
Funziona come un algoritmo genetico con ottimizzatore, selezionando i valori che migliorano il risultato finale
 
<Cancellato>
 

Bella animazione.

Una rete neurale a due strati è una rete neurale "superficiale", non una rete neurale profonda. Le reti neurali profonde comprendono reti con più di tre strati nascosti. A causa delle peculiarità dell'addestramento di tali reti neurali, sono stati sviluppati metodi di apprendimento profondo.

L'articolo come esempio di programmazione su MCL è probabilmente utile. Per familiarizzare con l'argomento MLP è sicuramente necessario. Come esempio di applicazione delle reti neurali - non completo e molto indietro rispetto allo stato attuale dell'argomento.

Di norma, senza l'ottimizzazione degli iperparametri, la rete neurale non fornisce una qualità soddisfacente.

Non capisco perché costruire una bicicletta con mezzi improvvisati, se c'è un mare di programmi pronti su questo argomento?

 
Per capire NS è buono e chiaro.
 

Correzione. Nell'articolo c'è una definizione di rete profonda. Non l'ho vista.

Il processo di ottimizzazione dei pesi di una rete neurale utilizzando la genetica non è letteralmente "apprendimento". Si tratta di ottimizzazione, dopotutto. L'addestramento utilizza metodi completamente diversi. Anche se questa variante dell'uso delle reti neurali viene praticata e con discreto successo.

Per comprendere il funzionamento di una rete neurale, è importante capire come viene addestrata una rete neurale mediante la propagazione all'indietro dell'errore. Beh, mi sto già prendendo gioco di voi :)

Buona fortuna

 
Ringrazio l'autore per l'articolo. Come persona lontana dalle reti neurali, mi ha aiutato molto a entrare nell'essenza delle cose ed è stato molto interessante dal punto di vista dell'ulteriore familiarizzazione con l'argomento. Grazie ancora!
 

C'è un modo per incorporare la propagazione degli errori in questa rete?

Per qualche motivo si ritiene che una rete di questo tipo sarebbe più flessibile e fornirebbe input migliori - outputs....

Una rete con retropropagazione degli errori non è una rete completamente diversa, vero?