Réglage des paramètres pour le Perceptron Algorithme d'Apprentissage
Je vais avoir une sorte de problème à essayer de comprendre comment régler les paramètres de mon perceptron algorithme afin qu'il fonctionne relativement bien sur invisible de données.
J'ai mis en place une fonctionnelle de type perceptron algorithme et j'aimerais trouver une méthode qui me permette de régler le nombre d'itérations et le taux d'apprentissage du perceptron. Ce sont les deux paramètres, je suis intéressé.
Je sais que le taux d'apprentissage du perceptron n'affecte pas l'algorithme converge et se termine. Je suis en essayant de comprendre comment le changement n. Trop vite et il va balancer autour d'un lot, et de la trop faible et il va prendre plus de temps.
Comme pour le nombre d'itérations, je ne suis pas entièrement sûr de savoir comment déterminer un nombre idéal.
Dans tous les cas, toute aide serait appréciée. Merci.
OriginalL'auteur Albert Diego | 2010-05-04
Vous devez vous connecter pour publier un commentaire.
Commencer avec un petit nombre d'itérations (c'est en fait plus conventionnels à compter 'époques' plutôt que d'itérations--'époques' désigne le nombre d'itérations à travers l'ensemble du jeu de données utilisé pour former le réseau). Par des "petits" disons quelque chose comme 50 époques. La raison pour cela est que vous voulez voir comment l'erreur totale est en train de changer à chaque cycle de formation (à l'époque)--j'espère qu'il va vers le bas (plus sur "l'erreur totale" ci-dessous).
Évidemment vous êtes intéressés par le point (le nombre d'époques) où la prochaine supplémentaires époque ne provoque pas une baisse dans l'erreur totale. Donc, commencer avec un petit nombre d'époques, de sorte que vous pouvez aborder ce point en augmentant les époques.
Le taux d'apprentissage de commencer avec ne doit pas être ni trop fin ni trop gros, (évidemment subjectif, mais j'espère que vous avez une idée de ce qui est un des grands et des petits au taux d'apprentissage).
Ensuite, insérer quelques lignes de code de test dans votre perceptron--vraiment juste un peu bien placé "imprimer" des déclarations. Pour chaque itération, de calculer et d'afficher le delta (valeur réelle pour chaque point de données dans les données d'apprentissage, moins la valeur prédite), la somme de l'individu valeurs delta sur tous les points (lignes de données) dans les données d'apprentissage (j'ai l'habitude de prendre la valeur absolue de la delta, ou vous pouvez prendre la racine carrée de la somme des différences au carré--n'a pas trop d'importance. Appel de la valeur additionnée "erreur totale"--juste pour être clair, c'est l'erreur totale (somme de l'erreur à travers tous les nœuds) par époque.
Puis, tracé de l'erreur totale en fonction de l'époque nombre (c'est à dire, à l'époque numéro sur l'axe des x, l'erreur totale sur l'axe des y). D'abord, bien sûr, vous verrez les points de données dans le coin supérieur gauche de tendance vers le bas et vers la droite et avec une diminution de la pente
Laisser l'algorithme de former le réseau sur les données d'apprentissage. Augmenter les époques (par exemple, 10 pour exécuter) jusqu'à ce que vous voyez la courbe (erreur totale contre époque nombre) aplatir--c'est à dire, des itérations supplémentaires n'entraîne pas une diminution de l'erreur totale.
De sorte que la pente de cette courbe est très important et en est à sa position verticale--c'est à dire., la quantité totale d'erreur que vous avez et si elle continue la tendance à la baisse avec plus de cycles de formation (époques). Si, après avoir augmenté les époques, on finit par remarquer une augmentation de l'erreur, recommencer avec un faible taux d'apprentissage.
La d'apprentissage taux de (généralement une fraction comprise entre environ 0,01 et 0,2) va certainement affecter la façon dont rapidement le réseau est formé--c'est à dire, il peut vous permettre de vous déplacer vers le minimum local plus rapidement. Il peut aussi vous amener à sauter par-dessus. Donc le code d'une boucle qui forme un réseau, disons à cinq reprises, à l'aide d'un nombre fixe de temps (et d'un même point de départ) à chaque fois, mais en variant le taux d'apprentissage, par exemple, de 0,05 à 0,2, à chaque fois que l'augmentation de l'apprentissage taux de 0,05.
Un paramètre plus important ici (bien que pas strictement nécessaire), "momentum". Comme son nom l'indique, à l'aide d'un élan terme vous aideront à obtenir une adéquatement formés réseau plus rapidement. En essence, le momentum est un multiplicateur de l'apprentissage taux d'--aussi longtemps que le taux d'erreur est à la baisse, l'élan terme accélère le progrès. L'intuition qui sous-tend la dynamique terme est " aussi longtemps que vous de voyager vers la destination, l'augmentation de votre vitesse de'.Les valeurs typiques de la dynamique en terme de 0.1 ou 0.2. Dans le programme de formation ci-dessus, vous devez probablement tenir un élan constant en faisant varier le taux d'apprentissage.
OriginalL'auteur doug
Au sujet de l'apprentissage de taux affectant pas de savoir si ou non le perceptron converge - ce n'est pas vrai. Si vous choisissez un apprentissage taux est trop élevé, vous obtiendrez probablement un divergentes réseau. Si vous modifiez le taux d'apprentissage au cours de l'apprentissage, et il tombe trop vite (j'.e plus forte que 1/n) vous pouvez également obtenir un réseau qui ne converge (c'est parce Que la somme de N(t) pour t allant de 1 à inf est finie. cela signifie que le vecteur de poids ne peut changer que par un nombre fini).
Théoriquement, il peut être indiqué pour les cas simples que le changement de n (learning rate) selon 1/t (où t est le nombre d'exemples) devrait du bon travail, mais j'ai vraiment trouvé que, dans la pratique, la meilleure façon de le faire est de trouver la bonne haute valeur de n (la valeur la plus élevée que ne pas faire de votre apprentissage divergent) et une faible valeur de n (ce qui est plus difficile à la figure. dépend vraiment de données et de problème), puis laissez-n changement linéairement au fil du temps à partir de élevé n faible n.
OriginalL'auteur Ofri Raviv
L'apprentissage taux dépend des valeurs typiques données. Il n'y a pas de règle en général. Fonction de mise à l'échelle est une méthode utilisée pour normaliser la gamme de variables indépendantes ou les caractéristiques des données. Dans le traitement des données, il est également connu comme la normalisation des données et est généralement effectuée au cours de l'étape de pré-traitement de données.
Normaliser les données à zéro, de moyenne, de variance unité ou entre 0-1 ou de toute autre forme standard peut aider à la sélection d'une valeur d'au taux d'apprentissage. Comme doug mentionné, l'apprentissage de taux entre 0,05 et 0,2 fonctionne bien en général.
Aussi cela permettra de faire l'algorithme converge plus rapidement.
Source: Juszczak, P.; D. M. J. Impôt, et le R. P. W. Dui (2002). "La fonctionnalité de mise à l'échelle à vecteurs de support de descriptions de données". Proc. 8 Annu. Conf. Inter. École De Comput. Imagerie: 95-10.
OriginalL'auteur Rishi Dua