Strojenie hiperparametrów w regresji procesu Gaussa

13

Próbuję dostroić hiperparametry algorytmu regresji procesu gaussowskiego, który zaimplementowałem. Chcę po prostu zmaksymalizować prawdopodobieństwo krańcowe dziennika podane przez formułę gdzie K jest macierzą kowariancji z elementy 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} gdzie M = lI oraz a, b i l są hiperparametrami.

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

częściowa pochodna logarytmicznych parametrów krańcowych prawdopodobieństwa wrt jest podawana przez następujący

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

Jako wpisy K zależy od parametrów, tak jak pochodne i odwrotność K . Oznacza to, że gdy wykorzystywany jest optymalizator oparty na gradiencie, ocena gradientu w danym punkcie (wartość parametru) będzie wymagała ponownego obliczenia macierzy kowariancji. W mojej aplikacji nie jest to możliwe, ponieważ obliczenie macierzy kowariancji od zera i obliczenie jej odwrotności w każdej iteracji wznoszenia gradientu jest zbyt kosztowne. Moje pytanie brzmi: jakie mam opcje, aby znaleźć dość dobrą kombinację tych trzech parametrów? i nie wiem też, który parametr najpierw zoptymalizować, i doceniłbym również wszelkie wskazówki dotyczące tego problemu.

bfaskiplar
źródło
Z powodzeniem korzystałem z HMC do próbkowania hiper-parametrów GP dla zestawów danych o skromnych rozmiarach.
Sycorax mówi Przywróć Monikę
Cześć @Sycorax, czy możesz nam powiedzieć, jak wykorzystałeś tę technikę do rozwiązania tego problemu? Mam ten sam problem, o jaki poprosił PO i zastanawiałem się nad wykorzystaniem MCMC do jego rozwiązania, ale nie wiem jeszcze, jak to zrobić.
Willian Fuks
Właśnie zakodowałem GP w Stanie. Hiperparametry GP zostały zadeklarowane jako parametry modelu i odpowiednio wywnioskowane. To wygenerowało jeden zestaw prognoz dla każdej iteracji HMC. Gelman ilustruje, jak to wszystko działa w BDA3.
Sycorax mówi Przywróć Monikę

Odpowiedzi:

6

Masz rację, że potrzebujesz nowego obliczenia macierzy kowariancji przy każdej iteracji wynurzania gradientu. Jeśli więc obliczenie macierzy nie jest możliwe dla twojego ustawienia, to myślę, że nie możesz użyć optymalizacji marginalnego prawdopodobieństwa opartej na gradiencie.

Moją sugestią jest stosowanie bezstratnych metod dostrajania hiperparametrów, takich jak wyszukiwanie siatki, wyszukiwanie losowe lub wyszukiwanie oparte na optymalizacji Bayesa . Metody te są szeroko stosowane do optymalizacji hiperparametrów innych algorytmów uczenia maszynowego, np. SVM.

Sugeruję wyszukiwanie siatki przy pierwszej próbie. Zasadniczo tworzysz tabelę (siatkę) możliwych hiperparametrów, wypróbowujesz każdy i szukasz najlepszej wydajności sprawdzania poprawności (lub najlepszego marginalnego prawdopodobieństwa).

Wyszukiwanie w siatce dałoby nieoptymalny zestaw hiperparametrów i musisz sam określić siatkę (wskazówka: zrób siatkę w skali logarytmicznej), ale potrzebne jest znacznie mniej obliczeń. (i nie potrzebujesz gradientu!)

Jeśli nie jesteś zaznajomiony z wyszukiwaniem siatki, możesz wyszukać Wikipedia: Hyperparameter Optimization - Grid Search

Sangwoong Yoon
źródło