[PYTHON] Pensez grossièrement à la méthode de descente de gradient

Article précédent a réussi à comprendre la fonction de perte, mais cela seul définit toujours la fonction et ne fait pas converger correctement la valeur (perte). Je n'ai pas demandé la réponse.

Donc, cette fois, je vais parler de la façon de trouver la réponse.

Comment faire converger la valeur

Nous omettons l'explication de la fonction de perte, mais à la fin nous devons faire converger les valeurs. 801933de-d8ba-729f-9b2c-6bbe3bd64212.jpeg Dans ce graphique, trouvez le "m" qui minimise la perte.

Vous n'obtenez pas la réponse en une seule fois, mais ajustez-la petit à petit pour vérifier la perte et faites des ajustements pour la réduire. 9170a054-e922-46c3-88bf-0365be4df036.png

Cette partie "ajuster petit à petit" est le mal, mais j'utiliserai la sagesse à laquelle les grands gens ont pensé de différentes manières.

Une méthode typique est comme celle-ci, mais il existe différents algorithmes en fonction de la manière de l'implémenter. Je n'entrerai pas dans les détails, mais les points clés sont la précision des valeurs et la vitesse de convergence.

Implémentation de TensorFlow

TensorFlow en prépare également beaucoup.

Il est difficile de tout comprendre, donc je me demande si ce n'est pas grave si je ne connais que «Adam Optimizer» et «Gradient Descent Optimizer» utilisés dans le didacticiel. "Adam Optimizer" est l'algorithme d'Adam et "Gradient Descent Optimizer" est la méthode de descente rapide.

L'utilisation est la même pour les deux, spécifiez le taux d'apprentissage comme valeur initiale et passez la fonction de perte à la fonction "minimiser ()" pour minimiser la valeur. Chaque code ressemble à ceci:

train_step = tensorflow.train.AdamOptimizer(1e-4).minimize(cross_entropy)
train_step = tensorflow.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

Il est facile de remplacer l'algorithme à utiliser, mais c'est un essai et une erreur pour décider quel devrait être le taux d'apprentissage. .. .. ^^;

Ainsi, lorsque vous faites cela, il ajustera automatiquement les paramètres de pondération afin que la valeur de la fonction de perte soit plus petite. Il s'agit de la "propagation de retour d'erreur".

Si vous voulez en savoir plus

Pour une histoire difficile sur l'algorithme de descente de gradient, il semble bon de lire l'article Par ici.

Recommended Posts

Pensez grossièrement à la méthode de descente de gradient
Pensez grossièrement à la fonction de perte
[Python] Pensez sérieusement à la méthode gagnante M-1.
Sortie du résultat de la méthode de descente de dégradé sous forme d'animation matplotlib
Pensez au problème de changement minimum
Algorithme d'apprentissage automatique (méthode de descente de gradient)
Recherche de points de selle à l'aide de la méthode du gradient
À propos de la précision de la méthode de calcul du rapport de circonférence d'Archimède
À propos du test
Implémentation de la méthode de gradient 1
Pensez aux interfaces sélectives sur la ligne de commande
À propos de la file d'attente
Réfléchissez à la programmation de Python sur votre iPad
Trier en Python. Pensons ensuite à l'algorithme.
Pensez à la nouvelle génération de Rack et WSGI
À propos de la fonction Déplier
À propos de la commande de service
À propos de la matrice de confusion
À propos du modèle de visiteur
Pensez à l'environnement d'analyse (Partie 1: Vue d'ensemble) * Depuis janvier 2017