J'essaie de comprendre comment fonctionne la méthode d'optimisation basée sur l'adjoint pour une optimisation contrainte PDE. En particulier, j'essaie de comprendre pourquoi la méthode adjointe est plus efficace pour les problèmes où le nombre de variables de conception est grand, mais le "nombre d'équations est petit".
Ce que je comprends:
Considérez le problème d'optimisation contraint PDE suivant:
où est une fonction objective (suffisamment continue) d'un vecteur de variables de conception et d'un vecteur de variables de champ inconnues qui dépendent des variables de conception, et est la forme résiduelle de l'EDP.
De toute évidence, nous pouvons les premières variations de I et R comme
En introduisant un vecteur de multiplicateurs de lagrange , la variation de la fonction objectif peut s'écrire
En réarrangeant les termes, nous pouvons écrire:
Ainsi, si nous pouvons résoudre pour telle sorte que∂ I
Ensuite, le gradient est évalué uniquement en termes de variables de conception .β
Ainsi, un algorithme d'optimisation basé sur l'adjoint bouclerait sur les étapes suivantes:
- Compte tenu des variables de conception actuelles
- Résoudre pour les variables de champ (à partir de la PDE)
- Résoudre pour les multiplicateurs de lagrange (à partir de l'équation adjointe)
- Calculer les gradients
- Mettre à jour les variables de conception
Ma question
Comment cette «astuce» adjointe améliore-t-elle le coût de l'optimisation par itération dans le cas où le nombre de variables de conception est important? J'ai entendu dire que le coût de l'évaluation du gradient pour la méthode adjointe est «indépendant» du nombre de variables de conception. Mais comment est-ce vrai?
Je suis sûr qu'il y a quelque chose de très évident que j'oublie d'une manière ou d'une autre.
la source
Réponses:
Je pense au coût du point de vue de l'algèbre linéaire. (Voir ces notes de Stephen G. Johnson , que je trouve plus intuitives que l'approche du multiplicateur de Lagrange). L'approche prospective revient à résoudre directement les sensibilités:
ce qui implique de résoudre un système linéaire pour chaque paramètre du vecteur , puis d'évaluerβ
où désigne une dérivée totale et désigne une dérivée partielle. ∂ré ∂
L'approche adjointe note que
donc la variable adjointe (multiplicateur de Lagrange) peut être définie parλ
ce qui correspond à l'équation adjointe
Ce regroupement de termes ne nécessite qu'une seule résolution linéaire, au lieu d'une résolution linéaire pour chaque paramètre, ce qui rend l'évaluation adjointe bon marché pour le cas à plusieurs paramètres.
Ce n'est pas totalement indépendant; sans doute le coût de l'évaluation et augmentera avec le nombre de paramètres. Les résolutions linéaires, cependant, seront toujours de la même taille, tant que la taille de ne change pas. L'hypothèse est que les résolutions sont beaucoup plus chères que les évaluations de fonctions.( ∂ R / ∂ β ) u( ∂je/ ∂β) ( ∂R / ∂β) u
la source
En résumé, l'avantage vient du fait que pour calculer les dérivées de l'objectif réduit , il n'est pas vraiment nécessaire de connaître la dérivée de par rapport à comme un objet séparé, mais seulement la partie de celui-ci qui conduit à des variations de .u ( β ) β I ( β , u ( β ) )je( β, u ( β) ) u ( β) β je( β, u ( β) )
Permettez-moi de passer à une notation avec laquelle je suis un peu plus à l'aise: ( étant le variable de conception, étant la variable d'état et étant l'objectif). Disons que est assez agréable pour appliquer le théorème de fonction implicite, donc l'équation a une solution unique qui est continuellement différenciable par rapport à , et la dérivée est donné par la solution de ( et étant les dérivées partielles) .u y J e ( y , u ) e ( y , u ) = 0 y ( u ) u y ′ ( u ) e y ( y ( u ) , u ) y ′ ( u ) + e u ( y ( u ) , u )
Cela signifie que vous pouvez définir l'objectif réduit , qui est également différenciable (si est). Une façon de caractériser le gradient est d'utiliser des dérivées directionnelles (par exemple, calculer toutes les dérivées partielles par rapport à une base de l'espace de conception). Ici, la dérivée directionnelle dans la direction est donnée par la règle de chaîne comme Si est bien, la seule chose difficile à calculer est pour donné . Cela peut être fait en multipliant parJ ( y , u ) ∇ j ( u ) h j ' ( u ; h ) = ⟨ J y ( y ( u ) , u ) , y ' ( u ) h ⟩ + ⟨ J u ( y (j ( u ) : = J( y( u ) , u ) J( y, u ) ∇ j ( u ) h
Cependant, si nous trouvons un opérateur tel que alors ce doit être le gradient souhaité. En regardant , nous pouvons écrire (avec étant l'opérateur adjoint), donc tout ce dont nous avons besoin pour calculer est . En utilisant cela , cela peut être fait en utilisant , c'est-à-dire en calculant et en définissant Dans l'optimisation contrainte par PDE,∇ j
la source