"New Neural" est un projet de moteur de réseau neuronal Open Source pour la plateforme MetaTrader 5. - page 69

 
TheXpert:
Merci :) dernier coup.

Je préfère m'occuper d'une seule mise en œuvre et essayer de la perfectionner.

Je ne pourrai peut-être pas rivaliser avec la génétique en termes d'échelle (ces classes de tâches qui n'ont pas de fonction cible explicite), mais en termes d'efficacité d'utilisation et d'apprentissage...

Très bonne décision, d'ici à ce qu'un projet apparaisse ici, vous aurez déjà fait un gros travail de fond, et si le projet n'apparaît pas, vous donnerez un résultat.

Vous avez plus de chances de maintenir le projet en vie.

N'abandonnez pas, postez votre travail, posez des questions, peut-être que quelqu'un s'y mettra.

 
Urain:

Ne disparaissez pas, mettez votre travail, posez des questions, et vous verrez qui d'autre se mettra au travail.

Ce qui est en cours. Je le posterai dès qu'il sera prêt.

J'ai une implémentation C++. Tout ce que j'ai à faire, c'est de réorganiser et d'améliorer certaines choses.

 
ivandurak:

J'aimerais qu'ils crachent, mais ils m'ignorent. On vous a demandé un avis - oui ou non.

Si (OUI), je vais aller lire des livres intelligents ;

sinon allez en lire un autre et donnez un coup de pied dans l'autre sens ;

Nikolay, jette ici les livres que je t'ai récemment donnés sur le clustering, mais c'est ennuyeux de fouiller à nouveau dans la bibliothèque.
 
ivandurak:

Bonjour, pas vraiment sur le sujet, mais j'ai besoin d'un conseil.

J'ai moi-même une tâche à accomplir. Il est nécessaire de choisir une fenêtre temporelle adaptative du moment présent, et non de la paramétrer par exemple en 10 barres . Ensuite, nous devrions parcourir l'historique en profondeur pour découvrir à quel cluster appartient la fenêtre sélectionnée. Les réseaux neuronaux peuvent-ils s'en charger ou est-il plus facile de faire autre chose ? Si vous le voulez bien, envoyez-moi un livre sur les grilles au niveau des saucisses uniquement.

Je ne sais pas pour le niveau de la saucisse, comme on dit riche.

Le regroupement et la classification sont les tâches que les réseaux accomplissent le mieux.

L'approximation est pire, mais c'est correct aussi, mais avec l'extrapolation en général, c'est serré. Tout dépend cependant de la mise en œuvre.

Dossiers :
 
Urain:

Je ne sais pas pour le niveau de la saucisse, comme on dit.

Le regroupement et la classification sont les tâches que les réseaux accomplissent le mieux.

L'approximation est pire, mais elle est également acceptable, mais l'extrapolation est une question difficile. Tout dépend cependant de la mise en œuvre.

Merci beaucoup, je vais aller mâcher le granit.
 
yu-sha:
...

l'apprentissage est un processus externe, extérieur au réseau lui-même

...

Ensuite, pour être complet, l'apprentissage n'est pas seulement un processus externe mais aussi un initié par nature, car il a souvent accès non seulement aux poids mais aussi aux données de calcul intermédiaires, ainsi qu'aux propriétés de la topologie.

Et c'est en raison de cette propriété du processus d'apprentissage qu'il est souvent attribué aux processus internes du réseau.

Ils arrivent à la conclusion que le réseau doit exposer ses informations internes au processus d'apprentissage, tout en les cachant totalement à l'environnement.

Dans une telle situation, il est logique d'envelopper le filet lui-même dans une coquille de formation, si nécessaire,

Ainsi, nous avons un objet réseau externe qui possède des méthodes :

  • initialisation
  • flux de travail
  • apprentissage

Une méthode de flux de travail reçoit le filet tel quel, une méthode de formation reçoit le filet enveloppé dans l'enveloppe de formation ; une suite logique de l'encapsulation serait de donner une méthode de filet avec un drapeau de sélection au lieu de deux méthodes de flux de travail et de formation.

 
Urain:

nous avons donc un objet réseau externe qui possède des méthodes :

  • initialisation de
  • exécuter
  • formation

Une méthode de travail obtient le réseau tel quel, une méthode de formation obtient le réseau enveloppé dans une coquille de formation, une extension logique de l'encapsulation serait de donner une méthode de réseau avec un drapeau de sélection au lieu de deux méthodes de travail et de formation.

Dans le cas le plus général, le réseau doit avoir une seule méthode run()

Il effectue le calcul des neurones de sortie et suppose que les entrées ont déjà été initialisées.

Le "professeur" est un objet distinct qui est initialisé avec les paramètres de formation et contrôlé par l'objet de formation.

Vous auriez besoin d'un validateur pour vérifier si vous pouvez enseigner cet objet par cette méthode.

Mais toutes ces choses sont difficiles à formaliser dans le cas général.

C'est pourquoi la conception rigide standard du type Réseau+Fonction+Enseignant peut être développée pour un utilisateur final et ne permettre de définir que certains paramètres, par exemple le nombre de neurones dans la couche.

le réseau doit exposer ses informations internes au processus d'apprentissage tout en les cachant à l'environnement.

Je suis d'accord. Certaines méthodes de formation, mais pas toutes, nécessitent un accès presque complet à l'intérieur du réseau.

 

yu-sha:

...

Certaines méthodes de formation, mais pas toutes, requièrent un accès presque total aux internes du réseau.

C'est là le problème, certaines méthodes exigent que le réseau soit non seulement exposé, mais aussi correctement structuré pour la méthode.

En d'autres termes, la méthode elle-même a été écrite pour un réseau particulier. Quel est l'intérêt d'implémenter ces méthodes dans un moteur universel ?

C'est mieux de laisser Andrew coder tout ça. Je vois une méthode de formation universelle pour le moteur universel - GA.

Dans le reste, nous avons : une idée du moteur universel pour toute topologie, une idée de la méthode universelle d'initialisation pour toute topologie et GA comme formateur universel de tout cela.

Du côté positif, nous avons une mise en œuvre facile de nouveaux types de neurones, ceux qui sont standard mais pas encore décrits ou non standard.

Une seule méthode de formation est un moins.

Si quelqu'un peut trouver comment y intégrer d'autres méthodes d'entraînement, ce serait génial, mais pour l'instant, c'est comme ça.

 
Urain:

Dans le reste, nous avons : l'idée d'un moteur universel pour toute topologie, l'idée d'une méthode d'initialisation universelle pour toute topologie, et GA comme tuteur universel pour tout cela.

Du côté positif, il est facile d'implémenter de nouveaux types de neurones, ceux qui sont standard mais pas encore décrits ou non standard.

Les inconvénients ne sont qu'une seule méthode de formation.

En réfléchissant de la même manière, je suis arrivé à peu près à la même conclusion)).

Et comme l'AG devient le principal algorithme d'apprentissage, il y a un besoin urgent de calcul parallèle.

C'est là que les GPU entrent en jeu.

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

En pensant de la même manière, je suis arrivé à peu près à la même conclusion ;))

Et comme l'AG devient le principal algorithme d'apprentissage, il existe un besoin urgent de calcul parallèle.

C'est là que les GPU interviennent

Si vous avez lu attentivement ce que j'ai écrit précédemment, vous avez remarqué que dans mon modèle de réseau universel, le traitement lui-même est divisé en couches, donc les neurones sont combinés en couches non pas formellement (par propriété), mais réellement (une couche a une mémoire et un neurone n'en a pas, un neurone reste juste une entité informationnelle fournissant des informations à une couche sur où et pourquoi). Ainsi, le parallélisme est défini par la structure même du moteur (les informations à l'intérieur de la couche sont traitées en parallèle). J'ai déjà fait des NS entraînés par GA et la plus grande perte de productivité était exactement sur le calcul des NS (surtout sur les grands réseaux). Et en tant qu'annonceur, je peux dire que pour l'UGA proposée par joo , apprendre la NS est un jeu d'enfant.

Mais si nous parvenons à paralléliser aussi les calculs de FF (et NS pour GA fait partie de FF), alors je ne suis que pour. Bien que je ne pense pas que ce sera une tâche simple, les actions simples sont effectuées par couches, tandis que le calcul du FF peut impliquer une séquence assez complexe.