Réglage de l'hyperparamètre dans la régression du processus gaussien

13

J'essaie de régler les hyperparamètres de l'algorithme de régression de processus gaussien que j'ai implémenté. Je veux simplement maximiser la probabilité marginale de log donnée par la formule où K est la matrice de covariance avec le éléments K_ {ij} = k (x_i, x_j) = b ^ {- 1} \ exp (- \ frac {1} {2} (x_i-x_j) ^ TM (x_i-x_j)) + a ^ {- 1 } \ delta_ {ij}M = lI et a, b et l sont des hyperparamètres.

log(y|X,θ)=12yTKy1y12log(det(K))n2log(2π)
K
Kij=k(xi,xj)=b1exp(12(xixj)TM(xixj))+a1δij
M=lIa,bl

la dérivée partielle des paramètres log vraisemblance marginale wrt est donnée par les éléments suivants

log(y|X,θ)dθ=12trace(K1dKdθ)+12(ydKdθK1dKdθy)

Comme les entrées de K sont fonction des paramètres, de sorte faire dérivés et inverse de K . Cela signifie que, lorsqu'un optimiseur basé sur un gradient est utilisé, l'évaluation du gradient à un point donné (valeur de paramètre) nécessitera un recalcul de la matrice de covariance. Dans mon application, cela n'est pas possible car le calcul de la matrice de covariance à partir de zéro et le calcul de son inverse à chaque itération de la montée en gradient est trop cher. Ma question est de savoir quelles sont mes options pour trouver une assez bonne combinaison de ces trois paramètres? et je ne sais pas non plus quel paramètre optimiser en premier et j'apprécierais également toute indication sur cette question.

bfaskiplar
la source
J'ai réussi à utiliser la console HMC pour échantillonner des hyper-paramètres GP pour des ensembles de données de taille modeste.
Sycorax dit Réintégrer Monica le
Bonjour @Sycorax, pourriez-vous nous dire comment vous avez utilisé cette technique pour résoudre ce problème? J'ai le même problème que l'OP a demandé et j'ai pensé à utiliser MCMC pour le résoudre, mais je ne sais pas encore comment le faire.
Willian Fuks
Je viens de coder le GP de Stan. Les hyperparamètres GP ont été déclarés comme paramètres du modèle et déduits en conséquence. Cela a généré un ensemble de prévisions pour chaque itération HMC. Gelman illustre comment tout cela fonctionne dans BDA3.
Sycorax dit Réintégrer Monica le

Réponses:

6

Vous avez raison de dire que vous avez besoin d'un nouveau calcul de matrice de covariance à chaque itération de la montée du gradient. Donc, si le calcul matriciel n'est pas réalisable pour votre environnement, je pense que vous ne pouvez pas utiliser l'optimisation de vraisemblance marginale basée sur un gradient.

Ma suggestion est d'utiliser des méthodes sans gradient pour le réglage des hyperparamètres, telles que la recherche dans la grille, la recherche aléatoire ou la recherche basée sur l'optimisation bayésienne . Ces méthodes sont largement utilisées pour optimiser les hyperparamètres d'autres algorithmes d'apprentissage automatique, par exemple les SVM.

Je suggère la recherche dans la grille pour votre premier essai. Vous formez essentiellement un tableau (grille) d'hyperparamètres possibles, essayez chacun d'eux et recherchez les meilleures performances de validation (ou la meilleure probabilité marginale).

La recherche dans la grille produirait un ensemble d'hyperparamètres sous-optimal, et vous devez spécifier la grille par vous-même (astuce: créer une grille sur une échelle logarithmique) mais beaucoup moins de calculs sont nécessaires. (et vous n'avez pas besoin de dégradé!)

Si vous n'êtes pas familier avec la recherche de grille, vous pouvez consulter Wikipedia: Hyperparameter Optimization - Grid Search

Sangwoong Yoon
la source