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

 

OK, je crois que j'ai compris quelle était mon erreur. En fait, j'ai compris que la longueur du vecteur d'apprentissage est égale au nombre de poids ! Parce que j'accumule les corrections en comparant la sortie d'un neurone à chaque échantillon du vecteur d'apprentissage, alors que je n'ai besoin de la comparer qu'au n+1ème échantillon. Je suis en train d'écrire un nouveau code.

C'est pourquoi les graphiques sont si anormaux.

 

Tenez, regardez :


Le bleu est l'échantillon d'entraînement, le rouge est l'échantillon de test. Les valeurs de la tangente se trouvent dans le coin supérieur gauche de l'image.

Bizarrement, j'ai dû supprimer complètement l'initialisation initiale des balances. Ce n'est qu'alors que les résultats sont devenus reproductibles. Il y a encore quelques questions, mais j'ai terminé maintenant... - :)

Je joins la liste. Désolé, pas encore de commentaires, mais c'est fait très simplement, sans un tas de fonctions différentes - tout dans une procédure, sauf les tangentes et mnc.

Dossiers :
neyrona.rar  132 kb
 

Il me semble que vous avez une logique très compliquée de numérotation des vecteurs luuch...

Il se peut que l'erreur soit une confusion triviale d'indices, ou que vous ne remettiez à zéro les poids qu'une seule fois pendant toute la procédure de l'ensemble statistique(W[i]<-0) :

Notez que votre vecteur D, qui est l'entrée du NS, n'est pas recalculé avec l'ensemble des stats (indice i). Peut-être que je me trompe, parce que je ne suis pas tout à fait au courant. Il était plus facile pour moi d'entrer une numérotation consécutive dans votre code, et c'est ce que j'ai obtenu :

Maintenant, votre fille sent la randomisation initiale des poids et apprend de manière adéquate (les deux lignes passent par l'origine). Le rouge est l'échantillon de formation, le bleu est l'examen. Un fichier contenant la version modifiée est joint ci-dessous.

Dossiers :
modif.zip  16 kb
 

Faire connaissance...

Dis-moi, Sergey, pourquoi ton neurone de sortie à deux couches (et tu le dis depuis le début) n'a pas de fonction d'activation ? Et alors, comment le produit dérivé changerait-il ? C'est-à-dire qu'il était (pour th) (1-OUT^2)

et devient (1-OUT) ?

P.S. Merci pour votre aide

 

Aha ! Je comprends enfin comment cette chose fonctionne. Les entrées uniques ne sont-elles pas nécessaires uniquement pour la période d'apprentissage, et ensuite elles sont utilisées comme toutes les autres - pour les données ?

Je n'avais même pas pensé à une telle chose ! De plus, les entrées y sont toutes simples - pas d'hypertangles. Est-ce parce que BP est une fonction régulière, ou juste pour l'exemple ?

Et une autre question : si la fille est légèrement sous-entraînée - donnez-lui seulement 5-7 époques - alors les tangentes des deux mncs seront supérieures à l'unité, cela n'indique-t-il pas que la fille regarde dans le futur (je ne parle pas du sinus) ?

 

On peut montrer rigoureusement (en citant les travaux des mathématiciens) que pour un SN à une seule couche, l'activation de la sortie par une fonction non linéaire n'ajoute pas à sa puissance de calcul par rapport à la sortie linéaire. Par conséquent, un seul neurone avec un FA non linéaire est un non-sens.

Pour les NS bicouches, l'activation du neurone de sortie n'ajoute pas de puissance de calcul (cette architecture a déjà une puissance de calcul maximale ou égale à toutes les architectures possibles - 3, 4, etc.), donc l'activation du neurone de sortie par l'hypertangente est raisonnable si la sortie est interprétée comme une probabilité de prédiction précise.

Dans le cas d'une sortie linéaire, la dérivée n'est pas (1-OUT) mais simplement 1 - c'est la dérivée de la fonction linéaire y(x)=1*x.

Quant aux entrées individuelles, elles sont bien sûr utilisées aussi bien pendant la formation que pendant le fonctionnement. Bravo pour l'avoir repéré ! J'ai raté ce bug. La façon correcte de représenter un neurone est la suivante :

W[0] est un poids qui est toujours alimenté par 1. Dans le cas d'un seul neurone, l'effet de l'utilisation d'un décalage n'est pas très perceptible. Bien qu'il ne soit pas difficile de simuler une situation où il jouerait un rôle important pour accélérer le processus d'apprentissage, dans ce cas également.

если девушку слегка недообучить - ну дать её всего 5-7 эпох - то тангенсы обеих мнк будут больше единицы, не говорит ли это о том, что девушка заглядывает в будущее(я не об синусе)?

Non, cela indique seulement une faible quantité de matériel statistique et un mauvais apprentissage. Jugez-en par vous-même : vous ne pouvez pas connaître une chose mieux qu'elle ne l'est réellement. Ce cas limite correspond à tg()=1 et ne peut être supérieur à 1 qu'en raison de la variation statistique des données.

 
Neutron >> :

...citer les travaux de mathématiciens


- :) J'espère que vous réalisez à quel point c'est inutile... du moins dans mon cas.

Je vais avoir une autre chance avec ce neurone. J'ai besoin de tout régler dans ma tête, et je veux décomposer le code en blocs simples, et demain j'essaierai d'ajouter une autre couche à ma petite amie. Mais j'ai une question un peu bête : lors de la réécriture du code de Matkad à MQL, comment vérifier ce qui a été fait ? Vous ne pouvez pas le réécrire directement - Matcad est un environnement différent et sa logique de programme n'est pas la même que dans MQL.

 

C'est là que ça se complique !

Par exemple, je sors la tangente de la pente (dans le cas d'entrées valides) comme une caractéristique intégrale de la performance de NS ou le pourcentage de signes correctement devinés (dans le cas de binaires) et je la compare avec celles de Matcad. Cependant, jusqu'à ce point, vous devez peripisce NS-ka par la norme MCL, c'est quand le compte zéro est dernier et plus en profondeur (dans Matkadeck vice versa). En outre, il est nécessaire de vérifier l'exactitude de NS sur le processus viner, c'est-à-dire lorsque BP est obtenu par intégration d'une variable aléatoire. Ici, votre fille devrait obtenir un "D" de fer aux examens, et cela vous dira qu'elle ne triche pas, c'est-à-dire que la tangente de l'angle de pente doit tendre vers zéro avec un nombre d'expériences tendant vers l'infini comme 1/n.

C'est le générateur d'une série de Wiener :

 

C'est sur le vinaire :


 

Un instant : il ne reste rien de mon dernier graphique, où j'allais chercher la cause du "miracle" - iFractals m'a encore trompé sans vergogne. Dès que j'ai écrit mes propres iFractals, tout s'est éclairci, c'est-à-dire que le miracle a disparu :)

Bonne chance, chers collègues