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

 
HideYourRichess писал(а) >>

Toute ligne droite peut être inscrite dans un tel cercle, à n'importe quel angle par rapport à l'horizontale.

Eh bien, eh bien !

Comme vous pouvez le voir, pas n'importe quel angle ! - C'est le bon angle...

 
Neutron >> :

Maintenant ça y ressemble !

Où se trouve le nuage de formation promis ?

Mettez une grille d'échelle sur le graphique et dites-moi quelle est votre tangente de l'angle d'inclinaison pour la ligne droite.

Il s'agit des images obtenues à partir de la première différence du sinus à cinq membres par X et de la prédiction de la grille avec des poids aléatoires (réglage initial des poids +/-1) par Y. Le reste est encore en cours de réalisation, à venir

 
Neutron >> :

Eh bien, eh bien !

Comme vous pouvez le constater, pas n'importe qui ! - C'est la bonne...

>> Ouais, ouais, ouais.

 

Voilà, c'est fait. Il ne manque qu'un échantillon d'entraînement ici, car l'échantillon d'entraînement est le vecteur X. Vous pouvez donc, bien sûr, le tracer sur le graphique, mais il s'agira d'une ligne droite coupant le graphique à l'angle de 45". Le neurone a été entraîné par trois échantillons :

1. Première différence simple 5sin - vecteur Y_simpl, couleur verte (vison correspondant)

2. Hypertangente de la première différence 5sin - bleu

3. entrées binaires (par 5sin) - violet


Les tangentes des lignes droites sont comme ceci :



Et pourtant, quelque chose ne va pas. Ou je ne comprends pas la tâche que vous m'avez confiée.

Ce neurone est entraîné sur chaque nouveau vecteur de données X, ce même vecteur est utilisé comme axe des abscisses du graphique. Si vous l'affichez sur l'ordonnée... ? Pourquoi ?

En outre, j'ai remarqué que si la feuille de calcul contenant les mêmes données est recalculée, les résultats seront différents. C'est censé être comme ça ? C'est-à-dire que les résultats sont très dépendants des paramètres initiaux des poids.

Eh bien, lorsque je n'ai pas entraîné le neurone à chaque étape, mais que je l'ai simplement fait tourner sur un vecteur de données avec des poids initiaux choisis au hasard, j'ai obtenu des dessins avec un nuage au milieu (parfois).

Maintenant, vous obtenez ce que vous voyez. Voici une autre photo.


Juste au cas où, je joins la liste de Matkad.

Dossiers :
neyron.rar  114 kb
 
paralocus писал(а) >>

Eh bien, vous l'avez. Il n'y a pas d'échantillon d'entraînement ici, car l'échantillon d'entraînement est le vecteur X. Vous pouvez donc, bien sûr, le tracer sur le graphique, mais il s'agira d'une ligne droite traversant le graphique à un angle de 45".

Vous disposez d'un vecteur d'apprentissage de longueur n sur lequel le SN s'entraîne à reconnaître un seul échantillon, n+1. Nous disposons d'un ensemble de statistiques N>100, qui forme un ensemble d'entraînement (plus exactement, un ensemble d'exemples de la façon dont NS a été entraîné) de longueur N échantillons (il ne s'agit pas d'un vecteur d'entraînement, mais d'un ensemble d'échantillons, obtenu à partir de la série sinusale disponible, en la décalant d'un échantillon vers la droite à chaque fois jusqu'à N). Ainsi, nous disposons de N valeurs pour lesquelles le SN a été formé (il s'agit de n+1 éléments des vecteurs de formation) et nous disposons également de N valeurs sur la façon dont il les a apprises. En les plaçant respectivement sur les axes des abscisses et des ordonnées, on obtient le nuage qui caractérise le processus d'apprentissage. Il est clair que ce nuage n'aura pas une pente de 45 degrés. Cela découle du fait que le nombre de poids de la maille - w est beaucoup plus petit que la longueur optimale du vecteur d'apprentissage P=w*w/d et, par conséquent, le système d'équations que NS résout pour trouver les poids optimaux est surdéterminé et a un nombre infini de solutions. Par conséquent, on cherche une approximation qui soit optimale au sens où elle minimise l'erreur d'apprentissage au carré pour toutes les équations. Si la longueur du vecteur d'apprentissage était égale au nombre de poids, on pourrait s'attendre à un apprentissage à 100 % du réseau, mais ce n'est pas optimal du point de vue de la capacité du réseau à généraliser les connaissances accumulées dans le futur et cela conduit à des erreurs grandioses sur l'échantillon de test. Une grille correctement entraînée montrera l'angle de pente de l'échantillon d'entraînement proche de l'angle de pente de l'échantillon de test sur le diagramme de nuage. À l'inverse, un réseau surentraîné présentera un angle de 45 degrés pour le nuage d'apprentissage avec une variance négligeable et un angle nul avec une variance infinie pour le nuage de test. C'est exactement le résultat que vous obtenez si vous essayez de résoudre un système d'équations algébriques linéaires pour un seul perseptron avec précision. J'en ai déjà parlé plus haut. C'est la raison pour laquelle il est très pratique d'utiliser un diagramme de nuage lors du débogage d'un réseau (ce que vous ne pouvez pas faire dans MQL).

Le fait que votre angle de pente change d'une expérience à l'autre et devient même négatif, indique clairement que votre fille vit sa vie secrète et n'est pas entraînable. Vous avez besoin d'une lobotomie :-)

P.S. Sauvegardez les fichiers cdjb avec l'extension *.mcd pour MathCad 2001i, sinon je ne peux pas les lire.

 
Ici, enregistré comme *.mcd pour Matcad12 et 11. Je n'ai pas d'autres options pour les fichiers mcd.
Dossiers :
mathcad.rar  40 kb
 

Je vais regarder maintenant.

Au fait, voici comment ma copine calcule la série des 5 sinus :

C'est un NS à deux couches avec deux entrées valides (sans compter le biais constant), k=2, qui a 2 neurones activés non linéaires dans la couche cachée et un neurone linéaire (sans fonction d'activation) en sortie. L'échantillon de formation est représenté en rouge et l'échantillon de test (prédictions) est représenté en bleu. Ré-entraînement sur chaque échantillon. Les statistiques portent sur 200 expériences. Les tangentes des angles sont données dans le champ du tracé.

 

Il y a beaucoup de choses dans votre code que je n'ai pas comprises par pure bonté d'âme. Mais d'après ce que j'ai pu comprendre, ce qui suit ne correspond pas à mes idées :

Vous devriez avoir exactement la somme cumulée sur toutes les époques d'apprentissage P par les carrés des déviations S[k] . Ce que je vois, c'est juste une redésignation des variables. Il n'y a pas d'initialisation initiale des poids avec des nombres aléatoires.

Je ne comprends toujours pas quelle sous-routine vous avez introduite dans method() et ranif() et où la chercher ?

J'ai simplifié un peu votre code (voir fichier).

Dossiers :
modif1_4.zip  16 kb
 
Je viens juste d'arriver à l'ordinateur. C'est le mauvais fichier pour vous... dans la ruée du matin pour l'attacher. Je vais maintenant le commenter et afficher ranif() - c'est une fonction intégrée de Matcad - elle renvoie un vecteur de longueur spécifiée dans le premier paramètre avec des nombres aléatoires uniformément distribués dans la plage comprise entre les deuxième et troisième paramètres.
 

Commentaires approfondis, correction de quelques erreurs en cours de route.

C'est ce qu'il dessine :


Je joins le fichier en trois formats 11, 12 et 13 (*.xcmd)

Maintenant, je regarde vos corrections... En fait, j'aurais dû regarder les corrections avant de commenter... - :)

Je pense à ce que tu as écrit deux posts plus haut. L'essentiel pour moi est de comprendre pour que l'"image" dans ma tête se forme, ensuite je ferai tout.

Jusqu'à présent, cette image s'est avérée ne pas être tout à fait correcte - j'ai mal compris l'expression "apprendre en faisant", et il n'y a pas encore de nouvelle image.

Dossiers :
neyron_1.rar  197 kb