Réseaux de neurones
ayant des troubles d'apprentissage en arrière par la propagation de l'erreur
Colin Fahey

Un réseau de neurones biologiques
1. Logiciels
2. Introduction
Ce document décrit comment mettre en place un réseau de neurones artificiels, qui est capable d'être formés pour reconnaître les modes.
Ce document décrit un modèle de réseau de neurones apprend que par un algorithme qui utilise « la propagation de l'erreur en arrière. »
Ce document comprend des démonstrations de base de l'apprentissage par « l'arrière la propagation de l'erreur. » Ce document a un lien de code informatique. Le code comprend les manifestations. Le code peut être utilisé pour créer des réseaux neuronaux complexes. Toutefois, le code est uniquement à des fins de démonstration. Une autre application pourrait réduire l'utilisation de la mémoire et pourrait augmenter la vitesse.
3. Alternative à l'apprentissage par la propagation de l'erreur en arrière
Ce document décrit un modèle de réseau de neurones qui apprend par un algorithme nommé « en arrière la propagation de l'erreur. » Cet algorithme peut exiger un très long temps d'apprendre différentes leçons. Aussi, cet algorithme au hasard ne parviennent pas à apprendre des leçons différentes en raison de l'état initial aléatoire du réseau de neurones avant la formation.
L'apprentissage en « associant activement les intrants » est une alternative importante à l'apprentissage par « la propagation de l'erreur en arrière. » L'apprentissage actif en associant apports simplement associés intrants qui sont actives simultanément. Cet apprentissage peut être rapide et fiable. Toutefois, pour de nombreuses raisons pratiques, il n'existe pas de moyen évident d'utiliser un réseau de neurones qui apprend par association, alors qu'il est un moyen évident d'utiliser un réseau qui apprend par la propagation de l'erreur en arrière.
Certains réseaux de neurones biologiques sont connus pour apprendre par l'association d'actifs intrants. Précédent propagation de l'erreur n'a pas été observées dans toute réseau de neurones biologiques.
Ce document décrit les utilisations intéressantes pour un réseau de neurones apprend que par la propagation de l'erreur en arrière. Toutefois, l'apprentissage par association est une alternative très important algorithme d'apprentissage. La conception d'un réseau de neurones qui apprend par l'association pour résoudre un problème particulier pourrait être plus difficile que d'autres desgining un réseau de neurones apprend que par la propagation de l'erreur en arrière, mais les systèmes biologiques apprendre par association, et la capacité d'apprentissage des systèmes biologiques est évidente.
4. Neurone biologique
4.1 Neuron cellule

Un neurone biologique (type « multipolaire, » ~4 um corps cellulaire)
Un neurone est le type de cellule qui a la capacité de recevoir et de transmettre des signaux nerveux.
Les neurones sont à la base des systèmes nerveux, a trouvé chez les animaux, les oiseaux, les poissons et les insectes.
Cerveaux de la mémoire et de logique et simple réflexe de systèmes, sont tous deux fondés sur les modalités de neurones.
Les neurones sont également utilisés pour transmettre des signaux sur de longues distances en une créature du corps, tels que des capteurs au cerveau, ou du cerveau aux muscles.
Le comportement d'un neurone biologique est très complexe, mais la description simplifiée suivante rend compte des principe de base:
Le neurone accumule des signaux reçus en provenance d'autres neurones, et si le signal d'accumulation totale dépasse un seuil, le neurone transmet ses propres signaux à d'autres neurones.
4.2 Neuron parties

Parties d'un neurone biologique
|
Soma
|
Le corps cellulaire d'un neurone
|
|
Dendrites
|
Fibres chimiques récepteurs (intrants) qui s'étendent du corps cellulaire d'un neurone. Un neurone généralement depuis de nombreuses dendrites, et les dendrites ont souvent de nombreuses branches.
|
|
Axon
|
Une fibre chimique avec les émetteurs (produits) à son point limite qui s'étend du corps cellulaire du neurone. Un neurone possède un seul axone, et l'axone est généralement très petit nombre de branches.
|
|
Synapse
|
Une configuration telle que l'axone d'un neurone et les dendrites d'un autre neurone sont séparés par un très faible écart. Dans une telle configuration, les produits chimiques émis par un axone d'un neurone traverser la synapse et sont reçus par le dendrites des autres neurones. C'est ainsi que les neurones influencer d'autres neurones.
|
4.3 Neuron tir
Un neurone accumule des signaux chimiques de ses dendrites, et si le total des substances chimiques accumulation dépasse un seuil dans une période de temps, le neurone « incendies, » l'envoi de son propre signal par l'intermédiaire de son axone.
Certains neurones sont capables de tirer des impulsions de l'ordre de 100 Hz.
Les signaux passant par les neurones des accumulations de (Na) de sodium, de potassium (K), et de chlore (Cl) ions, et un potentiel électrochimique résultant (c'est-à-dire, tension).
La tension de repos et de licenciement (-70 mV) tension (+30 mV) peut être mesurée ou même influencé par les circuits électriques conventionnelles.
Ce qui suit est une tension d'enregistrement d'un rat neurone à tirer sur un taux d'environ 100 Hz lorsqu'un seul moustaches est touché et a tenu de sa position de repos:

Un rat neurone (100 Hz) tir en raison de la tenue d'une moustache.
Bien que l'impulsion est constante, le neurone signal est rapide impulsions.
4.4 Réseaux de neurones
Le cerveau humain a environ 10^11 (100 milliards) des neurones.
Chaque neurone dans le cervelet reçoit la contribution de plus de 10^4 (10000) synapses.
Bien que l'axone et les dendrites d'un neurone se prolongent souvent à seulement quelques micromètres loin du corps cellulaire, certains axones sont de l'ordre de un mètre de longueur.
Un cerveau a neurones relativement court axones regroupés dans des zones ou des groupes.
Un cerveau a également faisceaux de neurones relativement long des axones pour relier des régions séparées par des centimètres.
Ainsi, un réseau hiérarchique des éléments de traitement est formé.
4.5 État du réseau de neurones
Le statut d'un réseau de neurones est à la fois la façon dont les neurones sont connectés et les signaux à tous les synapses.
Il est difficile de savoir combien des informations sur l'état serait perdu si un cerveau était tranquilized à l'inactivité totale d'un montant de temps.
On peut imaginer que l'information soutenue par des signaux se déplaçant à travers le réseau, et non par la connectivité au réseau lui-même, comme les automates cellulaires comme des simulations Conway's « Game of Life », simple Dynamic Random Access Memory (DRAM) puces, et les échos dans une chambre.
4.6 Réseau de neurones d'apprentissage
Classiques d'apprentissage survient lorsque les propriétés de dendrites changement à une synapse à devenir plus ou moins efficace de recevoir des signaux chimiques d'un axone.
Les raisons de ces changements sont complexes, mais le résultat est un neurone qui exige une combinaison de différents apports de Synapse pour déclencher un signal de sortie.
5. Neurone artificiel
5.1 Définition
Un « neurone artificiel » est un algorithme ou un dispositif physique qui met en oeuvre un modèle mathématique inspiré par le comportement de base d'un neurone biologique.
Un neurone accumule des signaux reçus en provenance d'autres neurones ou des intrants (capteurs, par exemple), et si le signal d'accumulation totale dépasse un seuil, le neurone transmet un signal à d'autres neurones ou de produits (par exemple, effecteurs).
Tout modèle mathématique qui intègre l'idée d'accumulation de multiples facteurs et à donner une sortie unique (qui accentue l'intensité relative de la contribution par rapport à certains niveau nominal) peut être utilisé pour la reconnaissance des formes.
Ces modèles peuvent être la base d'un neurone artificiel.
Si l'influence de chaque entrée peut être modifiée, alors le modèle peut appuyer l'apprentissage.
5.2 Fonction d'activation
Une « fonction d'activation » est une fonction mathématique qui convertit les valeurs d'entrée au-dessous d'un particulier à une valeur relativement faible valeur de la production, et convertit les valeurs d'entrée au-dessus d'un particulier à une valeur relativement haute valeur de la production.
Une « fonction d'activation » est utilisé pour convertir la somme pondérée des valeurs d'entrée d'un neurone à une valeur qui représente la sortie du neurone.
« sigmoid » Une fonction est une classe générale de fonctions que bon approche asymptotiquement une limite inférieure pour les valeurs d'entrée approche de l'infini négatif, et approche asymptotiquement une limite supérieure pour les valeurs d'entrée approche de l'infini positif.
L'un des sigmoid fonction est la fonction « logistic sigmoid »:

La fonction « Logistic Sigmoid »: 1 / ( 1 + Exp( -x ) )
Le « logistic sigmoid » fonction peut être utilisée comme une « fonction d'activation » pour un modèle mathématique d'un neurone.
Les mathématiques dérivés de la « logistic sigmoid » peut être calculé comme une formule, ce qui le rend facile à calculer une formule d'apprentissage associés.
5.3 Réseau de neurones d'entrée
Un « réseau de neurones d'entrée » représente une contribution à un réseau de neurones.

Réseau de neurones d'entrée
« Input » est la valeur numérique de l'entrée.
5.4 Réseaux de neurones de sortie
Un « réseau de neurones de sortie » représente une sortie d'un réseau de neurones.

Réseaux de neurones de sortie
« Output » est la valeur numérique de la production.
« Error » est une valeur numérique qui représente la différence entre la valeur de la production et une valeur « Desired »:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
Le « Desired » valeur représente une valeur désirée, ou une valeur idéale, ou une valeur correcte, que le réseau de neurones que devrait produire une sortie en réponse à des facteurs de production.
L'erreur la valeur est calculée et attribuée à « Error » par un algorithme.
L'erreur la valeur de la rétroaction au réseau de neurones.
Le réseau de neurones peut s'adapter à réduire la différence entre ses résultats et les valeurs, c'est-à-dire, les réseaux de neurones peuvent apprendre, et peut ainsi réduire les erreurs.
5.5 Neuron corps
Un « neurone corps » représente le corps d'un neurone, qui accumule les contributions d'entrée, et ajoute un parti pris, et transforme la valeur de la « fonction d'activation » pour produire une valeur de la production.

Neuron corps
« InputAccumulator » est une valeur qui représente l'accumulation de neurones d'entrée de produits dont les liens sont connectés à des neurones corps.
« Bias » est réglable une valeur qui est combiné avec l'accumulation de la valeur de l'apport.
« Output » est une valeur numérique représentant la valeur de sortie du neurone.
La valeur de sortie est calculé en utilisant la formule suivante:
Output = ActivationFunction( Bias + InputAccumulator );
« ErrorAccumulator » est une valeur numérique représentant accumulé erreur.
Étant donné une valeur de sortie du neurone corps, et compte tenu d'une erreur de sortie valeur, la valeur accumulée erreur est ajustée selon la formule suivante:
ErrorAccumulator += Output * (1 - Output) * OutputError;
« Rate » est une valeur qui conditionne notre façon de « Bias » la valeur change en réponse à la « ErrorAccumulator » valeur:
Bias += (-1) * Rate * ErrorAccumulator;
5.6 Neuron lien
Un « neurone lien » représente un lien entre:
(1) une contribution du réseau de neurones d'entrée et un neurone d'un corps;
ou,
(2) une sortie d'un neurone corps et une entrée d'un autre neurone corps;
ou,
(3) une sortie d'un neurone et un organe de sortie du réseau de neurones.

Neuron lien
« Input » est un cache de la contribution au lien.
« Weight » est une valeur ajustable qui conditionne notre façon de signal d'erreur des valeurs et des valeurs propager à travers le lien.
« Output » est un cache de la sortie du lien.
La valeur est calculée en utilisant la formule suivante:
Output = Weight * Input;
« Error » est un cache d'erreur du lien.
« WeightedError » est un cache de l'erreur du lien, pondérée par le facteur de pondération:
WeightedError = Weight * Error;
« Rate » est une valeur qui conditionne notre façon de « Weight » la valeur change en réponse à la « Error » valeur et la valeur « Input ».
Au cours de l'apprentissage de réseaux de neurones, « Weight » la valeur est réglée de la manière suivante:
Weight += (-1) * Rate * Input * Error;
5.7 Réseaux de neurones
Un « réseau de neurones » contient les entrées, les sorties, neurones organes, et des liens.
L'image suivante montre un réseau de neurones simple, avec deux entrées et deux organismes de neurones dans une première couche, et un seul neurone dans une deuxième couche, et une sortie.

Exemple d'un réseau de neurones
Au cours d'une simulation d'un réseau de neurones, les valeurs d'entrée propager à travers des liens et des organismes de neurones, et finalement arriver à des produits.

Exemple de transmettre la propagation dans un réseau de neurones
Pendant la formation, l'erreur valeurs sont fournies à la sortie, et ces erreurs se propagent vers l'arrière par l'intermédiaire du réseau de neurones, entraînant la modification des pondérations et les préjugés dans les organes de neurones et des liens.

Exemple arrière de la propagation de l'erreur dans un réseau de neurones
5.8 Simulation de Réseaux de neurones
Définition:
« Réseau de simulation » est la procédure utilisée pour propager des intrants réseau à travers les liens et les organismes de neurones jusqu'à la sortie réseau.
Réseau de simulation implique la simulation de tous ses liens et les organes de neurones.
Simulations sans boucles ou de temps:
Il existe de nombreuses configurations de réseau de boucles.
Il existe de nombreux modèles de neurones qui dépendent de l'heure.
Mais quelques-unes des applications les plus communes de neurones artificiels impliquer ni boucles, ni temps.
Ce qui suit est un modèle mathématique d'un neurone organisme:
Output = ActivationFunction( Bias + InputAccumulator );
Avec ce modèle de neurone, et un réseau sans « boucles, » il suffit de commencer la apports extérieurs, calculer résultats de la première couche de neurones, et la fourniture de ces produits comme des apports à la couche suivante, pour calculer les résultats de cette couche, et continuer à travers couches de jusqu'à ce que les neurones résultats finaux sont calculés.
Boucles:
Un réseau peut avoir des connexions en forme de boucles (ou « cycles). »
Par exemple, la sortie d'un neurone peut être connecté directement à une entrée de ce même neurone, « d'accrochage. »
Un autre exemple est la sortie du neurone # 1 étant connecté à l'entrée du neurone n ° 2, et la sortie du neurone n ° 2 est connecté à l'entrée de neurone # 1.
Si vous pouvez commencer par un certain moment dans un réseau et de tracer un chemin à travers les neurones et les connexions, l'obéissance à la manière d'un flux des signaux, et arriver finalement à ce même point de départ, puis le chemin d'accès est une boucle.
Boucles d'introduire la possibilité intéressante de signaux circulant dans le réseau pour une durée indéterminée de temps.
Certains modèles simples supposer qu'il prend un montant spécifique de temps pour les signaux à passer à travers les neurones individuels.
Dans ces modèles, les signaux circulent à travers les boucles avec quelques neurones plus vite que les signaux diffuse par boucles avec de nombreux neurones.
Un neurone connecté à lui-même aura le plus rapide du signal de circulation.
Si un neurone a X une entrée, un poids W, un parti pris B, et un non-Y de production négatif (par exemple, 0.0 -> 1.0), alors nous pouvons former un oscillateur simplement par la mise en W = (-8) et B = +4 et de la connexion de Y à X;
chaque fois que nous simulons le neurone, le signal sera toggled face à la situation.
Un réseau avec des boucles peut être occupé avec l'activité même s'il n'accepte pas les signaux externes (stimuli) comme intrants.
Les automates cellulaires règles de Conway's « Game of Life » pourraient être mises en oeuvre dans un réseau de neurones, qui vous donne une petite touche de la diversité d'activité qui peut se produire dans un réseau de neurones avec boucles.
Finite-(FSM) état des machines, des oscillateurs, la mémoire volatile (par opposition à l'apprentissage par l'évolution des modes de poids), sont rendues possibles par une boucle.
Si un réseau a boucles, nous ne pouvons pas mettre à jour tout résultat jusqu'à ce que nous calculer toutes les sorties, ce qui nous besoin d'un tampon pour stocker les résultats calculés jusqu'à ce que nous calculer toutes les sorties, et nous pourrons alors engager les nouvelles valeurs de sortie aux neurones dans le réseau.
Toute méthode que les mises à jour produits dans le réseau actuel de manière progressive, au lieu d'un tous-at-once, introduit une commande arbitraire dans le temps qui mène au chaos.
Physique des simulations impliquant des entités de pair, comme les planètes en orbite autour d'une étoile avec les forces gravitationnelle mutuelle entre tous les organes, nécessitent le même type d'approche: calculer le montant net des forces sur tous les organes avant la mise à jour toute la vitesse et de position.
Time-dépendance:
Une simple simulation de réseau implique généralement la cause des intrants des résultats souhaités après un unique pas de temps de simulation.
Dans une telle simulation, nous pensons en termes de « nombre d'itérations » plutôt que de « temps en secondes. »
Il n'ya pas de correspondance entre les itérations et une échelle de temps.
Un système pourrait être conçu pour faire un réseau de simulation (itération) seulement lorsque de nouvelles données sont disponibles, ce qui pourrait se produire à intervalles irréguliers de temps.
Toutefois, envisager un modèle mathématique d'un neurone qui tente de simuler les impulsions de sortie aspect d'un neurone biologique.
Les impulsions peut être caractérisé en termes de temps, tels que les impulsions à une fréquence d'impulsions ou dont la courbe s'étend sur un laps de temps.
Nous pouvons avoir d'autres en fonction du temps éléments dans un modèle mathématique d'un neurone, comme un accumulateur d'entrée dont la valeur est des contributions des intrants, mais a une fuite proportionnel à sa valeur actuelle.
En général, on peut trouver un circuit électrique analogie pour les éléments qui obéissent à certaines équations mathématiques, et ainsi on peut considérer un neurone comme un circuit avec des résistances, des condensateurs, et non un amplificateur linéaire.
Tout comme un circuit peut exposition complexes en fonction du temps comportement, la sortie d'un neurone peut être considérée comme une fonction qui dépend de sa contribution et le temps dans une manière compliquée.
5.9 Précédent propagation de l'erreur
Définition:
« Précédent propagation de l'erreur » est une procédure mathématique qui commence avec l'erreur à la sortie d'un réseau de neurones et cette erreur se propage vers l'arrière à travers le réseau de rendement erreur de sortie des valeurs pour tous les neurones dans le réseau.
Précédent propagation de l'erreur formules:
L'erreur valeurs au réseau de neurones résultats sont calculés en utilisant la formule suivante:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
L'erreur accumulation dans un neurone corps est ajustée en fonction de la sortie du neurone corps et l'erreur de sortie (précisé par des liens reliés à l'organisme de neurones).
Chaque erreur de sortie valeur contribue à l'erreur accumulateur de la manière suivante:
ErrorAccumulator += Output * (1 - Output) * OutputError;
Dans un sens, toutes les erreurs de sortie à la couche suivante de fuite vers l'arrière grâce à la contribution des poids et s'accumulent à la sortie d'un neurone dans un niveau précédent.
Cette valeur accumulée est multiplié par une valeur qui est plus grand lorsque la sortie du neurone est plus neutre (le plus « indécis) » et est moins lorsque la sortie du neurone est plus extrêmes (très « certaine). »
Changement de poids et les préjugés changement formules:
La base de l'apprentissage est l'ajustement des pondérations des valeurs et les préjugés dans une tentative de réduire les erreurs de sortie.
« Taux d'apprentissage » est une valeur numérique qui indique en substance comment rapidement un neurone poids ajuste les valeurs et les préjugés à l'erreur en fonction des valeurs.
La formule suivante indique comment modifier le poids d'un neurone à un ensemble particulier de valeurs d'entrée et sa sortie erreur valeur:
Weight += (-1) * Rate * Input * Error;
La formule suivante indique comment modifier le biais d'un neurone dans le contexte actuel erreur de sortie pour le neurone:
Bias += (-1) * Rate * Error;
6. La formation d'un réseau de neurones
6.1 Formation procédure
On peut commencer avec un réseau formé et continuent à réduire la production erreur avec la formation continue, mais un commence souvent par un réseau sans formation.
Avant la formation, choisir au hasard des valeurs pour tous les poids de tous les neurones dans le réseau.
J'ai observé des problèmes quand je valeurs sélectionnées au hasard dans l'intervalle [ -1.0, +1.0 ], et je n'ai pas eu des problèmes lorsque j'ai sélectionné au hasard des valeurs de l'intervalle [ +0.1, +1.0 ].
Je mentionne ces observations, mais ils pourraient être en raison de mes erreurs.
Le but de hasard poids est d'atténuer la possibilité de toute situations pathologiques dans un réseau.
Si tous les neurones dans un réseau a commencé avec le même poids, le réseau n'aurait pas de base pour accroître la différenciation entre les neurones.
J'ai observé que la mise en biais toutes les valeurs à zéro (0.0) est acceptable.
Une session de formation à passer par un ensemble de nombreuses fois, peut-être des centaines ou des milliers de fois.
Pour chaque passage par la formation ensemble, nous considérons que chaque point dans l'ensemble d'apprentissage.
Un ensemble d'article est un ensemble d'intrants, et une série de résultats escomptés.
Nous simulons un réseau, en utilisant l'ensemble des intrants précisés par la formation question.
La simulation des rendements valeurs de sortie.
Nous propager les erreurs en arrière pensée le réseau de neurones pour calculer les erreurs de sortie pour tous les neurones.
Nous mettons à jour tous les poids et les préjugés.
Attention: Un universitaire a examiné le texte que les réseaux neuronaux préconisé en passant par l'ensemble d'apprentissage et seulement résumant le poids des changements et des préjugés.
Après avoir parcouru toute la formation, nous pouvons disposer d'un ensemble de sommes de modification du poids et les préjugés modifications.
Nous prenons ces sommes et de mettre à jour tous les poids et les préjugés.
Ces sommes pourraient être énormes pour les grands ensembles de formation - et le saut dans l'espace-poids serait excessivement grands.
Je pense donc que le divisant par le nombre de points, à obtenir le nombre moyen de changement de poids moyen et valeurs biais modification de valeurs, serait raisonnable.
Il ya quelque chose de séduisant sur un calcul simple changement de poids vecteur qui prend en quelque sorte l'ensemble d'apprentissage à l'examen.
Je ne sais pas si j'ai simplement fait une erreur dans l'application de l'idée, mais je donne presque entièrement sur les réseaux neuronaux en raison de la façon dont les choses ont été mal tourner.
Puis, quand j'ai essayé de le naïf alternative, à savoir faire les mises à jour à chaque formation point, les choses fonctionnaient à la perfection.
Considérant l'ensemble d'apprentissage avant de faire une mise à jour a des avantages et des inconvénients:
Avantage:
Unique de formation articles dans l'ensemble d'erreur avec la plus grande (c'est-à-dire, la mauvaise formation point) s'engage à ne pas faire une grande contribution à la mise à jour, car il sera submergé par l'influence des « bonnes » données;
Inconvénient:
Si N est le nombre d'objets dans votre apprentissage, votre taux de progrès au vecteur poids optimal sera divisé par N.
Ou, pour une distance donnée, vous aurez seulement une fraction de direction des conseils sur la route par rapport à l'approche naïve;
Peut-être que cette technique de travail pour vous, mais essayer le naïf avant de vous abandonner sur les réseaux neuronaux en toute frustration!
6.2 Le fait de ne pas réduire erreur
Formation mai ne parviennent pas à réduire l'erreur globale pour l'ensemble d'apprentissage.
Il est important de détecter un défaut de réduire l'erreur.
La liste suivante décrit les causes de l'échec à réduire les erreurs et les solutions possibles.
Les éléments de la liste sont énumérés en ordre approximatif de probabilité, avec le premier point étant le plus probable.
(1) Le poids combiné a atteint un minimum local de l'erreur de surface, et est « coincé; »
Solution: Commencez une nouvelle simulation avec de nouveaux poids aléatoire.
(2) Le réseau a trop peu de neurones ou les couches pour encoder tous les modèles dans votre apprentissage;
Solution: divertir avec précaution la possibilité d'ajouter des couches ou des neurones.
(3) Un ou plusieurs articles dans votre apprentissage ou en contradiction flagrante est incompatible avec vos autres articles de formation;
Solution: Vérifiez votre jeu de données pour les irrégularités.
Trouver des éléments d'essai qui rapportent le plus d'erreur de votre réseau formé.
Rechercher dans les techniques de modification du poids moyenne sur l'ensemble de données permettra de réduire l'influence d'un mauvais cas.
(4) Le taux d'apprentissage est trop élevé (plus de rien 1.0 est probablement excessif), et les mises à jour toujours l'objectif de dépassement;
Solution: réduire les taux d'apprentissage.
(5) Le taux d'apprentissage est trop faible (inférieur à tout ce 0.01 peut-être trop petit), et le réseau est vraiment convergent sur le poids idéal combinaison - mais il est trop lent;
Solution: Augmenter le taux d'apprentissage.
La formation d'une couche de deux, trois-réseau de neurones en fonction du ou-exclusif (xor) fonction, peuvent, malgré la simplicité de la fonction, ne parviennent pas à converger.
Cela peut être surprenant et frustrant.
Toutefois, la solution est de simplement mettre en lien tous les poids des neurones à de nouvelles valeurs au hasard et ensuite tenter de former le réseau.
Dans le cas d'un réseau de formation en fonction du ou-exclusif (xor) fonction aléatoire poids positifs semblent conduire à la réussite de l'apprentissage à chaque fois, alors que certaines combinaisons de positifs et négatifs poids parfois provoquer la formation de façon spectaculaire à l'échec.
La nécessité de choisir de nouveaux poids initial aléatoire à récupérer d'un manque de convergence est une conséquence malheureuse de l'ensemble de la procédure d'apprentissage.
La procédure d'apprentissage est essentiellement la recherche d'un minimum en descente raide sur une surface, et le potentiel de la présence d'un « minimum local » dans lequel la recherche peut être pris au piège.
6.3 Erreur globale de formation
Dans l'ensemble, une erreur de réseau peut être caractérisée par la racine carrée de la moyenne des carrés des erreurs, ou « racine carrée moyenne » (RMS).
L'erreur à tout réseau spécifique de sortie est donnée par la formule suivante:
Error = (Output - Desired);
La somme des carrés des erreurs relatives à un point unique de formation est donnée par la formule suivante:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
La somme des carrés des erreurs pour l'ensemble des articles dans un ensemble est la somme des carrés des erreurs de l'individu. Le code suivant montre comment les erreurs au carré pour l'ensemble de la formation peuvent être calculés:
double squaredError = 0.0;
for
(
int trainingItemIndex = 0;
trainingItemIndex < totalTrainingItems;
trainingItemIndex++
)
{
trainingSet.SetAllInputNodeValues( trainingItemIndex );
Simulate( propagationIterations );
trainingSet.SetAllOutputNodeErrorValues( trainingItemIndex );
PropagateErrors( propagationIterations );
UpdateWeightsAndBiases();
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
}
Dans l'ensemble, racine carrée moyenne (RMS) de l'erreur est donnée par la racine carrée de la moyenne des carrés des erreurs:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
Cette valeur est une façon de caractériser l'erreur globale d'un réseau de formation en tenant compte de tous les cas.
7. Apprentissage
L'apprentissage se produit lorsque le poids des valeurs et les préjugés de liens neurone neurone et organismes sont adaptés, conformément à des intrants réseau et la sortie erreur valeurs.
Prenons l'exemple d'un réseau de neurones avec deux entrées (x1 et x2), et deux liens (avec des poids w1 et w2), et un neurone corps, et une sortie (y).

Réseaux de neurones avec deux entrées, un neurone et corps, et une sortie
Nous formons ce neurone en fournissant des intrants, la production informatique, l'erreur de calcul, l'informatique et les préjugés poids modifications, et la mise à jour le poids et le parti pris, l'arrivée de nouveaux poids ( w1', w2' ).
Il est une manière très intéressante de visualiser ce processus.
Nous pouvons ce qui concerne la série de poids comme un vecteur dans un environnement multi-dimensional space. Par exemple, pour deux poids, nous avons le vecteur W = (w1, w2) dans un « deux-poids espace. »
Lorsque les poids sont ajustés, nous avons un nouveau vecteur de poids W' = (w1',w2').
Nous pouvons visualiser cela comme un point W passer à un nouveau point W' dans le cadre d'un processus visant à minimiser l'erreur de sortie.
Normalement, on ne devrait pas calculer l'erreur de sortie pour toutes les combinaisons de poids, parce que l'espoir est que le processus d'ajustement du poids efficacement diriger vers la meilleure combinaison.
Toutefois, permettez-nous tracer la surface qui, pour l'essentiel montre bien comment un neurone répond à tous les éléments d'un ensemble de formation en fonction de ses deux poids:

Somme des carrés des erreurs pour une série de formation en fonction de deux poids (w1, w2)
En effet, l'objectif de l'apprentissage est de descendre au niveau le plus bas de cette surface, où l'erreur est réduit au minimum.
Une fois que l'on trouve le point W = (w1, w2) que les rendements à la valeur minimale sur cette surface, l'apprentissage est terminé et nous pouvons simplement utiliser la formation des neurones.
Le graphique suivant montre la sortie d'un neurone formés en fonction de toutes les entrées X = (x1, x2):

Neurone de sortie en fonction de deux entrées (x1, x2) pour un poids combinaison qui minimise l'erreur quadratique
Même si la somme pondérée de ces deux neurone d'entrée est tout simplement (w1*x1 + w2*x2), la fonction d'activation devient une simple rotation de plan dans une falaise.
Cette surface a la bonne production des valeurs d'entrée pour toutes les combinaisons (x1, x2) spécifié par notre ensemble d'apprentissage.
Mais vous pouvez imaginer comment les vecteurs d'entrée X = (x1, x2) similaire à la formation des valeurs conduirait également à la bonne production des valeurs, cette fonctionnalité de réseaux de neurones est appelée « généralisation » et est la principale valeur de réseaux de neurones.
Comme nous essayons de faire « descendre » la surface de l'erreur quadratique, nous devons « bond en avant de chercher! »
Nous mettons à jour le poids des vecteurs et des préjugés sexistes, et puis nous évaluons la « hauteur » de la surface à notre nouvelle adresse.
Une conséquence de ceci est que nous pourrions passer à un point avec une plus grande erreur.
Une autre conséquence est que cela pourrait prendre un certain temps pour descendre à la profondeur de notre emplacement.
La possibilité de « sauter » à plus extrême pics et les vallées de l'erreur de surface est directement liée au « taux d'apprentissage, » parce que le taux d'apprentissage détermine la quantité de valeurs d'erreur influence sur notre poids et les préjugés modifications.
Le graphique suivant montre comment augmenter le taux d'apprentissage accélère notre arrivée à moindre positions sur la surface de l'erreur quadratique, où l'erreur est réduit au minimum.
Le graphique montre également que l'augmentation du taux d'apprentissage introduit également la possibilité de faire de mauvaises mesures:

Tendance à court terme de root-mean-squared (RMS) erreur pour l'ensemble de la formation, réparties sur plusieurs itérations de formation, d'apprentissage taux 0.1, 0.5, 1.0, et 2.0.
Voici un graphique de la racine moyenne-squared erreur de sortie d'un multi-couche réseau avec un ensemble d'articles avec 19386 qui a connu de nombreux mauvais pas sur le chemin vers le meilleur des vecteurs de poids:

Formation rencontres parfois pointes à la racine-mean-squared (RMS) erreur, erreur augmente lorsque pour certaines itérations avant de reprendre une tendance à la baisse.
Parfois, la tendance est tout simplement une transition "en douceur jusqu'à la série de poids:

Tendance de root-mean-squared (RMS) erreur pour l'ensemble de la formation, réparties sur plusieurs itérations de formation, d'apprentissage taux 0.1, 0.5, 1.0, et 2.0.
8. Exemple: ou-exclusif (xor)
« Ou-exclusif » (xor) est une fonction qui accepte deux booléens intrants et les rendements d'une seule sortie booléenne selon le tableau suivant:
|
X1
|
X2
|
Y = xor (X1, X2)
|
|
0
|
0
|
0
|
|
0
|
1
|
1
|
|
1
|
0
|
1
|
|
1
|
1
|
0
|
En général, un seul neurone a {x1, x2, ...} intrants, en entrant par le biais de liens avec des poids {w1, w2, ...}.
Le neurone calcule une quantité d = bias + (w1*x1 + w2*x2 + ...) intermédiaires, qui peuvent être considérés comme des signes identificateurs de plan qui, dans une infinie série de plans parallèles, contient un certain point avec des coordonnées {x1, x2, ...}.
Le neurone calcule une valeur de la production, y = ActivationFunction( d ), qui a pour effet de diviser l'infini ensemble de plans parallèles à deux séries, avec un jeu faible production de valeurs de sortie, et l'autre ensemble de la production de valeurs à haut rendement.
Ainsi, un seul neurone multidimensionnelle divise l'espace en deux régions séparées par le plan bias + w1*x1 + w2*x2 + ... = 0, faible et leur attribue des valeurs à la production dans la région sur un côté de l'avion, et assigne des valeurs à haut rendement à des points de la région sur le côté opposé de l'avion.
Ainsi, si deux ensembles de points dans l'espace multidimensionnel ont des classifications et peuvent être complètement séparées par un avion, puis un seul neurone peut être utilisé pour classer correctement les points de ces ensembles comme appartenant à un ensemble ou l'autre.
Le ou-exclusif (xor) classe fonction des points en deux dimensions (avec des coordonnées (x1, x2)) tels que les points dans l'ensemble { (0,0), (1,1) } sont classés comme produisant une sortie de « 0, » et les points dans l'ensemble { (0,1), (1,0) } sont classés comme produisant une puissance de « 1. »
Il n'existe pas de « plan » (dans ce cas, une ligne) qui permettent de séparer ces quatre points pour les deux séries.
Par conséquent, un seul neurone peut pas être utilisé pour classer les points en fonction de la compétence exclusive ou (xor) fonction.
Un seul neurone ne peut diviser un espace de points en deux régions.
Le ou-exclusif (xor) classe fonction des points d'une manière qui divise essentiellement en deux dimensions en trois régions (ou, à défaut, quatre régions).
Deux neurones peut diviser en deux dimensions dans l'espace à trois régions (par exemple, par deux lignes parallèles), et peut donc être utilisé pour classer les points en fonction de la compétence exclusive ou (xor) fonction.
Un troisième neurone peut être utilisé pour combiner les résultats des deux autres neurones à une sortie unique.
Le réseau de neurones suivants, avec deux entrées et deux organismes de neurones dans une première couche, et un seul neurone dans une deuxième couche, et une seule sortie, peut être utilisé pour classer les points en fonction de la compétence exclusive ou (xor) fonction.
Le réseau de neurones suivants peuvent être formés pour calculer le ou-exclusif (xor) fonction, ou le réseau de neurones peut simplement avoir son poids et les préjugés valeurs attribuées d'une manière qui produit le comportement désiré.

Un réseau de neurones capables de classer les points en fonction de ou-exclusif (xor)
L'ordinateur code associé à ce document démontre la formation de réseaux de neurones montré dans le diagramme ci-dessus pour le match ou-exclusif (xor) fonction.
Les réseaux de neurones parfois ne parvient pas à connaître la fonction, mais le logiciel peut tout simplement être redémarré pour essayer d'apprentissage avec une nouvelle série de poids initiaux.
Si le logiciel apprend avec succès le ou-exclusif (xor) fonction, puis la sortie ressemble à ce qui suit:
x1 = 0.0000 x2 = 0.0000 y = 0.0172 error = 0.0172
x1 = 1.0000 x2 = 0.0000 y = 0.9802 error = -0.0198
x1 = 0.0000 x2 = 1.0000 y = 0.9839 error = -0.0161
x1 = 1.0000 x2 = 1.0000 y = 0.0154 error = 0.0154
La sortie (y) de 2% de la valeur souhaitée pour chacune des quatre combinaisons des variables (x1, x2).
Bien que le réseau a reçu une formation pour apprendre les valeurs de sortie pour seulement quatre combinaison de variables (avec des valeurs 0.0 et 1.0, représentant valeurs booléennes), les contributions au réseau de neurones peut être réglé à tout arbitraire en virgule flottante des valeurs.
L'image suivante montre la sortie du réseau de neurones pour de nombreuses combinaisons de valeurs d'entrée:

Un réseau de neurones capables de classer les points en fonction de ou-exclusif (xor)
La surface représente le produit du réseau de neurones pour toutes les combinaisons d'entrée (x1, x2) dans les gammes [ -2.0, +2.0 ].
Le résultat est proche de 0.0 à la baisse les domaines de la surface, et la sortie est proche de 1.0 au plus haut régions de la surface terrestre.
Il est à noter que la surface est faible pour les points à { (0,0), (1,1) }, et la surface est élevé aux points { (0,1), (1,0) }.
Le réseau n'a été formés pour produire les résultats souhaités pour quatre combinaisons de variables d'entrée, mais le réseau de neurones produit également des produits pour toutes les autres combinaisons possibles de valeurs d'entrée.
La capacité des réseaux de neurones à produire des réponses raisonnables pour les cas après avoir été formés pour des cas spécifiques peuvent être considérés comme « la généralisation. »
Tout processus qui correspond à des points de données à un modèle, comme l'installation des points à une ligne courbe ou d'autres, également produit un effet « de généraliser, » de sorte que le fait que l'installation un réseau de neurones à produire les résultats souhaités pour des leçons des résultats dans une sorte de généralisation n'est pas extraordinaire, mais il n'en est pas moins intéressant d'observer la capacité à généraliser à partir des cas spécifiques.
9. Exemple: Tic-tac-toe « (Naughts et croix) »
9.1 Introduction
Tic-tac-toe « (Naughts et croix) » est un simple jeu 3 * 3 sur une grille de cellules qui peuvent être marqués d'« O » ou « X ».
Les joueurs à tour de rôle et « O » lieu « X » marques en cellules inoccupées jusqu'à ce qu'un des joueurs remplit une rangée, colonne ou diagonale.
Comme il n'existe que 3 lignes et 3 colonnes, diagonales et 2, il ya huit modes de gagner pour chaque joueur.

Tic-Tac-Toe bord et la conquête de modes
Il est trivial d'écrire une fonction récursive qui explore toutes les Tic-Tac-Toe jeux, parce que la durée maximale du jeu est de neuf coups.
À chaque point dans le jeu, nous allons simplement examiner les résultats d'aller dans chacune des autres cellules inoccupées.
Une telle fonction peut confirmer que Tic-Tac-Toe un jeu joué avec « une parfaite joueurs » prendra fin avec pas de gagnant.
9.2 La formation d'un réseau de neurones pour indiquer les meilleurs coups
Une fonction récursive peut explorer toutes les jeux et déterminer la meilleure déplacer pour chaque conseil de configuration.
Nous ajoutons chaque conseil de configuration (intrants), et le meilleur move (résultats escomptés), à une liste de la formation.
Nous avons ensuite former le réseau à produire les résultats escomptés pour chaque ensemble d'intrants.
Le réseau aura 9 entrées correspondant à chaque cellule de la grille, et les valeurs d'entrée sera limité aux valeurs suivantes:
0: inoccupation cellule
+1: Protagoniste joueur
-1: Adversaire joueur
Le réseau aura 9 résultats correspondant à chaque cellule de la grille, et les valeurs de production sera limitée aux valeurs suivantes:
0: Ne déplacez pas ici
1: Déplacer ici
Huit produits seront mis à « 0, » et une sortie sera fixée à « 1. »
Ainsi, après la formation de réseaux de neurones, un conseil de configuration peut être spécifié comme entrée, et le réseau de neurones indiquera la meilleure déplacer.
La sortie la plus proche de « 1 » indiquera le meilleur mouvement, et tous les autres produits devrait être proche de « 0. »
En général, une fonction booléenne avec paramètres booléens et les sorties peuvent se faire représenter par un réseau de neurones avec deux couches de neurones.
La première couche de neurones permet de diviser l'espace multidimensionnel dans les régions, et la deuxième couche combine la région classifications à produire les valeurs de sortie.
Le réseau de neurones Tic-Tac-Toe produit des résultats booléens, et bien que les apports ont trois États ( -1, 0, +1 ), nous pourrions, dans princple, convertir ces quelques discrètes valeurs d'entrée à un ensemble de contributions booléens.
Par conséquent, deux couches de neurones devrait être suffisant pour apprendre Tic-Tac-Toe.
Parce que le réseau dispose de 9 produits, il ya 9 organismes de neurones dans la dernière (deuxième) couche.
Le seul réseau de neurones décision de conception est de décider du nombre de neurones organismes à mettre dans la première couche du réseau de neurones.
Pour prendre cette décision, le code informatique capables de créer et de former un réseau de neurones avec N neurones dans la première couche.
La capacité du réseau de neurones d'apprendre l'ensemble complet de formation pour Tic-Tac-Toe peut être graphique.