Je vais commencer par une remarque générale: les informations de premier ordre (c'est-à-dire, en utilisant uniquement des gradients, qui codent la pente) ne peuvent que vous donner des informations directionnelles: elles peuvent vous dire que la valeur de la fonction diminue dans le sens de la recherche, mais pas pendant combien de temps . Pour décider jusqu'où aller dans la direction de la recherche, vous avez besoin d'informations supplémentaires (la descente de gradient avec des longueurs de pas constantes peut échouer même pour des problèmes quadratiques convexes). Pour cela, vous avez essentiellement deux choix:
- 1
- Essais et erreurs (j'entends par là bien sûr utiliser une recherche de ligne appropriée comme Armijo).
O(1)
α0>0g0:=∇f(x0)k=0,...
- sk=−α−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,
γ∈(0,1)MM=10
Une approche alternative (et, à mon avis, bien meilleure) consisterait à utiliser déjà cette approximation aux différences finies dans le calcul de la direction de recherche; c'est ce qu'on appelle une méthode quasi-Newton . L'idée est de construire progressivement une approximation de la Hesse en utilisant des différences de gradients. Par exemple, vous pouvez prendre (la matrice d'identité) et pour résoudre
et définissez
avec comme ci-dessus et . (Cela s'appelle la mise à jour Broyden∇2f(xk)H0=Idk=0,…
Hksk=−gk,(1)
Hk+1=Hk+(yk−Hksk)T(sk)T(sk)Tsk
ykxk+1=xk+sket est rarement utilisé dans la pratique; une mise à jour meilleure mais légèrement plus compliquée est la
mise à jour BFGS , pour laquelle - et plus d'informations - je me réfère au livre de Nocedal et Wright
Numerical Optimization .) L'inconvénient est que a) cela nécessiterait la résolution d'un système linéaire à chaque étape (mais seulement de la taille de l'inconnu qui dans votre cas est une condition initiale, donc l'effort doit être dominé par la résolution des PDE pour obtenir le gradient; il existe également des règles de mise à jour pour les approximations de la Hesse
inverse , qui ne nécessitent que le calcul d'une seule matrice -produit vectoriel) et b) vous avez encore besoin d'une recherche de ligne pour garantir la convergence ...
Heureusement, dans ce contexte, il existe une approche alternative qui utilise chaque évaluation de fonction. L'idée est que pour symétrique et positif défini (qui est garanti pour la mise à jour BFGS), la résolution de équivaut à minimiser le modèle quadratique
Dans une méthode de région de confiance , vous le feriez avec la contrainte supplémentaire que , où est un rayon de région de confiance choisi de manière appropriée (qui joue le rôle de la longueur de pas ). L'idée clé est maintenant de choisir ce rayon de manière adaptative, en fonction de l'étape calculée. Plus précisément, vous regardez le rapport
Hk(1)
qk(s)=12sTHks+sTgk.
∥s∥≤ΔkΔkσkρk:=f(xk)−f(xk+sk)f(xk)−qk(sk)
de la réduction réelle et prévue de la valeur de la fonction. Si est très petit, votre modèle était mauvais et vous jetez et réessayez avec . Si est proche de , votre modèle est bon et vous définissez et augmentez . Sinon, vous définissez simplement et laissez seul. Pour calculer le minimiseur réel de
ρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskmin∥s∥≤Δkqk(s), il existe plusieurs stratégies pour éviter d'avoir à résoudre le problème d'optimisation entièrement contraint; mon préféré est
la méthode CG tronquée de Steihaug . Pour plus de détails, je me réfère à nouveau à Nocedal et Wright.