Je ne suis pas un expert dans ces domaines, mais je pensais que je les mettrais de toute façon pour voir ce que la communauté pensait. Les corrections sont les bienvenues.
Une méthode de plus en plus populaire, qui n'est pas très simple à mettre en œuvre, est appelée Hamiltonian Monte Carlo (ou parfois Hybrid Monte Carlo). Il utilise un modèle physique avec une énergie potentielle et cinétique pour simuler une balle roulant autour de l'espace des paramètres, comme décrit dans cet article par Radford Neal. Le modèle physique nécessite une quantité considérable de ressources de calcul, vous avez donc tendance à obtenir beaucoup moins de mises à jour, mais les mises à jour ont tendance à être moins corrélées. HMC est le moteur du nouveau logiciel STAN qui est développé comme une alternative plus efficace et flexible aux BUGS ou JAGS pour la modélisation statistique.
Il existe également tout un ensemble de méthodes qui impliquent de «chauffer» la chaîne de Markov, que vous pouvez considérer comme introduisant du bruit thermique dans le modèle et augmentant les chances d'échantillonnage des états à faible probabilité. À première vue, cela semble être une mauvaise idée, car vous voulez que le modèle échantillonne proportionnellement à la probabilité postérieure. Mais vous finissez par utiliser les états "chauds" pour mieux mélanger la chaîne. Les échantillons réels ne sont collectés que lorsque la chaîne est à sa température "normale". Si vous le faites correctement, vous pouvez utiliser les chaînes chauffées pour trouver des modes auxquels une chaîne ordinaire ne pourrait pas accéder en raison de grandes vallées de faible probabilité bloquant la transition de mode à mode. Voici quelques exemples de ces méthodes: MCMC couplé à Metropolis ,, trempe parallèle et échantillonnage d'importance recuit .
Enfin, vous pouvez utiliser le Monte Carlo séquentiel ou le filtrage de particules lorsque le taux de rejet serait si élevé que ces autres méthodes échoueraient toutes. Je connais le moins cette famille de méthodes, donc ma description peut être incorrecte ici , mais ma compréhension est que cela fonctionne comme ça. Vous commencez par exécuter votre échantillonneur préféré, même si les chances de rejet sont essentiellement de un. Plutôt que de rejeter tous vos échantillons, vous choisissez les moins répréhensibles et initialisez de nouveaux échantillonneurs à partir de là, en répétant le processus jusqu'à ce que vous trouviez des échantillons que vous pouvez réellement accepter. Ensuite, vous revenez en arrière et corrigez le fait que vos échantillons n'étaient pas aléatoires, car vous n'avez pas initialisé vos échantillonneurs à partir d'emplacements aléatoires.
J'espère que cela t'aides.