Optimisation de la descente de gradient

9

J'essaie de comprendre l'optimisation de la descente de gradient dans les algorithmes ML (machine learning). Je comprends qu'il ya une fonction où le coût l'objectif est de minimiser l'erreur y - y . Dans un scénario où les poids w 1 , w 2 sont optimisés pour donner l'erreur minimale et des dérivées partielles sont utilisées, cela change-t-il à la fois w 1 et w 2 à chaque étape ou s'agit-il d'une combinaison (par exemple, en quelques itérations seulement w 1 est modifié et lorsque w 1 ne réduit plus l'erreur, la dérivée commence par w 2y^yw1,w2w1w2w1w1w2)? L'application pourrait être un modèle de régression linéaire, un modèle de régression logistique ou des algorithmes de stimulation.

Pb89
la source

Réponses:

10

La descente en gradient met à jour tous les paramètres à chaque étape. Vous pouvez le voir dans la règle de mise à jour:

w(t+1)=w(t)ηf(w(t)).

f(w)w

η

Bien que vous puissiez estimer les paramètres de régression linéaire en utilisant la descente de gradient, ce n'est pas une bonne idée.

De même, il existe de meilleures façons d'estimer les coefficients de régression logistique.

Sycorax dit de réintégrer Monica
la source
Donc, l'algorithme peut essayer différentes combinaisons comme l'augmentation w1, la diminution en w2fonction de la direction de la dérivée partielle pour atteindre les minima locaux et juste pour confirmer que l'algorithme ne donnera pas nécessairement toujours les minima globaux?
Pb89
et la dérivée partielle aide-t-elle également à expliquer l'ampleur de l'augmentation ou de la diminution à effectuer w1et / w2ou cela se fait par apprentissage du taux / du rétrécissement alors que la dérivée partielle fournit uniquement la direction de la descente?
Pb89
Le gradient est un vecteur, il donne donc une direction et une amplitude. Un vecteur peut être arbitrairement redimensionné par un scalaire positif et il aura la même direction, mais le redimensionnement changera sa magnitude.
Sycorax dit Réintégrer Monica
Si l'amplitude est également donnée par le gradient, alors quel est le rôle du retrait ou du taux d'apprentissage?
Pb89
f(x)w(t)η
7

Lorsque l'optimisation se produit par le biais de dérivées partielles, à chaque tour change-t-elle à la fois w1 et w2 ou s'agit-il d'une combinaison comme dans quelques itérations, seul w1 est modifié et lorsque w1 ne réduit plus l'erreur, la dérivée commence par w2 - pour atteindre les minima locaux?

À chaque itération, l'algorithme changera tous les poids en même temps en fonction du vecteur de gradient. En fait, le gradient est un vecteur. La longueur du gradient est la même que le nombre de poids dans le modèle.

D'un autre côté, la modification d'un paramètre à la fois existait et il est appelé algorithme décent de coordonnées , qui est un type d' algorithme d'optimisation sans gradient . En pratique, il peut ne pas fonctionner aussi bien qu'un algorithme basé sur un gradient.

Voici une réponse intéressante sur l'algorithme sans gradient

Est-il possible de former un réseau neuronal sans rétropropagation?

Haitao Du
la source
1

Le but de la descente de gradient est de minimiser la fonction de coût. Cette minimisation est obtenue en ajustant les poids, pour votre cas w1 et w2. En général, il pourrait y avoir n de tels poids.

La descente en pente se fait de la manière suivante:

  1. initialiser les poids de manière aléatoire.
  2. calculer la fonction de coût et le gradient avec des poids initialisés.
  3. mettre à jour les poids: il peut arriver que le gradient soit O pour certains poids, dans ce cas, ces poids ne montrent aucun changement après la mise à jour. par exemple: Supposons que le gradient soit [1,0], le W2 restera inchangé.
  4. vérifiez la fonction de coût avec des poids mis à jour, si la décrémentation est suffisamment acceptable, continuez les itérations sinon terminez.

tandis que la mise à jour des poids dont le poids (W1 ou W2) est modifié est entièrement décidée par gradient. Tous les poids sont mis à jour (certains poids peuvent ne pas changer en fonction du gradient).

A Santosh Kumar
la source
"si le décrément est suffisamment acceptable, continuez les itérations sinon", existe-t-il une valeur par défaut qui est appliquée dans les packages de python ( sklearn) ou les packages R tels que caret? Il peut être spécifié par l'utilisateur uniquement dans une fonction de descente de gradient créée manuellement?
Pb89
1

Un gradient décent est appliqué à la fois w1et w2pour chaque itération. A chaque itération, les paramètres sont mis à jour en fonction des gradients. Ils auraient probablement une dérivée partielle différente.

Vérifiez ici .

Bonjour le monde
la source