Używam tensorflow do pisania prostych sieci neuronowych w celu trochę badań i miałem wiele problemów z wagami „nan” podczas treningu. Próbowałem wielu różnych rozwiązań, takich jak zmiana optymalizatora, zmiana utraty, rozmiaru danych itp., Ale bezskutecznie. Wreszcie zauważyłem, że zmiana współczynnika uczenia się spowodowała niewiarygodną różnicę w moich wagach.
Przy zastosowaniu współczynnika uczenia się wynoszącego 0,001 (który uważałem za dość konserwatywny) funkcja minimalizacji faktycznie wykładniczo zwiększyłaby stratę. Po jednej epoce strata mogła wzrosnąć z liczby w tysiącach do trylionów, a następnie do nieskończoności („nan”). Kiedy obniżyłem wskaźnik uczenia się do 0,0001, wszystko działało dobrze.
1) Dlaczego pojedynczy rząd wielkości ma taki efekt?
2) Dlaczego funkcja minimalizacji dosłownie wykonuje przeciwieństwo swojej funkcji i maksymalizuje straty? Wydaje mi się, że to nie powinno się zdarzyć, bez względu na tempo uczenia się.