La Descente de Gradient avec des contraintes (multiplicateurs de lagrange)
J'essaie de trouver le minimum d'une fonction à N paramètres à l'aide de la descente de gradient. Cependant je veux le faire tout en limitant la somme des valeurs absolues des paramètres à 1 (ou <= 1, n'a pas d'importance). Pour cette raison, je suis en utilisant la méthode des multiplicateurs de lagrange si ma fonction est f(x), je vais être de réduire f(x) + lambda * (g(x)-1) où g(x) est une approximation régulière pour la somme des valeurs absolues des paramètres.
Maintenant que je comprends, le gradient de cette fonction ne sera 0 lorsque g(x)=1, de sorte qu'une méthode pour trouver un minimum local doit trouver le minimum de ma fonction qui est à ma condition est également remplie. Le problème est que ce plus ma fonction illimitée, de sorte que la Descente de Gradient trouve tout simplement de plus en plus grande des lambdas avec de plus en plus grande des paramètres (en valeur absolue) et ne converge jamais.
Pour le moment je suis en utilisant python (scipy) la mise en œuvre de la CG donc je préfère vraiment les suggestions qui ne nécessitent pas de me re-écrire /modifier légèrement le code GE moi-même, mais l'utilisation d'une méthode existante.
Vous devez vous connecter pour publier un commentaire.
Le problème est que lors de l'utilisation des multiplicateurs de Lagrange, les points critiques de ne pas se produire à minima locaux de la Lagrange - ils se produisent à la selle points à la place. Puisque l'algorithme de descente de gradient est conçu pour trouver des minima locaux, il ne parvient pas à converger lorsque vous lui donnez un problème avec contraintes.
Il y a en général trois solutions:
Personnellement, j'irais avec la troisième approche, et de trouver le gradient de la place de la pente de la Lagrangien numériquement si c'est trop difficile d'obtenir une expression analytique pour elle.
Aussi, vous n'avez pas assez clairement à votre question - êtes-vous à l'aide de la descente de gradient, ou CG (conjugué dégradés)?
Probablement trop tard pour être utile à l'OP, mais peut être utile à d'autres personnes dans la même situation:
Un problème avec l'absolu, la valeur des contraintes peuvent souvent être reformulé en un équivalent problème qui n'a que des contraintes linéaires, en ajoutant un peu de "l'aide" des variables.
Par exemple, considérons le problème 1:
Trouver (x1,x2) qui minimise f(x1,x2) sous réserve de la non linéaire de la contrainte |x1|+|x2|<=10.
Il y a un linéaire de la contrainte version, le problème 2:
Trouver (x1,x2,x3,x4) qui minimise f(x1,x2), à la suite de contraintes linéaires:
Remarque:
Il s'ensuit que la recherche d'une meilleure solution pour le problème 2 vous donnera une optimale pour le problème 1, et vice versa.