L'étiquette du marché ou les bonnes manières dans un champ de mines - page 42

 
Neutron >> :

Matcad vous permet de visualiser le processus de comptage à chaque étape. Expérimentation.

Je peux te parler de ça ? Je ne dispose de graphiques que lorsque tous les calculs sont terminés.

 

Moi aussi :-(

Ce que je voulais dire, c'est que vous pouvez afficher toute information qui vous intéresse et la présenter sous une forme appropriée pour une analyse ultérieure.

 
Vous avez écrit quelque part que tout au long du vecteur d'apprentissage, le réseau apprend à reconnaître uniquement la n+1ème référence. Cela doit-il être compris comme signifiant que pendant N époques, la position de la donnée d'apprentissage ne bouge pas ? En fait, je l'ai fait (dans cette liste où il y avait un tas de fonctions différentes), c'est-à-dire que tout au long de l'erreur vectorielle était calculée comme TEST-OUT, où TEST était le n+1ème échantillon. Maintenant, dans cette implémentation, TEST est le compte qui suit la dernière (plus grande) entrée. C'est-à-dire qu'il est décalé dans tout le secteur de d+1ème à n+1ème. Pourrait-il y avoir une erreur ici ?
 

Attendez une minute.

Nous fournissons un vecteur de données de longueur d à l'entrée de la NS, où d est le nombre d'entrées d'information de la grille (sans compter le décalage). À la SORTIE de la grille, pour l'entraîner, nous introduisons d+1 comptes. Les poids sont aléatoires à cette étape. A cette étape, nous avons obtenu un delta pour la correction de chaque vecteur. Retenez-le (ne corrigez rien). Déplacez-vous d'une mesure et répétez la procédure. Ajoutez la correction et ses carrés séparément. Répétez la procédure trois fois (sans correction des poids). Enfin, la première fois que nous corrigeons tous les poids, il s'agit de la PREMIÈRE époque d'apprentissage. Maintenant, recommencez avec les mêmes données, mais avec les pondérations déjà trouvées. A la fin des poids corrects, il s'agit de la DEUXIÈME époque d'apprentissage. Faites-le 100 fois (par exemple), ce qui fait 100 époques d'entraînement. C'est tout. Le filet est prêt à faire une prédiction. Le vecteur de données complet avec le dernier comptage le plus récent lui est fourni et nous recevons la prévision. Après le comptage réel (et non prédit), réentraînez le réseau à nouveau, avec une randomisation des poids.

 
Alors il n'y a pas d'erreur.
 

Discussion intéressante :) Neutron, au fait, tu n'as toujours pas répondu à ma question sur les poids de départ, finalement ? Vous n'avez parlé que de la façon dont vous recycler le filet. Mais même sans cela, si vous réentraînez le filet au moins une fois, il présentera une erreur et même une erreur importante. Je parle de mon expérience avec le backprop :). En fait, seule cette question m'intéresse, tout le reste de la technique de la grille n'est pas important. Les comités de réseaux, comment les regardez-vous, et sont-ils nécessaires ? Peut-être est-il possible d'ajuster les poids au départ, de sorte que la grille soit proche du minimum global au début de la formation, de sorte que les comités ne soient pas nécessaires ?

 
paralocus писал(а) >>
Alors il n'y a pas d'erreur.

Au fur et à mesure que je passe d'une époque à l'autre, je pousse vers le haut chaque poids avec un wo tel un "push-up" :

Cela empêche les poids de glisser dans la zone de saturation et les maintient dans une fourchette de +/-5 pendant l'entraînement.

Registred a écrit >>

Neutron, au fait, tu n'as toujours pas répondu à ma question sur les poids initiaux ? Vous n'avez parlé que de la façon dont vous recycler le filet. Mais même sans cela, si vous réentraînez le filet au moins une fois, il présentera une erreur et même une erreur importante. Je parle de mon expérience avec le backprop :). En fait, seule cette question m'intéresse, tout le reste de la technique de la grille n'est pas important. Les comités de réseaux, comment les regardez-vous, et sont-ils nécessaires ? Peut-être pouvez-vous d'une manière ou d'une autre modifier les poids au départ, de sorte que le réseau soit proche du minimum global au début de la formation, de sorte que les comités ne soient pas nécessaires ?

Je randomise les poids initiaux avec une valeur aléatoire distribuée sur une tablette dans l'intervalle +/-1. Je fais ça à chaque comptage. Le ré-entraînement de la grille à chaque étape trouve en moyenne exactement le minimum global, ce qui constitue un avantage du ré-entraînement à chaque étape, par rapport à une grille entraînée une fois pour toutes. Il peut accidentellement toucher un trou local à cet endroit et toutes ses prédictions seront inadéquates. Dans ce cas, il est vraiment important de chercher des moyens d'optimiser le point de départ des balances. Je n'ai pas résolu ce problème.

Quant aux filets d'engagement, c'est une chose utile, mais qui demande beaucoup de ressources. Vous pouvez montrer que le simple fait d'augmenter le nombre de neurones dans une couche cachée est par essence un commit, mais plus gourmand en ressources que la version classique, mais plus puissant en raison de la non-linéarité intégrée des membres du commit. C'est là que vous devez expérimenter.

 
Neutron >> :

Au fur et à mesure que je passe d'une époque à l'autre, je pousse vers le haut chaque poids avec un wo tel un "push-up" :

Cela permet d'éviter que les poids ne s'étendent dans la zone de saturation et de les maintenir dans une fourchette de +/-5 pendant l'apprentissage.

Je comprime simplement l'intervalle en normalisant non pas de [-1;1], mais de [-0.9;0.9], l'effet est le même, pas de saturation. Je veux dire un peu différemment, les coefficients de pondération initiaux dans le processus d'ajustement des poids peuvent simplement ne pas atteindre les valeurs optimales en raison de la soi-disant crédulité de la fonction. J'ai du mal avec ça, pour être honnête. Et comme vous n'avez probablement pas non plus résolu ce problème, il est difficile d'obtenir quelque chose de valable sur le marché avec un backprop, même si la base de données est bonne pour la modélisation.

 
Neutron >> :

Je randomise les poids initiaux avec une valeur aléatoire distribuée sur une plage de rayons de +/-1. Je fais ça à chaque compte à rebours. La grille, qui se réentraîne à chaque étape, trouve en moyenne exactement le minimum global, ce qui constitue un avantage du réentraînement à chaque étape, par rapport à la grille entraînée une fois pour toutes. Il peut accidentellement toucher un trou local à cet endroit et toutes ses prédictions seront inadéquates. Dans ce cas, il est vraiment important de chercher des moyens d'optimiser le point de départ des balances. Je n'ai pas résolu ce problème.

Quant aux filets d'engagement, c'est une chose utile, mais qui demande beaucoup de ressources. Nous pouvons montrer que le simple fait d'augmenter le nombre de neurones dans une couche cachée est par essence un commit, plus gourmand en ressources que la version classique, mais plus puissant en raison de la non-linéarité intégrée des membres du commit. Vous devez expérimenter ici.

C'est la chose qui gâche tout :). D'ailleurs, d'après mes observations, la meilleure randomisation des poids qui apprend rapidement le maillage est dans l'intervalle [-0.07 ; +0.07]. Je ne sais pas pourquoi c'est le cas :)

 
registred писал(а) >>

Je comprime simplement l'intervalle en normalisant non pas de [-1;1], mais de [-0.9;0.9], l'effet est le même, il n'y a pas de saturation. Je veux dire un peu différemment, les coefficients de pondération initiaux dans le processus d'ajustement des poids peuvent simplement ne pas atteindre les valeurs optimales en raison de la soi-disant crédulité de la fonction. J'ai du mal avec ça, pour être honnête. Et vous n'avez probablement pas résolu ce problème non plus, c'est pourquoi il est difficile d'obtenir quelque chose de valable sur le marché avec le backprop, même si la base de preuve est bonne pour la modélisation.

Dieu s'occupera du bon gars ! La procédure de rétropropagation n'est pas compliquée, et l'apprentissage NS n'en souffre pas - c'est une méthode efficace.

Quant au fait de ne pas atteindre les valeurs optimales, c'est du pur bluff pour nos BP. Je comprends si vous prévoyez une onde sinusoïdale ! - Alors oui, il existe des valeurs optimales. Mais qu'en est-il de ceux qui sont dans l'agitation du marché ? Maintenant, l'optimum est là, et à l'étape suivante (que vous prédisez), il est là... et vous l'avez cherché "ici" de toutes vos forces. En bref, il n'y a pas de problème précis de localisation, et il est résolu de manière satisfaisante par un réentraînement à chaque étape.