Comprendre le coût de la méthode adjointe pour l'optimisation contrainte pde

11

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:

minβ je(β,u(β))s.t.R(u(β))=0

je est une fonction objective (suffisamment continue) d'un vecteur de variables de conception β et d'un vecteur de variables de champ inconnues u(β) qui dépendent des variables de conception, et R(u) est la forme résiduelle de l'EDP.

De toute évidence, nous pouvons les premières variations de I et R comme

δje=jeβδβ+jeuδu

δR=Rβδβ+Ruδu=0

En introduisant un vecteur de multiplicateurs de lagrange λ , la variation de la fonction objectif peut s'écrire

δje=jeβδβ+jeuδu+λT[Rβδβ+Ruδu]

En réarrangeant les termes, nous pouvons écrire:

δje=[jeβ+λTRβ]δβ+[jeu+λTRu]δu

Ainsi, si nous pouvons résoudre pour telle sorte queIλ

jeu+λTRu=0 (équation adjointe)

Ensuite, le gradient est évalué uniquement en termes de variables de conception .βδje=[jeβ+λTRβ]δββ

Ainsi, un algorithme d'optimisation basé sur l'adjoint bouclerait sur les étapes suivantes:

  1. Compte tenu des variables de conception actuellesβ
  2. Résoudre pour les variables de champ (à partir de la PDE)u
  3. Résoudre pour les multiplicateurs de lagrange (à partir de l'équation adjointe)λ
  4. Calculer les gradientsjeβ
  5. 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.

Paul
la source
3
Soit dit en passant, le multiplicateur de Lagrange est généralement ajouté à la fonction objective, pas à la variation; ainsi . Mettre la dérivée par rapport à à zéro donne l'équation adjointe, et l'insérer (et la solution de l'équation d'état ) dans la dérivée par rapport à donne le gradient. Si vous commencez avec la formulation faible de la PDE, les choses deviennent encore plus simples: il suffit d'insérer le multiplicateur de Lagrange à la place de la fonction de test. Pas besoin de la forme forte ou de l'intégration partielle n'importe où. u u R ( u , β ) = 0 βminu,βmaxλje(u,β)+λTR(u,β)uuR(u,β)=0β
Christian Clason
1
La partie la plus coûteuse de toute simulation est la phase de résolution. En utilisant l'adjoint, vous obtenez le gradient en deux résolutions, beaucoup moins cher que les différences finies où vous avez au moins besoin de n + 1 résolutions, n étant le nombre de paramètres libres dans votre modèle.
stali

Réponses:

10

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?

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:

uβ=-(Ru)-1Rβ

ce qui implique de résoudre un système linéaire pour chaque paramètre du vecteur , puis d'évaluerβ

jeβ=jeβ+jeuuβ,

où désigne une dérivée totale et désigne une dérivée partielle.

L'approche adjointe note que

jeβ=jeβ-jeu(Ru)-1Rβ,

donc la variable adjointe (multiplicateur de Lagrange) peut être définie parλ

-jeu(Ru)-1=λT,

ce qui correspond à l'équation adjointe

jeu+λTRu=0.

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.

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?

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

Geoff Oxberry
la source
8

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 ( β ) )I(β,u(β))u(β)βI(β,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 )

miny,uJ(y,u)subject toe(y,u)=0
uyJe(y,u)e(y,u)=0y(u)uy(u) eyeu
(1)ey(y(u),u)y(u)+eu(y(u),u)=0
eyeu

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

(2)j(u;h)=Jy(y(u),u),y(u)h+Ju(y(u),u),h.
Jy(u)hh(1)hà partir de la droite et en résolvant (ce que permet le théorème de la fonction implicite), c'est-à-dire calculer et en branchant cette expression dans . Dans l'optimisation contrainte par PDE, cela revient à résoudre une PDE linéarisée pour chaque vecteur de base de l'espace de conception.y(u)h
(3)[y(u)h]=ey(y(u),u)-1[eu(y(u),u)h]
(2) 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

j(u;h)=j,hpour tous h,
(1)
Jy(y(u),u),y(u)h=y(u)Jy(y(u),u),h
y(u)y(u)jy(y(u),u)(UNEB)=BUNE(3)
λ: =ey(y(u),u)-Jy(y(u),u)
J y ( y ( u ) , u ) λ u
j(u)=eu(y(u),u)λ+Ju(y(u),u).
Jy(y(u),u)est généralement une sorte de résidu, et le calcul implique la résolution d'un PDE adjoint (linéaire) unique , indépendant de la dimension de l'espace de conception. (En fait, cela fonctionne même pour les paramètres distribués, c'est-à-dire si est une fonction dans un espace de Banach de dimension infinie, où la première approche est irréalisable.)λu
Christian Clason
la source