Comment un back-propagation de l'algorithme de formation de travail?
J'ai essayé d'apprendre le back-propagation travaille avec des réseaux de neurones, mais encore à trouver une bonne explication à partir d'un moins de l'aspect technique.
Comment back-propagation de travail? Comment est-il apprendre à partir d'un ensemble de données d'apprentissage fourni? Je vais avoir ce code, mais jusqu'alors, j'ai besoin d'acquérir une meilleure compréhension d'elle.
- J'ai écrit une description de la façon dont Les œuvres ici si quelqu'un est intéressé (je n'ai pas envie de reposter).
Vous devez vous connecter pour publier un commentaire.
Back-propagation de travaux dans une logique très similaire à celle de feed-forward. La différence, c'est la direction du flux de données. Dans le feed-forward étape, vous avez les entrées et la sortie observée à partir d'elle. Vous pouvez propager les valeurs de l'avant à train les neurones à l'avance.
Dans le back-propagation de l'étape, vous ne pouvez pas savoir les erreurs se sont produites dans chaque neurone, mais ceux de la couche de sortie. Calculer les erreurs de nœuds de sortie est simple - vous pouvez prendre la différence entre la sortie du neurone et de la de sortie réelle de cette instance dans l'ensemble d'apprentissage. Les neurones dans les couches cachées doivent mettre à jour leurs erreurs à partir de ce. Ainsi, vous devez passer les valeurs de l'erreur en retour. À partir de ces valeurs, les neurones cachés peuvent mettre à jour leur erreur et d'autres paramètres à l'aide de la somme pondérée des erreurs de la couche d'avance.
Une étape-par-étape de démonstration de rachat de l'avant et à l'arrière-étapes de propagation peut être trouvé ici.
Modifier
Si vous êtes un débutant à réseaux de neurones, vous pouvez commencer à apprendre à partir de Perceptron, alors NN, qui est en fait un perceptron multicouche.
Description de haut niveau de la les algorithme
Les est essayer de faire une descente de gradient sur le surface d'erreur du réseau de neurones, en ajustant les poids avec de la programmation dynamique techniques pour maintenir les calculs docile.
Je vais essayer d'expliquer, de haut niveau, toutes les cités des concepts.
Erreur de surface
Si vous avez un réseau de neurones avec, disons, N neurones dans la couche de sortie, cela signifie que votre sortie est vraiment un N-dimensions du vecteur, et que le vecteur de la vie dans un N-espace de dimension (ou sur un N-dimensions de la surface.) Le fait de la "bonne" sortie que vous êtes de formation contre. Le fait de la différence entre votre réponse "correcte" et la sortie réelle.
De la différence, de climatisation (surtout en compte de la valeur absolue) est le du vecteur d'erreur, vivant sur la surface d'erreur.
Descente de Gradient
Avec ce concept, vous pouvez penser à la formation du réseau de neurones que le processus de réglage du poids de vos neurones, de sorte que la fonction d'erreur est petite, idéalement zéro. Conceptuellement, vous le faites avec le calcul. Si vous n'aviez qu'une sortie et d'un poids, ce serait simple: prenez quelques produits dérivés, qui vous dira qui "direction" pour se déplacer, et faire un réglage dans cette direction.
Mais vous n'avez pas un neurone, vous disposez de N d'entre eux, et beaucoup plus d'entrée de poids.
Le principe est le même, sauf qu'au lieu d'utiliser le calcul sur les lignes à la recherche pour les pistes que vous pouvez imaginer dans votre tête, les équations deviennent le vecteur de l'algèbre des expressions que vous ne pouvez pas facilement l'image. Le terme gradient est le multi-dimensionnelle de l'analogique vers le pente sur une ligne, et descente signifie que vous souhaitez déplacer bas que la surface d'erreur jusqu'à ce que les erreurs sont petites.
De la programmation dynamique
Il y a un autre problème, mais-si vous avez plus d'une couche, vous ne pouvez pas voir facilement le changement de poids dans certains non-couche de sortie vs la sortie réelle.
La programmation dynamique est une méthode de la comptabilité pour aider à suivre ce qu'il se passe. Au niveau le plus élevé, si vous naïvement essayer de faire ce calcul vectoriel, vous finissez par le calcul de certains produits dérivés, encore et encore. Le moderne, les algorithme évite un peu, et il se trouve que vous mettez à jour la couche de sortie de la première, puis la deuxième à la dernière couche, etc. Les mises à jour sont se propageant vers l'arrière à partir de la sortie, d'où le nom.
Donc, si vous êtes assez chanceux pour avoir été exposés à la descente de gradient ou de calcul vectoriel en avant, alors j'espère que ça a cliqué.
Le plein de dérivation de les peut être condensée en une page environ de serré symbolique des mathématiques, mais il est difficile d'obtenir le sens de l'algorithme sans une description de haut niveau. (C'est carrément intimidant, à mon avis.) Si vous n'avez pas une bonne poignée sur le calcul vectoriel, alors, désolé, le ci-dessus n'était probablement pas utile. Mais pour obtenir les travailler, il n'est pas nécessaire de tout comprendre de la dérivation.
J'ai trouvé le document suivant (en Rojas) très intéressantes, quand j'ai essayé de comprendre cette matière, même si c'est un gros PDF de un chapitre de son livre.
http://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf
Je vais essayer de l'expliquer sans entrer trop dans le code ou les mathématiques.
Fondamentalement, vous calculez la classification du réseau de neurones, et de la comparer à la valeur connue. Cela vous donne une erreur au nœud de sortie.
Maintenant, à partir du nœud de sortie, nous avons N liens entrants en provenance d'autres nœuds. Nous propager l'erreur à la dernière couche avant le nœud de sortie. Avant de se propager vers le bas de la couche suivante (quand il y a plus d'une liaison montante, vous additionnez les erreurs). Et puis, de manière récursive se propager à la première
Pour ajuster les poids pour la formation, pour chaque nœud en gros, vous procédez de la manière suivante:
learningRate et alpha sont des paramètres que vous pouvez définir pour ajuster la vitesse à laquelle il met l'accent sur une solution et (espérons-le) exactement où vous le résoudre à la fin.