Question sur la programmation des réseaux neuronaux - page 6

 
Vinin:


J'ai fait une grille normale de 256 entrées, une couche cachée par 256 neurones. Et une couche de sortie d'un neurone. Et j'ai formé tout cela parfaitement dans MT4

1. Avec un algorithme de test génétique ou avec un algorithme d'apprentissage de maillage interne ?

 
Reshetov:
Par l'algorithme génétique du testeur ou par un algorithme interne d'apprentissage par maillage ?

Tout était fait par le biais d'un script. L'algorithme interne
 
Bien qu'il y ait eu des variantes avec l'optimisation. J'ai fait un compteur et enregistré les meilleures options dans des variables globales. Je les ai réécrits lorsque le résultat s'est amélioré. Il y avait un ajustement parfait.
 
Le fait est que tous les poids et les seuils ont été relevés par l'AG de test, voir les paramètres d'entrée dans le rapport, sauf les 3 derniers. La courbe d'apprentissage est élevée, car l'optimisation de 10000 barres ne prend pas plus de 5 minutes. De plus, je n'ai pas besoin de 256 entrées car trois suffisent - même sur elles, la grille est recyclée en noir et blanc.
 
Reshetov:


Je n'ai pas besoin de 256 entrées, car trois suffisent - même avec elles, la grille est recyclée en noir.

Cela dépasse largement le cadre de ce sujet. Cela ne vaut pas la peine d'en discuter. A chacun son métier
 
Vinin:

Cela sort déjà du cadre du sujet. Il n'est pas nécessaire d'en discuter. Chacun son truc.


Le sujet est bloqué depuis longtemps, ça ne fera pas de mal...

Reshetov:


Et d'ailleurs, je n'ai pas besoin de 256 entrées, car trois sont déjà assez mauvaises - même elles recyclent la grille dans le noir.


Vous êtes sûr qu'il se réadapte ? Peut-être manque-t-il simplement de "généralisation et de puissance de calcul" en raison de la faiblesse de l'architecture ?

L'expert à l'intersection des deux wagons est ajusté dans l'optimiseur, mais il ne fonctionnera sur un avant que si vous avez beaucoup de chance. Et il ne s'agit évidemment pas de surentraînement...

En fait, il est facile de lutter contre le dépassement - augmenter la taille de l'échantillon de formation pour obtenir un plus stable sur le contrôle ou l'OOS. NS ne peut pas se souvenir de l'ensemble de l'échantillon, et doit juste généraliser. Dans ce cas, la diminution des caractéristiques du système est inévitable, mais ici, elle dépend davantage des entrées, par exemple.

 
Figar0:


Eh bien, le sujet est attendu depuis longtemps, il n'y a pas de mal...

Mais il est préférable de ne pas se disputer avec les modérateurs. Au moins les règles que nous IMHO ne violent pas et en cas de quoi nous avons le droit de faire appel à l'administration.

Figar0:


Vous êtes sûr que la reconversion ? Peut-être manque-t-il simplement de "généralisation et de puissance de calcul" en raison de la faiblesse de son architecture ?

Oui, j'en suis sûr.

C'est facile à prouver. Le fait est que si les résultats de l'optimisation sont très granuleux, ceux de l'anticipation sont infructueux pour eux. Mais nous pouvons trier ces mêmes résultats par indicateurs et ensuite chercher des valeurs plus terre à terre où les avancées donnent déjà du succès. Il serait plus correct de dire que les avancées réussies sont entassées dans des résultats d'optimisation où ces mêmes résultats ne sont pas trop graves, mais pas trop perfides non plus.

L'exemple le plus simple. Nous prenons un intervalle décent de l'historique, nous supprimons le Take et le Stop et nous configurons TS pour qu'il prenne les lectures TC de VS à chaque barre et les utilise pour le trading. C'est-à-dire que si les relevés du réseau sont contre la laine de la position ouverte, nous la retournons. La grille est configurée de telle sorte qu'elle n'ouvre que quelques transactions et que toutes sont gagnantes (il n'y a pas de facteur de profit). Je n'ai pas rencontré ce problème avec le perceptron à une couche et même avec les réseaux standard. La grille y est souvent erronée, ce qui lui permet d'effectuer un nombre décent de transactions même sans arrêts et reprises sur un long historique.

Je suppose que cela est dû au fait que j'ai modifié la première couche et qu'elle parvient d'une manière ou d'une autre à alimenter les entrées de la couche cachée avec des données strictement linéairement séparées maintenant. Qui sait cependant, puisque ma conception est beaucoup plus simple que celle de Rosenblatt ? La raison la plus probable est que le réseau entier est ajusté avec l'AG pour tous les paramètres d'entrée en une seule passe et que l'AG est comme un char d'assaut à la recherche d'extrema, bien que pas directement, mais les données multifactorielles pour une telle optimisation sont comme deux doigts sur l'asphalte, tant qu'il y a un extremum distinct ou plusieurs extrema. D'autre part, en raison de la primitivité de la première couche, elle est très rapidement et très convenablement réglée.

À mon avis, les réseaux neuronaux modernes sont allés trop loin dans la complication des couches d'entrée. Par conséquent, ils ne fonctionnent pas de manière très adéquate. Et dans un réseau multicouche, la première couche est la plus importante car elle influencera le résultat final en fonction de ce qu'elle transmet à la couche cachée. Après tout, une grille normale est le plus souvent à trois couches, et les couches cachées et de sortie sont déjà un plan linéaire primitif dans un espace multidimensionnel.

Une autre astuce est la normalisation dynamique des données d'entrée. Si nous appliquons la statique, tout changement de la volatilité (elle changera certainement sur les forwards) affectera le résultat. J'ai résolu ce problème en faveur de la dynamique.

 
Reshetov:

....

Et les entrées comme sur la page précédente ? C'est une pente glissante là... Je ne peux même pas imaginer le genre de magie qui a pu être faite avec NS pour obtenir des résultats sur un tel primitif. Et quelle est la vérité, quel que soit l'endroit où l'on prélève un échantillon de formation, il monte sur SOS ? Le résultat est-il vraiment stable ? Qu'en est-il des autres paires et instruments ? La paire EURUSD est la plus facile à prévoir.

Reshetov:

J'ai dû modifier la stratégie de trading afin d'empêcher la grille de s'adapter.

Je ne le comprends pas non plus. Les NS doivent donner des signaux, et il me semble personnellement illogique de diriger les NS au moyen de TS au stade de la formation. Ici, en quelque sorte, l'approche est tout le contraire... Dans quelle direction le TS s'est-il déformé ?

Reshetov:

Une autre astuce est la normalisation dynamique des données d'entrée. Si nous appliquons la statique, tout changement de la volatilité (elle changera certainement sur les forwards) affectera le résultat. J'ai résolu ce problème en faveur de la dynamique.

Je le pratique aussi - parfois ça marche, parfois c'est moins bien. Cela dépendra aussi de l'apport, mais ces apports seront certainement bénéfiques. Bien sûr, la normalisation dynamique ajoute de l'information à l'entrée, mais la rend plus difficile à apprendre, et puisque l'apprentissage est "facile", il est logique qu'il fonctionne pour un résultat positif.

 
Figar0:

Et les entrées comme sur la page précédente ? C'est une pente glissante avec la période d'agitation...

J'ai la période d'ondulation comme une constante. Il s'agissait auparavant d'un paramètre d'entrée, mais j'ai rassemblé divers tests avant réussis et je suis arrivé à la conclusion qu'ils tournent autour de cette constante.

Figar0:


Je ne peux même pas imaginer quel tour de magie un NS pourrait faire pour obtenir des résultats en utilisant une telle primitive...

...

Je ne le comprends pas non plus. Les NS doivent donner des signaux, et diriger les NS par le biais du TS au stade de la formation, personnellement, me semble illogique. Ici, en quelque sorte, l'approche est tout le contraire... Dans quelle direction le TS s'est-il déformé ?

Tout ce matériel n'a pas été assemblé en un jour, mais plutôt sur une longue période et petit à petit. Certains éléments ont été ajoutés progressivement, d'autres ont été peaufinés et d'autres encore ont été supprimés de l'algorithme.

Les travaux ont été réalisés par :

1. Pour minimiser le code. La méthode de Michel-Ange : on prend un bloc de pierre, on enlève les choses inutiles et on obtient une sculpture (plus tard, cette méthode a été attribuée à Occam et à son rasoir).

2. contourner les contraintes de l'optimisation du testeur

3. Chargement de TC à un tel niveau d'épaisseur pour se débarrasser du raccord

Figar0:

Est-il vrai que, quel que soit l'endroit où l'on prélève un échantillon de formation, il y a une montée en puissance de l'OOS ? Le résultat est-il vraiment stable ? Qu'en est-il des autres paires et instruments ? La paire EURUSD est la plus facile à prévoir.

Les résultats sur OOS sont différents, il y a aussi des plumitifs. Il serait surprenant qu'après avoir sciemment ajusté les résultats, la grille ne se vide pas de son contenu. Je n'ai pas dit qu'ils étaient tous profitables, j'ai dit que j'avais choisi le plus "savoureux" (il peut y en avoir d'autres encore, car je ne les ai pas tous examinés - il y en a trop).

La seule différence avec les autres stratégies : les avants réussis peuvent être facilement trouvés manuellement (ils deviennent encombrés lorsque les résultats d'optimisation sont triés) et le choix est assez large + des tranches décentes par des paramètres d'entrée individuels, c'est-à-dire des extrema avec des descentes douces.

Parmi les autres paires, j'ai testé un peu l'or et la GBPUSD - à peu près la même chose.

 
Reshetov:

Le pessimisme est déterminé par les limites du testeur de stratégie, c'est-à-dire que si les plages de valeurs d'entrée sont larges ou si le nombre de ces mêmes valeurs dépasse la limite, l'optimiseur refuse de démarrer. Il y a donc des limites après tout.

Aujourd'hui, j'ai enfin terminé la construction d'un réseau neuronal écrit entièrement en MQL4 avec une architecture 3:3:1 (trois neurones à l'entrée, trois entrées cachées, une sortie). Toutes les couches sont configurées à l'aide du testeur GA. Mais le problème est que pour une couche, il faut au moins 12 paramètres d'entrée, au moins avec des valeurs de -1 à 1 par pas de 1 (comme Rosenblatt). Mais l'optimiseur ne peut pas en gérer autant. J'ai dû m'esquiver et simplifier la première couche.

Contrairement à la maille de quelqu'un d'autre, celle que l'on fabrique soi-même est meilleure dans la mesure où elle peut être améliorée. Par exemple, en plus de rendre la première couche non standard, j'ai ajouté la normalisation dynamique des données d'entrée.

Les signaux aux entrées sont assez primitifs :

Malgré la primitivité mentionnée ci-dessus, la grille s'avère très facile à entraîner, c'est-à-dire que les poids et les seuils sont facilement choisis de sorte que les résultats des tests s'avèrent sans une seule erreur (aucun facteur de profit). Mais après un tel ajustement, l'essai avant commence immédiatement à s'effondrer sur l'écart. J'ai dû modifier la stratégie de négociation afin de ne pas permettre à la grille de s'ajuster.

Cela en valait la peine, même si cela m'a retourné le cerveau :

Voici les résultats du test. De 1 à 273 transactions - optimisation, le test suivant est l'essai avant.

Et voici le test de l'avant :

Voici les résultats de l'essai avant :

Rapport du testeur de stratégie
RNN
Alpari-Demo (Build 409)

Symbole EURUSD (Euro contre Dollar US)
Période 1 heure (H1) 2011.10.24 00:00 - 2012.01.13 23:59 (2011.10.24 - 2012.01.14)
Modèle Par les prix d'ouverture (seulement pour les Expert Advisors avec un contrôle explicite de l'ouverture des barres)
Paramètres t1=54 ; t2=4 ; t3=48 ; x1=194 ; x2=128 ; x3=68 ; y1=1 ; y2=1 ; y3=-1 ; t4=136 ; sl=900 ; lots=1 ; mn=888 ;

Les bars dans l'histoire 2431 Tiques modélisées 3862 Qualité de la simulation s/o
Erreurs de concordance des graphiques 0




Dépôt initial 10000.00



Bénéfice net 14713.00 Bénéfice total 40711.60 Perte totale -25998.60
Rentabilité 1.57 Gain attendu 88.10

Dégradation absolue 2721.60 Abaissement maximal 4800.00 (39.74%) Abattement relatif 39.74% (4800.00)

Total des transactions 167 Positions courtes (% de gain) 101 (67.33%) Positions longues (% de gain) 66 (92.42%)

Transactions rentables (% de toutes) 129 (77.25%) Transactions à perte (% de toutes) 38 (22.75%)
Le plus grand commerce profitable 900.00 accord perdant -907.20
Moyenne opération rentable 315.59 commerce perdant -684.17
Maximum gains continus (profit) 13 (2557.00) Pertes continues (perte) 4 (-3605.40)
Maximum Profit continu (nombre de victoires) 3511.60 (11) Perte continue (nombre de pertes) -3605.40 (4)
Moyenne gains continus 4 perte continue 1





Le plus intéressant est que même sur le graphique, nous pouvons voir que la section d'optimisation est pire que la section avant. Cela se produit rarement. Bien que j'aie sélectionné celui-ci comme le meilleur avant parmi beaucoup d'autres, c'est-à-dire que d'autres avant ont des résultats bien pires que ceux de l'optimisation mais néanmoins ils ont les meilleurs.


Merci pour le conseil ! Vous et Vinin êtes une autorité pour moi. Cela fait longtemps et vous traitez toujours de ce sujet.J'ai recueilli vos travaux sur Internet.Le plus intéressant est que vous avez tous les deux raison et que vous ne savez pas que vous allez en parallèle, vers le même but. J'ai pris, de l'un et pris de l'autre et maintenant j'attends le résultat. Vous créez une nouvelle direction, mais une direction très difficile ! !!