Jak określić optymalną szybkość uczenia się dla spadku gradientu? Myślę, że mógłbym to automatycznie dostosować, jeśli funkcja kosztu zwróci większą wartość niż w poprzedniej iteracji (algorytm się nie zbiegnie), ale nie jestem pewien, jaką nową wartość powinna przyjąć.
regression
machine-learning
gradient-descent
Valentin Radu
źródło
źródło
Odpowiedzi:
(Lata później) poszukaj metody wielkości kroku Barzilai-Borweina; onmyphd.com ma ładny 3-stronicowy opis. Autor mówi
ale to okropne dla jego apletu funkcji 2d Rosenbrock. Jeśli ktoś używa Barzilai-Borwein, prosimy o komentarz.
źródło
Jesteś na dobrej drodze. Powszechnym podejściem jest podwojenie wielkości kroku za każdym razem, gdy wykonujesz udany krok w dół i zmniejszenie o połowę rozmiaru kroku, gdy przypadkowo zejdziesz „za daleko”. Oczywiście możesz skalować o czynnik inny niż 2, ale ogólnie nie robi to dużej różnicy.
Bardziej wyrafinowane metody optymalizacji zapewne nieco przyspieszą konwergencję, ale jeśli z jakiegoś powodu musisz wprowadzić własną aktualizację, powyższe jest atrakcyjnie proste i często wystarczająco dobre.
źródło