Começarei com uma observação geral: informações de primeira ordem (ou seja, usando apenas gradientes que codificam a inclinação) podem fornecer apenas informações direcionais: podem dizer que o valor da função diminui na direção da pesquisa, mas não por quanto tempo . Para decidir até onde ir na direção da pesquisa, você precisa de informações adicionais (a descida do gradiente com comprimentos de passo constantes pode falhar, mesmo para problemas quadráticos convexos). Para isso, você basicamente tem duas opções:
- Use as informações de segunda ordem (que codificam a curvatura), por exemplo, usando o método de Newton em vez da descida gradiente (para a qual você sempre pode usar o comprimento da etapa suficientemente perto do minimizador).1
- Tentativa e erro (com o que, é claro, quero dizer usando uma pesquisa de linha adequada , como o Armijo).
Se, enquanto você escreve, você não tem acesso a segundas derivadas e a avaliação da função objetiva é muito cara, sua única esperança é comprometer-se: use informações aproximadas de segunda ordem suficientes para obter uma boa extensão de etapa candidata para que uma linha a pesquisa precisa apenas de avaliações (ou seja, no máximo um múltiplo constante (pequeno) do esforço necessário para avaliar seu gradiente).O(1)
Uma possibilidade é usar comprimentos de passo Barzilai - Borwein (veja, por exemplo, Fletcher: no método Barzilai-Borwein . Otimização e controle com aplicativos, 235–256, Appl. Optim., 96, Springer, Nova York, 2005 ). A idéia é usar uma aproximação de diferença finita da curvatura ao longo da direção da busca para obter uma estimativa do tamanho da etapa. Especificamente, escolha arbitrário, defina e, em seguida, para :g 0 : = ∇ f ( x 0 ) k = 0 , . . .α0>0g0:=∇f(x0)k=0,...
- Conjunto esk=−α−1kgkxk+1=xk+sk
- gk+1=∇f(xk+1)yk=gk+1−gk
- αk+1=(yk)Tyk(yk)Tsk
f(xk+1)f(xk)σk∈(0,α−1k)
f(xk−σkgk)≤maxmax(k−M,1)≤j≤kf(xj)−γσk(gk)Tgk,
onde é o parâmetro típico de Armijo e controla o grau de monotonicidade (por exemplo, ). Há também uma variante que usa valores de gradiente em vez de valores de função, mas no seu caso, o gradiente é ainda mais caro de avaliar do que a função, portanto, não faz sentido aqui. (Observação: é claro que você pode tentar aceitar cegamente o comprimento dos passos do BB e confiar na sua sorte, mas se precisar de algum tipo de robustez - como você escreveu em seus comentários - seria uma péssima idéia).
γ∈(0,1)MM=10
Uma abordagem alternativa (e, na minha opinião, muito melhor) seria usar essa aproximação de diferenças finitas já no cálculo da direção da pesquisa; isso é chamado de método quase-Newton . A idéia é construir incrementalmente uma aproximação do Hessian usando diferenças de gradientes. Por exemplo, você pode (a matriz de identidade) e, para resolve
e defina
com como acima e . (Isso é chamado atualização Broyden∇2f(xk)H0=Idk=0,…
Hksk=−gk,(1)
ykxk+1=xk+skHk+1=Hk+(yk−Hksk)T(sk)T(sk)Tsk
ykxk+1=xk+ske raramente é usado na prática; uma atualização melhor, mas um pouco mais complicada, é a atualização do
BFGS , para a qual - e mais informações - refiro-me ao livro Nocedal
Optimization de Nocedal e Wright .) A desvantagem é que: a) isso exigiria a solução de um sistema linear em cada etapa (mas apenas do tamanho do desconhecido que, no seu caso, é uma condição inicial, portanto, o esforço deve ser dominado pela resolução de PDEs para obter o gradiente; também existem regras de atualização para aproximações do Hessian
inverso , que exigem apenas o cálculo de uma única matriz - produto vetorial) eb) você ainda precisa de uma pesquisa de linha para garantir a convergência ...
Felizmente, neste contexto, existe uma abordagem alternativa que utiliza todas as avaliações de funções. A idéia é que, para simétrico e definido positivo (que é garantido para a atualização BFGS), resolver seja equivalente a minimizar o modelo quadrático
Em um método de região confiável , você faria isso com a restrição adicional que , em que é um raio da região confiável adequadamente escolhido (que desempenha o papel do comprimento da etapa ). A idéia principal agora é escolher esse raio de forma adaptável, com base na etapa computada. Especificamente, você olha para a proporção
(1) q k ( s ) = 1Hk(1)
qk(s)=12sTHks+sTgk.
∥s∥≤ΔkΔkσkρk:=f(xk)−f(xk+sk)f(xk)−qk(sk)
da redução real e prevista no valor da função. Se for muito pequeno, seu modelo estava incorreto e você descartará e tente novamente com . Se estiver próximo de , seu modelo é bom e você define e aumenta . Caso contrário, basta definir e deixar paz. Para calcular o minimizador real de
ρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskmin∥s∥≤Δkqk(s), existem várias estratégias para evitar a necessidade de resolver o problema de otimização com restrições completas; o meu favorito é
o método de CG truncado de Steihaug . Para mais detalhes, refiro-me novamente a Nocedal e Wright.