Quando um jacobiano analítico está disponível, é melhor aproximar o hessiano por , ou por diferenças finitas do jacobiano?


19

Digamos que eu esteja computando alguns parâmetros do modelo, minimizando a soma dos resíduos ao quadrado e assumindo que meus erros são gaussianos. Meu modelo produz derivadas analíticas, portanto, o otimizador não precisa usar diferenças finitas. Quando o ajuste estiver completo, desejo calcular erros padrão dos parâmetros ajustados.

Geralmente, nessa situação, o Hessiano da função de erro é relacionado à matriz de covariância por: que é a variação dos resíduos.

σ2H−1=C
σ2

Quando nenhuma derivada analítica do erro está disponível, normalmente é impraticável calcular o Hessiano, portanto é tomado como uma boa aproximação.JTJ

No entanto, no meu caso, eu tenho um J analítico, por isso é relativamente barato para eu calcular H diferenciando finitamente J.

Portanto, minha pergunta é a seguinte: Seria mais preciso aproximar H usando meu J exato e aplicando a aproximação acima, ou aproximar H por J finito com diferenciação?

Respostas:


12

Boa pergunta. Primeiro, lembre-se de onde vem essa aproximação . Seja seus pontos de dados, seja seu modelo e sejam os parâmetros do seu modelo. Então a função objetivo do problema de mínimos quadrados não linear é onde é o vetor dos resíduos, . O hessiano exato da função objetivo é . Portanto, o erro nesta aproximação é( x i , y i ) f ( ⋅ ) β 1H≈JTJ(xi,yi)f(⋅)βrrI=yi-f(xi,β)H=JtJ+Σri∇2riH-JtJ=Σri∇2ri12rTrrri=yi−f(xi,β)H=JTJ+∑ri∇2riH−JTJ=∑ri∇2ri. É uma boa aproximação quando os resíduos são pequenos; ou quando a segunda derivada dos resíduos for pequena. Os mínimos quadrados lineares podem ser considerados um caso especial em que a segunda derivada dos resíduos é zero.

Quanto à aproximação por diferenças finitas, é relativamente barato. Para calcular uma diferença central, você precisará avaliar o jacobiano mais vezes (uma diferença a frente custará avaliações adicionais, para que eu não me incomode). O erro da aproximação diferença central é proporcional à e , em que é o tamanho do passo. O tamanho ideal da etapa é , onden ∇ 4 r h 2 h h ~ ε 12nn∇4rh2h ϵh∼ϵ13ϵé precisão da máquina. Portanto, a menos que as derivadas dos resíduos estejam explodindo, é bem claro que a aproximação da diferença finita deve ser MUITO melhor. Devo salientar que, embora o cálculo seja mínimo, a contabilidade não é trivial. Cada diferença finita no jacobiano fornecerá uma linha do hessiano para cada resíduo. Você precisará remontar o Hessian usando a fórmula acima.

Existe, no entanto, uma terceira opção. Se o seu solucionador usar um método Quasi-Newton (DFP, BFGS, Bryoden etc.), ele já estará aproximando o Hessian a cada iteração. A aproximação pode ser bastante boa, pois usa a função objetivo e os valores de gradiente de cada iteração. A maioria dos solucionadores lhe dará acesso à estimativa final do Hessian (ou seu inverso). Se isso é uma opção para você, eu usaria isso como estimativa de Hessian. Já está computado e provavelmente será uma estimativa muito boa.


Excelente resposta, obrigado. Justificar isso com uma comparação do erro de estimativa em cada caso é muito esclarecedor. Posso perguntar como você sabe que é o passo ideal para diferenças finitas? Eu nunca vi isso antes. ϵ1/3
— Colin K

5
Esse é um velho truque para equilibrar erro de truncamento x erro de arredondamento. Obviamente, para minimizar o erro de truncamento, você quer fazer tão pequeno quanto possível. Mas quando fica pequeno demais, você começa a receber um erro de arredondamento significativo. A derivação é relativamente direta. Assumindo uma diferença central, o erro de truncamento é proporcional a . O erro de arredondamento é sempre proporcional a . Adicione os dois e minimize ao longo de . Você obtém . hhh2f‴(x)ϵf(x)hhh∼ϵ13
— Bill Woessner

3
Isso vale apenas para diferenças centrais. Para diferenças avançadas, o tamanho ideal da etapa é . Existem outros truques também. Por exemplo, verifique se você realmente sabe o que é . Eu sei que isso parece bobagem, mas coisas estranhas podem acontecer na aritmética de ponto flutuante. Aqui está uma maneira simples de ter certeza de que o valor correto de : . Matematicamente, é claro, . Mas se você usar valores que não podem ser exatamente representados no ponto flutuante (como ), verá que esse não é o caso. h∼ϵ12hhh_actual = (x + h_desired) - xhactual=hdesiredh=0.0001
— Bill Woessner

Talvez esse conteúdo possa ser adicionado à sua resposta, e não aos comentários. Dessa forma, os usuários futuros não precisam percorrer uma seção de comentários estendida para encontrar material que tenha relação direta com as reivindicações feitas na resposta.
— Sycorax diz Restabelecer Monica

2
Ó meu Deus. Uma aproximação quase-Newton do Hessian pode ser uma estimativa terrível do Hessian e, portanto, resultar em uma estimativa muito pobre da matriz de covariância. Pode servir bem para facilitar a progressão do algoritmo ao ideal, mas pode ser bastante ruim como uma estimativa do Hessian.
— Mark L. Stone
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.