Wdrażam modele Probabilistic Matrix Factorization w theano i chciałbym skorzystać z reguł Adam gradient descent.Czy jest nadzieja na wykorzystanie Adamowej implementacji Lasagne do probabilistycznej Matrix Factorization?
Moim celem jest posiadanie kodu, który jest tak niezmieniony, jak to tylko możliwe, co oznacza, że nie chcę jawnie śledzić ilości "m" i "v" z algorytmu Adama.
Wygląda na to, że jest to możliwe, zwłaszcza po seeing how Lasagne's Adam is implemented: ukrywa on liczbę "m" i "v" w regułach aktualizacji theano.function.
Działa to, gdy formułowane jest ujemne logarytmu wiarygodności dla każdego terminu, który obsługuje inną ilość. Ale w probabilistycznej Matrix Factorization każdy termin zawiera produkt kropki jednego utajonego wektora użytkownika i jednego utajonego wektora przedmiotów. W ten sposób, jeśli przedstawię przypadek Adama Lasagne na każdym semestrze, będę miał wiele wielkości "m" i "v" dla tego samego utajonego wektora, co nie jest jak Adam ma działać.
Ja także posted on Lasagne's group, faktycznie twice, gdzie jest trochę więcej szczegółów i kilka przykładów.
Myślałem o dwóch możliwych implementacji:
- każdy istniejący rating (co oznacza, że każdy istniejący termin w globalnym NLL funkcji celu) posiada własne Adama zaktualizowany za pośrednictwem dedykowanego wezwanie do theano.function. Niestety prowadzi to do niewłaściwego użycia Adama, ponieważ ten sam utajony wektor będzie powiązany z różnymi ilościami "m" i "v" używanymi przez algorytm Adama, który nie jest tym, w jaki sposób Adam powinien działać.
- Wywołanie Adama na cały obiektywny NLL, który sprawi, że mechanizm aktualizacji będzie jak zwykłe Gradient Descent zamiast SGD, z wszystkimi znanymi wadami (wysoki czas obliczeń, pozostawanie w lokalnych minimach itp.).
Moje pytania są następujące:
może jest tam coś, czego nie rozumiem, w jaki sposób Lasagne Adam działa?
Czy opcja numer 2 byłaby faktycznie podobna do SGD, w tym sensie, że każda aktualizacja wektora ukrytego wpłynie na inną aktualizację (w tym samym wywołaniu Adama), która korzysta z tego zaktualizowanego wektora?
Czy mają Państwo inne sugestie dotyczące sposobu wdrożenia?
Każdy pomysł na rozwiązanie tego problemu i unikanie ręcznego utrzymywania replikowanych wektorów i macierzy dla wielkości "v" i "m"?
Wygląda na to, że Q byłoby bardziej w domu na http://stats.stackexchange.com/ – redcalx
@redcalx: Nie zgadzam się, problem polega tylko na tym, jak * implementuj * Adam. – fstab
Nie czytałem PMF w szczegółach i nie jestem użytkownikiem Lasagne, ale czy możliwe jest wyrażenie celu optymalizacji jako pojedynczej funkcji theano parametrów twojego modelu? Jeśli tak, to z pewnością można to zrobić w czystym theano. – Kh40tiK