Lorsqu'un jacobien analytique est disponible, vaut-il mieux approximer le hessien par , ou par différences finies du jacobien?

19

Disons que je calcule certains paramètres du modèle en minimisant la somme des résidus au carré, et je suppose que mes erreurs sont gaussiennes. Mon modèle produit des dérivées analytiques, donc l'optimiseur n'a pas besoin d'utiliser des différences finies. Une fois l'ajustement terminé, je veux calculer les erreurs standard des paramètres ajustés.

Généralement, dans cette situation, la Hesse de la fonction d'erreur est considérée comme étant liée à la matrice de covariance par: où est la variance des résidus.σ 2

σ2H1=C
σ2

Lorsqu'aucune dérivée analytique de l'erreur n'est disponible, il est généralement impossible de calculer la Hesse, donc est considéré comme une bonne approximation.JTJ

Cependant, dans mon cas, j'ai un J analytique, il est donc relativement bon marché pour moi de calculer H par différenciation finie J.

Donc, ma question est la suivante: serait-il plus précis d'approximer H en utilisant mon J exact et d'appliquer l'approximation ci-dessus, ou d'approximer H par différenciation finie J?

Colin K
la source

Réponses:

12

Bonne question. Rappelons d'abord d'où vient cette approximation . Soit vos points de données, votre modèle et les paramètres de votre modèle. Alors la fonction objective du problème des moindres carrés non linéaires est où est le vecteur des résidus, . La exacte de la fonction objectif est . Donc, l'erreur dans cette approximation est( x i , y i ) f ( ) β 1HJTJ(xi,yi)f()βrri=yi-f(xi,β)H=JTJ+ri2riH-JTJ=ri2ri12rTrrri=yif(xi,β)H=JTJ+ri2riHJTJ=ri2ri. C'est une bonne approximation lorsque les résidus eux-mêmes sont petits; ou lorsque la dérivée 2e des résidus est petite. Les moindres carrés linéaires peuvent être considérés comme un cas spécial où la dérivée seconde des résidus est nulle.

Quant à l'approximation des différences finies, elle est relativement bon marché. Pour calculer une différence centrale, vous aurez besoin d'évaluer la jacobienne un montant supplémentaire fois (une différence avant vous coûtera évaluations supplémentaires, donc je ne voudrais pas déranger). L'erreur de l'approximation de la différence centrale est proportionnelle à et , où est la taille du pas. La taille de pas optimale est , où2nn4rh2h ϵ 1h ϵhϵ13ϵest la précision de la machine. Donc, à moins que les dérivées des résidus explosent, il est assez clair que l'approximation des différences finies devrait être beaucoup mieux. Je dois souligner que, si le calcul est minimal, la comptabilité n'est pas anodine. Chaque différence finie sur le jacobien vous donnera une ligne de la toile de jute pour chaque résidu. Vous devrez ensuite remonter le Hessian en utilisant la formule ci-dessus.

Il existe cependant une troisième option. Si votre solveur utilise une méthode Quasi-Newton (DFP, BFGS, Bryoden, etc.), il se rapproche déjà de la Hesse à chaque itération. L'approximation peut être assez bonne, car elle utilise la fonction objectif et les valeurs de gradient de chaque itération. La plupart des solveurs vous donneront accès à l'estimation finale de Hesse (ou son inverse). Si c'est une option pour vous, je l'utiliserais comme estimation de la Hesse. Il est déjà calculé et ce sera probablement une assez bonne estimation.

Bill Woessner
la source
Excellente réponse, merci. La justifier par une comparaison de l'erreur d'estimation dans chaque cas est très instructif. Puis-je vous demander comment vous savez que est l'étape optimale pour les différences finies? Je n'avais jamais vu ça auparavant. ϵ1/3
Colin K
5
C'est une vieille astuce pour équilibrer l'erreur de troncature contre l'erreur d'arrondi. Évidemment, pour minimiser l'erreur de troncature, vous voulez que aussi petit que possible. Mais une fois que devient trop petit, vous commencez à subir une erreur d'arrondi importante. La dérivation est relativement simple. En supposant une différence centrale, l'erreur de troncature est proportionnelle à . L'erreur d'arrondi est toujours proportionnelle à . Ajoutez les deux et minimisez sur . Vous obtenez . h h 2 f ( x ) ϵ f ( x )hhh2f(x) hhϵ1ϵf(x)hhhϵ13
Bill Woessner
3
Cela ne vaut que pour les différences centrales. Pour les différences directes, la taille de pas optimale est . Il existe également d'autres astuces. Par exemple, assurez-vous de savoir réellement ce qu'est . Je sais que cela semble idiot, mais des choses étranges peuvent se produire dans l'arithmétique à virgule flottante. Voici un moyen simple de vous assurer que vous avez la bonne valeur de : . Mathématiquement, bien sûr, . Mais si vous utilisez des valeurs qui ne peuvent pas être représentées exactement en virgule flottante (comme ), vous verrez que ce n'est pas le cas. hhhactual=hdesiredh=0,0001hϵ12hhh_actual = (x + h_desired) - xhactual=hdesiredh=0.0001
Bill Woessner
Peut-être que ce contenu pourrait être ajouté à votre réponse, plutôt que les commentaires. De cette façon, les futurs utilisateurs n'auront pas à parcourir une section de commentaires étendue pour trouver des éléments directement liés aux affirmations formulées dans la réponse.
Sycorax dit Réintégrer Monica
2
Oh mon Dieu. Une approximation quasi-newtonienne de la Hesse peut être une terrible estimation de la Hesse, et donc entraîner une très mauvaise estimation de la matrice de covariance. Il peut bien servir à faciliter la progression de l'algorithme vers l'optimum, mais peut être assez médiocre en tant qu'estimation de la Hesse.
Mark L. Stone