Discussion de l'article "Programmation d'un Réseau de Neurones Profond à partir de zéro à l'aide du langage MQL" - page 2

 
Anddy Cabrera #:

Salut Li,

J'ai mis à jour l'article avec 2 fichiers de démonstration. Un pour MQL5 et un pour MQL4. Le DeepNeuralNetwork.mqh peut être utilisé pour les deux, mql5 et mql4.


De toute façon, je joins ces fichiers ici pour montrer comment les utiliser.


Faites-moi savoir si vous avez d'autres questions.

J'ai essayé la démo et j'ai remarqué que seules les valeurs yValues[1] peuvent donner des valeurs supérieures à .5, les valeurs yValues[0] et yValues[2] sont d'un maximum de .2 ou .3. Même en optimisation, pas plus d'une transaction, qui est un ordre de vente, ne sera ouverte.
 
nail sertoglu #:

Merci pour les codes que vous avez partagés. J'ai essayé de comprendre votre façon de faire.


J'ai quelques hésitations à propos des valeurs y[0], y[1], y[2] puisqu'elles ne changent pas et sont toujours 0,33333._xValues[1,2,3] changent avec la nouvelle barre ; donc si le trade est basé sur lesyValues, je n'ai vu AUCUN TRADE alors que le TRADE OCCUPE quand les conditions sont basées sur les _xValues.

Est-ce ma faute ou simplement une erreur de codage dans votre code original ?

Mettez à jour la fonction suivante en retournant `bool` au lieu de `void` et vous verrez qu'il y avait un mauvais nombre de poids donnés.

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;
        }

Notez que vous devez aussi mettre à jour les poids en haut du fichier (ce n'est pas suffisant de les mettre à jour seulement quand vous initialisez le réseau :P

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

C'est un très bon article.
J'ai quelques questions.
1) Puis-je utiliser à la fois les pistes d'activation Sigmoïde et Tan-h pour la sortie dans un neurone multicouche par combinaison ?
2) Faut-il mettre à jour les poids en haut du fichier comme le suggère 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
Note : SIZEI devrait être 20 et SIZEB devrait être 18, est-ce correct ?
3) J'ai joint un diagramme de réseau neuronal profond tel que décrit dans cet article, est-ce correct ?

Merci beaucoup.


EADNN

 
Il fonctionne comme un algorithme génétique avec un optimiseur, qui sélectionne les valeurs qui améliorent le résultat final.
 
<Deleted>
 

Belle animation.

Un réseau neuronal à deux couches est un réseau neuronal "superficiel" et non un réseau neuronal profond. Les réseaux neuronaux profonds comprennent les réseaux comportant plus de trois couches cachées. En raison des particularités de l'entraînement de ces réseaux neuronaux, des méthodes d'apprentissage en profondeur ont été développées.

L'article en tant qu'exemple de programmation sur MCL est probablement utile. Pour se familiariser avec le sujet des MLP, il est certainement nécessaire. En tant qu'exemple d'application d'un réseau neuronal, il n'est pas complet et est loin d'être à la hauteur de l'état actuel du sujet.

En règle générale, sans optimisation des hyperparamètres, le réseau neuronal ne donne pas une qualité satisfaisante.

Je ne comprends pas pourquoi construire une bicyclette à partir de moyens improvisés, alors qu'il existe une multitude de programmes prêts à l'emploi sur ce sujet ?

 
Pour comprendre NS est bon et clair.
 

Correction. L'article contient une définition d'un filet profond. Je ne l'ai pas vue.

Le processus d'optimisation des poids d'un réseau neuronal à l'aide de la génétique n'est pas littéralement de l'"apprentissage". Il s'agit en effet d'une optimisation. La formation fait appel à des méthodes complètement différentes. Bien que cette variante de l'utilisation des réseaux neuronaux soit également pratiquée, avec un certain succès.

Pour comprendre le fonctionnement d'un réseau neuronal, il est important de comprendre comment un réseau neuronal est entraîné par rétropropagation de l'erreur. Bon, je m'en prends déjà à vous :)

Bonne chance

 
Un grand merci à l'auteur pour cet article. En tant que personne éloignée des réseaux neuronaux, il m'a beaucoup aidé à comprendre l'essence des choses et était très intéressant du point de vue de la familiarisation avec le sujet. Merci encore !
 

Existe-t-il un moyen d'incorporer la rétropropagation des erreurs dans ce réseau ?

Pour une raison ou une autre, on pense qu'un tel réseau serait plus flexible et fournirait de meilleures données - outputs....

Un réseau avec rétropropagation des erreurs n'est pas un réseau complètement différent, n'est-ce pas ?