Cuando hay un jacobiano analítico disponible, ¿es mejor aproximar el hessiano por

19

Digamos que estoy calculando algunos parámetros del modelo, minimizando la suma de los residuos al cuadrado, y supongo que mis errores son gaussianos. Mi modelo produce derivados analíticos, por lo que el optimizador no necesita usar diferencias finitas. Una vez que se completa el ajuste, quiero calcular los errores estándar de los parámetros ajustados.

En general, en esta situación, se considera que el hessiano de la función de error está relacionado con la matriz de covarianza mediante:

σ2H1=C
donde σ2 es la varianza de los residuos.

Cuando no hay derivados analíticos del error disponibles, generalmente no es práctico calcular el Hessian, por lo que JTJ se toma como una buena aproximación.

Sin embargo, en mi caso, tengo una J analítica, por lo que es relativamente barato para mí calcular H por diferencia finita J.

Entonces, mi pregunta es esta: ¿Sería más preciso aproximar H usando mi J exacta y aplicando la aproximación anterior, o aproximar H por diferencia finita J?

Colin K
fuente

Respuestas:

12

Buena pregunta. Primero, recuerde de dónde proviene esta aproximación Dejar ( x i , y i )HJTJ(xi,yi) sus puntos de datos, sea ​​su modelo y β sean los parámetros de su modelo. Entonces, la función objetivo del problema de los mínimos cuadrados no lineales es 1f()βdonderes el vector de los residuos,ri=yi-f(xi,β). El hessiano exacto de la función objetivo esH=JTJ+ri2ri. Entonces el error en esta aproximación esH12rTrrri=yif(xi,β)H=JTJ+ri2riHJTJ=ri2ri. Es una buena aproximación cuando los residuos, en sí mismos, son pequeños; o cuando la segunda derivada de los residuos es pequeña. Los mínimos cuadrados lineales pueden considerarse un caso especial donde la segunda derivada de los residuos es cero.

En cuanto a la aproximación por diferencias finitas, es relativamente barato. Para calcular una diferencia central, deberá evaluar el jacobiano veces (una diferencia hacia adelante le costará n evaluaciones adicionales, por lo que no me molestaría). El error de la aproximación de diferencia central es proporcional a 4 r y h 22nn4rh2 , en donde es el tamaño del paso. El tamaño de paso óptimo es h ϵ 1h , dondeϵes precisión de la máquina. Entonces, a menos que las derivadas de los residuos estén explotando, está bastante claro que la aproximación de diferencia finita debería ser MUCHO mejor. Debo señalar que, si bien el cálculo es mínimo, la contabilidad no es trivial. Cada diferencia finita en el jacobiano le dará una fila del hessiano por cada residuo. Luego tendrás que volver a montar el Hessian usando la fórmula anterior.hϵ13ϵ

Hay, sin embargo, una tercera opción. Si su solucionador utiliza un método Cuasi-Newton (DFP, BFGS, Bryoden, etc.), ya se está aproximando al Hesse en cada iteración. La aproximación puede ser bastante buena, ya que utiliza la función objetivo y los valores de gradiente de cada iteración. La mayoría de los solucionadores le darán acceso a la estimación final de Hesse (o su inversa). Si esa es una opción para usted, lo usaría como la estimación de Hesse. Ya está calculado y probablemente será una estimación bastante buena.

Bill Woessner
fuente
Excelente respuesta, gracias. Justificarlo con una comparación del error de estimación en cada caso es muy esclarecedor. ¿Puedo preguntar cómo sabes que es el paso óptimo de las diferencias finitas? Nunca he visto eso antes. ϵ1/3
Colin K
55
Ese es un viejo truco para equilibrar el error de truncamiento frente al error de redondeo. Obviamente, para minimizar el error de truncamiento, desea hacer más pequeño posible. Pero una vez que h se vuelve demasiado pequeña, comienza a incurrir en un error de redondeo significativo. La derivación es relativamente sencilla. Suponiendo una diferencia central, el error de truncamiento es proporcional a h 2 f ( x ) . El error de redondeo siempre es proporcional a ϵ fhhh2f(x) . Agregue los dos y minimice sobreh. Tieneshϵf(x)hh . hϵ13
Bill Woessner
3
Esto solo es válido para las diferencias centrales. Para las diferencias de avance, el tamaño de paso óptimo es . También hay otros trucos. Por ejemplo, asegúrese de saber realmente quéesh. Sé que esto suena tonto, pero pueden suceder cosas extrañas en la aritmética de coma flotante. He aquí una forma sencilla de asegurarse de que tiene el valor correcto deh:. Matemáticamente, por supuesto,hactual=hdesired. Pero si usa valores que no se pueden representar exactamente en coma flotante (comoh=0.0001), verá que ese no es el caso. hϵ12hhh_actual = (x + h_desired) - xhactual=hdesiredh=0.0001
Bill Woessner
Quizás este contenido podría agregarse a su respuesta, en lugar de los comentarios. De esa manera, los usuarios futuros no tienen que pasar por una sección de comentarios extendida para encontrar material que se relacione directamente con las afirmaciones hechas en la respuesta.
Sycorax dice Reinstate Monica
2
Oh Dios mío. Una aproximación cuasi-Newton de la arpillera puede ser una estimación terrible de la arpillera y, por lo tanto, puede resultar en una estimación muy pobre de la matriz de covarianza. Puede servir bien para facilitar la progresión del algoritmo al óptimo, pero puede ser bastante pobre como una estimación de la arpillera.
Mark L. Stone