Je souhaite maximiser une fonction , où θ ∈ R p .
Le problème est que je ne connais pas la forme analytique de la fonction ou de ses dérivés. La seule chose que je peux faire est d'évaluer la fonction point sage, en branchant une valeur et obtenir une estimation de NOISY f ( θ * ) à ce moment - là. Si je veux, je peux diminuer la variabilité de ces estimations, mais je dois payer des coûts de calcul croissants.
Voici ce que j'ai essayé jusqu'à présent:
Descente la plus raide stochastique avec des différences finies: elle peut fonctionner mais elle nécessite beaucoup de réglages (ex. Séquence de gain, facteur d'échelle) et elle est souvent très instable.
Recuit simulé: cela fonctionne et il est fiable, mais il nécessite de nombreuses évaluations de fonctions, donc je l'ai trouvé assez lent.
Je demande donc des suggestions / idées sur une méthode d'optimisation alternative possible qui peut fonctionner dans ces conditions. Je garde le problème aussi général que possible afin d'encourager les suggestions de domaines de recherche différents du mien. Je dois ajouter que je serais très intéressé par une méthode qui pourrait me donner une estimation de la Hesse à la convergence. En effet, je peux l'utiliser pour estimer l'incertitude des paramètres . Sinon, je devrai utiliser des différences finies autour du maximum pour obtenir une estimation.
la source
Réponses:
Notre package Matlab SnobFit a été créé précisément à cet effet. Aucune hypothèse sur la distribution du bruit n'est nécessaire. De plus, les valeurs des fonctions peuvent être fournies via des fichiers texte, vous pouvez donc les appliquer aux fonctions implémentées dans n'importe quel système capable d'écrire un fichier texte. Voir
http://www.mat.univie.ac.at/~neum/software/snobfit/
SnobFit a été développé pour une application où la fonction à optimiser n'existait même pas, et les valeurs de fonction (une mesure de la qualité de fabrication) ont été obtenues par un équipement spécialisé et coûteux créant des échantillons de produits et les mesurant à la main, résultant en environ 50 fonctions évaluations par jour.
la source
Vous pouvez essayer plusieurs techniques d' optimisation bayésienne . Les plus simples sont basées sur le processus gaussien:
Ils opèrent en formant une fonction postérieure sur des fonctions plausibles donnant des observations jusqu'à présent, et suggérant le point suivant pour apprendre rapidement la fonction ainsi que pour trouver les maxima globaux (voir mon article de blog ).
Un autre avantage est que vous pouvez estimer la Hesse aux maxima. Cependant, vous devez spécifier un modèle de bruit.
la source
L'algorithme SPSA de James Spall (abréviation de Stochastic Perturbation Simulated Annealing, si je me souviens bien) a été conçu exactement pour ce type de problème. Il a quelques papiers où il l'utilise pour des problèmes comme celui que vous décrivez.
la source