Entendendo o custo do método adjunta para otimização com restrição de pde

11

Estou tentando entender como o método de otimização baseado em adjuntos funciona para uma otimização restrita do PDE. Particularmente, estou tentando entender por que o método adjunta é mais eficiente para problemas em que o número de variáveis ​​de design é grande, mas o "número de equações é pequeno".

O que eu entendo:

Considere o seguinte problema de otimização restrita do PDE:

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

onde I é uma função objetiva (suficientemente contínua) de uma variável de projeto vetorial β e um vetor de variável de campo desconhecida u(β) que depende das variáveis ​​de design, e R(u) é a forma residual do PDE.

Claramente, podemos as primeiras variações de I e R como

δI=Iβδβ+Iuδu

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

Introduzindo um vetor de multiplicadores de lagrange λ , a variação na função objetivo pode ser escrita como

δI=Iβδβ+Iuδu+λT[Rβδβ+Ruδu]

Reorganizando os termos, podemos escrever:

δI=[Iβ+λTRβ]δβ+[Iu+λTRu]δu

Portanto, se formos capazes de resolver modo queλ

Iu+λTRu=0 (adjoint equation)

Então, o gradiente é avaliado somente em termos das variáveis ​​de design .δI=[Iβ+λTRβ]δββ

Assim, um algoritmo de otimização baseado em loop repetiria as seguintes etapas:

  1. Dadas as variáveis ​​de design atuaisβ
  2. Solução para as variáveis ​​de campo (do PDE)u
  3. Resolva para os multiplicadores de lagrange (da equação adjunta)λ
  4. Calcular gradientesIβ
  5. Atualizar variáveis ​​de designβ

Minha pergunta

Como esse "truque" adicional melhora o custo da otimização por iteração no caso em que o número de variáveis ​​de design é grande? Ouvi dizer que o custo da avaliação de gradiente para o método adjacente é 'independente' do número de variáveis ​​de design. Mas como exatamente isso é verdade?

Tenho certeza de que há algo muito óbvio que de alguma forma estou ignorando.

Paulo
fonte
3
A propósito, o multiplicador de Lagrange é geralmente adicionado ao objetivo funcional, não à variação; assim . Definir a derivada em relação a como zero produz a equação adjunta e inserir esta (e a solução da equação de estado ) na derivada em relação a produz o gradiente. Se você começar com a formulação fraca do PDE, as coisas ficam ainda mais simples: basta inserir o multiplicador Lagrange no lugar da função de teste. Não há necessidade de forma forte ou integração parcial em qualquer lugar. minu,βmaxλI(u,β)+λTR(u,β)uuR(u,β)=0β
Christian Clason
1
A parte mais cara de qualquer simulação é a fase de resolução. Usando o adjunto, você obtém o gradiente em duas soluções, muito mais barato comparado às diferenças finitas, nas quais você precisa pelo menos n + 1, n sendo o número de parâmetros livres em seu modelo.
Stali

Respostas:

10

Como esse "truque" adicional melhora o custo da otimização por iteração no caso em que o número de variáveis ​​de design é grande?

Penso no custo de uma perspectiva de álgebra linear. (Veja estas notas de Stephen G. Johnson , que acho mais intuitivas que a abordagem multiplicadora de Lagrange). A abordagem avançada equivale a solucionar diretamente as sensibilidades:

uβ=(Ru)1Rβ

que envolve resolver um sistema linear para cada parâmetro no vetor , e avaliarβ

dIdβ=Iβ+Iuuβ,

onde indica uma derivada total e indica uma derivada parcial.d

A abordagem adjunta observa que

dIdβ=IβIu(Ru)1Rβ,

para que a variável adjunta (multiplicador de Lagrange) possa ser definida porλ

Iu(Ru)1=λT,

que corresponde à equação adjunta

Iu+λTRu=0.

Esse reagrupamento de termos requer apenas uma resolução linear, em vez de uma resolução linear para cada parâmetro, o que torna a avaliação adjunta barata para o caso de muitos parâmetros.

Ouvi dizer que o custo da avaliação de gradiente para o método adjacente é 'independente' do número de variáveis ​​de design. Mas como exatamente isso é verdade?

Não é totalmente independente; presumivelmente, o custo da avaliação e aumentará com o número de parâmetros. As soluções lineares, no entanto, ainda terão o mesmo tamanho, desde que o tamanho de não seja alterado. O pressuposto é que as soluções são muito mais caras que as avaliações de função.(I/β)(R/β)u

Geoff Oxberry
fonte
8

Em poucas palavras, a vantagem vem do fato de que, para calcular derivadas do objetivo reduzido , você realmente não precisa conhecer a derivada de em relação a como um objeto separado, mas apenas a parte dele que leva a variações em .I(β,u(β))u(β)βI(β,u(β))

Deixe-me mudar para uma notação eu sou um pouco mais confortável com: ( ser o variável de projeto, sendo a variável de estado e sendo o objetivo). Digamos que seja bom o suficiente para aplicar o teorema da função implícita, então a equação tem uma solução única que é continuamente diferenciável em relação a e a derivada é dada pela solução de ( e são os derivados parciais) .

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

Isso significa que você pode definir o objetivo reduzido , que também é diferenciável (se for). Uma maneira de caracterizar o gradiente é através de derivadas direcionais (por exemplo, calcule todas as derivadas parciais em relação a uma base do espaço de design). Aqui, a derivada direcional na direção é dada pela regra da cadeia como Se for bom, a única coisa difícil de calcular é para determinado . Isso pode ser feito multiplicando porj(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)hda direita e resolvendo (permitido pelo teorema da função implícita), ou seja, calculando e inserindo esta expressão em . Na otimização com restrição de PDE, isso equivale a resolver um PDE linearizado para cada vetor base do espaço de design.y(u)h
(3)[y(u)h]=ey(y(u),u)1[eu(y(u),u)h]
(2) h

No entanto, se encontrarmos um operador tal que então esse deve ser o gradiente desejado. Olhando para , podemos escrever (com sendo o operador adjunto), então tudo o que precisamos calcular é . Usando isso , isso pode ser feito usando , ou seja, computando e definindo Na otimização com restrição de PDE,j

j(u;h)=j,hfor all h,
(1)
Jy(y(u),u),y(u)h=y(u)Jy(y(u),u),h
y(u)y(u)jy(y(u),u)(AB)=BA(3)
λ:=ey(y(u),u)Jy(y(u),u)
j(u)=eu(y(u),u)λ+Ju(y(u),u).
Jy(y(u),u)geralmente é algum tipo de resíduo, e computação envolve a solução de um único PDE (linear) adjacente, independente da dimensão do espaço de design. (De fato, isso funciona mesmo para parâmetros distribuídos, isto é, se é uma função em algum espaço de Banach de dimensão infinita, onde a primeira abordagem é inviável.)λu
Christian Clason
fonte