Osoba z zewnątrz w polu ML / DL; rozpoczął kurs głębokiego uczenia Udacity oparty na Tensorflow; wykonanie zadania 4 zadanie 4; próba dostrojenia szybkości uczenia się za pomocą następującej konfiguracji:
- Wielkość partii 128
- Liczba kroków: wystarczy, aby wypełnić 2 epoki
- Rozmiary ukrytych warstw: 1024, 305, 75
- Inicjalizacja wagi: normalnie obcięta ze standardowym. odchylenie sqrt (2 / n), gdzie n jest rozmiarem poprzedniej warstwy
- Prawdopodobieństwo porzucenia: 0,75
- Regularyzacja: nie dotyczy
- Algorytm szybkości uczenia się: rozkład wykładniczy
bawił się parametrami szybkości uczenia się; w większości przypadków nie wydają się działać; kod tutaj ; wyniki:
Accuracy learning_rate decay_steps decay_rate staircase
93.7 .1 3000 .96 True
94.0 .3 3000 .86 False
94.0 .3 3000 .96 False
94.0 .3 3000 .96 True
94.0 .5 3000 .96 True
- Jak powinienem systematycznie dostosowywać tempo uczenia się?
- W jaki sposób współczynnik uczenia się jest powiązany z liczbą kroków?
Odpowiedzi:
Użyj optymalizatora spadku gradientu. To bardzo dobry przegląd.
Jeśli chodzi o kod, spójrz na ten samouczek . To i to kilka przykładów.
Osobiście sugeruję użycie ADAM lub RMSprop. Nadal jest kilka hiperparametrów do ustawienia, ale są też takie „standardowe”, które działają przez 99% czasu. W przypadku programu ADAM możesz obejrzeć jego artykuł, a w przypadku programu RMSprop na tych slajdach .
EDYTOWAĆ
Ok, już używasz optymalizatora gradientu. Następnie możesz przeprowadzić optymalizację hiperparametrów, aby wybrać najlepszą szybkość uczenia się. Ostatnio zaproponowano zautomatyzowane podejście . Ponadto Frank Hutter ma wiele obiecujących prac dotyczących automatycznego dostrajania hiperparametrów.
Mówiąc bardziej ogólnie, zapoznaj się z AutoML Challenge , w którym zespoły mogą również znaleźć kod źródłowy. W tym wyzwaniu celem jest zautomatyzowanie uczenia maszynowego, w tym dostrajanie hiperparametrów.
Na koniec ten artykuł LeCun i najnowszy samouczek DeepMin ( patrz rozdział 8) zawierają pewne spostrzeżenia, które mogą być przydatne w przypadku twojego pytania.
W każdym razie pamiętaj, że (szczególnie w przypadku łatwych problemów), normalne jest, że szybkość uczenia się nie wpływa zbytnio na naukę podczas korzystania z optymalizatora spadku gradientu. Zazwyczaj te optymalizatory są bardzo niezawodne i działają z różnymi parametrami.
źródło
Możesz zautomatyzować dostrajanie hiperparametrów w wielu algorytmach uczenia maszynowego lub samych hiperparametrach dla optymalizatora spadku gradientu, tj. Szybkości uczenia się.
Jedną z popularnych bibliotek do tego celu jest miętówka.
https://github.com/JasperSnoek/spearmint
źródło
Najnowszy automatyczny tuner szybkości uczenia się podano w Adaptacji szybkości uczenia się online z opcją hipergradientu
Ta metoda jest bardzo łatwa do wdrożenia, główny wynik SGD podano jako:
źródło
Aby dostroić hiperparametry (niezależnie od tego, czy jest to szybkość uczenia się, szybkość zanikania, regularyzacja lub cokolwiek innego), musisz ustanowić wstrzymany zestaw danych; ten zestaw danych jest niezależny od zestawu danych szkoleniowych. Po dostrojeniu kilku modeli o różnych konfiguracjach (gdzie konfiguracja = konkretny wybór każdego hiperparametru), wybierasz konfigurację, wybierając ten, który maksymalizuje trzymaną dokładność.
źródło