J'essaie d'implémenter HMC avec une matrice de masse non diagonale, mais je me fais trébucher par une partie de la terminologie.
Selon BDA3 et la revue de Neal, le terme d'énergie cinétique (qui, je suppose, est toujours utilisé pour des raisons de commodité) est
Ceci est reconnaissable également appelée normale multivariée avec zéro matrice de covariance . BDA3 (page 301) dit
Pour simplifier, nous utilisons couramment une matrice de masse diagonale, M. Si c'est le cas, les composantes de φ sont indépendantes, avec φj ∼ N (0, Mjj) pour chaque dimension j = 1,. . . , ré. Il peut être utile que M soit à peu près à l'échelle avec la matrice de covariance inverse de la distribution postérieure, (var (θ | y)) ^ - 1.
(Je lis N (0, M)) comme une normale multivariée avec un zéro moyen et une covariance M.)
La partie qui me fait trébucher est où dit que "cela peut être utile pour à l'échelle à peu près avec la matrice de covariance inverse de la distribution postérieure ...".
Et puis aussi juste avant que l'échantillon de l' élan qui commence les étapes de LeapFrog ( ) est tirée d'une normale multivariée avec covariance matrice .
Alors c'est quoi? Pour construire un bon M pour HMC, dois-je estimer la covariance ou la matrice de précision du postérieur? Même si est la matrice de covariance de l'énergie cinétique, l'utilisation d'un qui est une estimation de la matrice de précision du postérieur donnera un algorithme plus efficace?
Question secondaire: quelle est l'intuition qui pourrait me guider ici?
Voulez-vous utiliser une matrice de précision pour que l'élan pousse orthogonalement au potentiel / postérieur pour améliorer le mélange?
OU voulez-vous que l'élan se propage vers la partie de masse à forte probabilité de la partie postérieure (parce que c'est de là que vous voulez prélever la plupart des échantillons).
ps La raison pour laquelle je n'utilise pas la matrice d'identité pour est parce que pour mon problème, je parviens à obtenir une estimation décente de la matrice de covariance de ma dimension postérieure assez élevée (~ 1000) au préalable.
la source
Un moyen simple de voir pourquoi devrait être la covariance inverse de la distribution à partir de laquelle vous souhaitez échantillonner consiste à envisager l'échantillonnage à partir d'une normale multivariée avec une moyenne aribitrary et une covariance . Dans ce cas, les équations hamiltoniennes du mouvement peuvent être résolues exactement (c.-à-d., Pas besoin d'intégration de saute-mouton). Maintenant, pour deux choses magiques se produisent: (i) les équations de mouvement pour chaque découple de coordonnées du reste, et (ii) les matrices et s'annulent et disparaissent des équations de mouvement. La solution est un ensemble d'oscillateurs à fréquence égale, qui peut être considéré comme produisant le mélange le plus rapide possible. Voir quelques détails dans les eqs (2.31) - (2.35)M μ Σ M=Σ−1 Σ M ici .
Dans une distribution générique, cette approche ne serait qu'une approximation.
la source
Partie saillante de la dynamique de transformation linéaire à l'aide de la covariance estimée.
Étant donné une estimation de la matrice de covariance de la HMC postérieure, il faut échantillonner à partir de:Σ^
Dessinezϕ∼N(0,Σ^−1)
Simulez la dynamique hamiltonienne. (Répétition L fois)
A. Demi-étape: .ϕ←ϕ+12ϵddθlogp(θ∣y)
Étape complète: .θ←θ+ϵΣ^ϕ
C. Demi-étape: .ϕ←ϕ+12ϵddθlogp(θ∣y)
Accepter / rejeter.
(Si c'est le cas, ne votez pas cela, votez @lacerbi)
la source