Ajudar a decidir entre interpolação cúbica e quadrática na pesquisa de linha

9

Estou realizando uma pesquisa de linha como parte de um algoritmo quase-Newton BFGS. Em uma etapa da pesquisa de linha, uso uma interpolação cúbica para me aproximar do minimizador local.

Seja a função de interesse. Eu quero encontrar um tal que .x f ( x ) 0f:RR,fC1xf(x)0

Deixe- , , e ser conhecido. Suponha também . Eu ajusto um polinômio cúbico modo que , , e .f ( x k ) f ( x k + 1 ) f ( x k + 1 ) 0 x k < x < x k + 1 Q ( x ) = a x 3 + b x 2 + c x + d Q ( 0 ) = ff(xk)f(xk)f(xk+1)f(xk+1)0xk<x<xk+1Q(x)=ax3+bx2+cx+dQ ( 0 ) = f ( x k ) Q ( x k + 1 - x k ) = f ( x k + 1 ) Q ( x k + 1 - x k ) = f ( x k + 1 )Q(0)=f(xk)Q(0)=f(xk)Q(xk+1xk)=f(xk+1)Q(xk+1xk)=f(xk+1)

a equação quadrática: para o meu procurado usando a solução de forma fechada.x (1):Q(xxk)=0x

O exemplo acima funciona bem na maioria dos casos, exceto quando como a solução de formulário fechado para divide por que fica muito próxima ou exatamente a .( 1 ) a 0f(x)=O(x2)(1)a0

Minha solução é olhar para e se ele é "muito pequeno" simplesmente tomar a solução de forma fechada para o minimizador do polinômio quadrático para o qual eu já tenho os coeficientes do ajuste anterior para .Q 2 ( x ) = b x 2 + c x + d b , c , d Q ( x )aQ2(x)=bx2+cx+db,c,dQ(x)

Minha pergunta é: como elaborar um bom teste para quando fazer a interpolação quadrática sobre o cúbico? A abordagem ingênua para testar é ruim devido a razões numéricas, então estou olhando para , onde é a precisão da máquina, mas eu sou incapaz de decidir um bom que é invariante escala de .| a | < ϵ τ ϵ τ fa0|a|<ϵτϵτf

Pergunta do bônus: existem problemas numéricos com o uso dos coeficientes do ajuste cúbico com falha ou devo executar um novo ajuste quadrático com a maneira apropriada de calcular os coeficientes?b,c,d

Editar para esclarecimentos: Na minha pergunta, é na verdade o que é comumente conhecido como na literatura. Eu apenas simplifiquei a formulação da pergunta. O problema de otimização que estou resolvendo não é linear em 6 dimensões. E eu estou bem ciente de que as condições de Wolfe são suficientes para a pesquisa de linha BFGS, portanto, afirmando que eu estava interessado em ; Estou procurando por algo que satisfaça as condições fortes de Wolfe e usar o minimizador da aproximação cúbica é um bom passo ao longo do caminho.ϕ ( α ) = f ( ˉ x k + α ¯ p k ) f ( x ) 0fϕ(α)=f(x¯k+αpk¯)f(x)0

A questão não era sobre BFGS, mas como determinar quando o coeficiente cúbico é pequeno o suficiente para que uma aproximação quadrática seja mais apropriada.

Editar 2: Atualizar notação, as equações permanecem inalteradas.

Emily L.
fonte

Respostas:

4

Hmm ... a interpolação cúbica não é inédita na pesquisa de linhas, mas geralmente é um exagero.

Se estou lendo seu problema corretamente, é apenas um escalar? Nesse caso, o BFGS provavelmente não é a maneira mais eficiente de resolver seu problema. Algoritmos de otimização escalar, como o método de Brenth, provavelmente resolverão seu problema mais rapidamente.x

Existem vários algoritmos de pesquisa de linha para BFGS. Para meus próprios aplicativos, usando o BFGS com memória limitada (L-BFGS), esta pesquisa de linhas funciona muito bem. Lembre-se de que você só precisa satisfazer as condições de Wolfe e provavelmente não está ganhando muito encontrando o minimizador exato.

De qualquer forma, para realmente responder à sua pergunta: eu consideraria simplesmente mudar para o polinômio quadrático se resolver o cúbico produzir valores "ruins", como NaN ou Inf (como é feito aqui ).

Não sei bem o que você quer dizer com ? Esses coeficientes para o ajuste cúbico não serão os mesmos que para o ajuste quadrático, portanto você não poderá reutilizá-los.b,c,d

Por fim, convém usar , em vez de , pois sua função (provavelmente) será apenas aproximadamente cúbica ou quadrática localmente, e e devem ser mais próximos um do outro (e a solução) do que .f ( x 0 ) x k x k - 1 x 0f(xk1)f(x0)xkxk1x0

Espero que isto ajude.

LKlevin
fonte
Editado para maior clareza. Ao "usar ", quero dizer que fiz um ajuste cúbico em e descobri que portanto, tenho que já é um polinômio quadrático. E a pergunta era se os coeficientes obtidos para esse ajuste são sensatos para usar na interpolação ou se devo recalcular novos coeficientes para um ajuste quadrático típico. Q ( x ) = a x 3 + b x 2 + c x + d a 0 Q ( x ) = b x 2 + c x + d b , c , db,c,dQ(x)=ax3+bx2+cx+da0Q(x)=bx2+cx+db,c,d
Emily L.
Ahh, certo, é claro. Não vejo nenhum problema em usar os coeficientes do ponto de vista numérico. O único ponto em que acho que isso importa é muito próximo da solução em que você terminaria de qualquer maneira.
LKlevin
Você pode motivar sua resposta com o cálculo do cubo e a verificação de valores "ruins"? Por que é seguro fazer isso quando ou ? um 0a<<ba0
Emily L.
Quando , e será de aproximadamente aqueles para o caso quadrática. Como a pesquisa de linha BFGS é bastante robusta, você deve usá-las corretamente, mesmo que não sejam completamente precisas. Contanto que você obedeça às condições de Wolfe, obterá convergência. Quanto aos valores "ruins", desde que o computador possa fazer com precisão os cálculos com a precisão que você precisa, tudo está bem. Quando não puder, você começará a ver inf e NaN. b , c da0b,cd
LKlevin
4

Há um artigo de Moré, implementado pela Nocedal, sobre isso:

Jorge J. Moré e David J. Thuente. 1994. Algoritmos de busca de linha com redução suficiente garantida. ACM Trans. Matemática. Softw. 20, 3 (setembro de 1994), 286-307. DOI http://dx.doi.org/10.1145/192115.192132 ( pré-impressão ).

Juan Pablo Frias
fonte
Bem-vindo ao SciComp.SE! Formatei sua postagem para facilitar a localização do artigo. Se você encontrar um link para a implementação do Nocedal, isso seria útil.
Christian Clason