Ich benutze Tensorflow, um einfache neuronale Netze für ein bisschen Forschung zu schreiben, und ich hatte während des Trainings viele Probleme mit 'Nan'-Gewichten. Ich habe viele verschiedene Lösungen ausprobiert, wie das Ändern des Optimierers, das Ändern des Verlusts, der Datengröße usw., aber ohne Erfolg. Schließlich bemerkte ich, dass eine Änderung der Lernrate einen unglaublichen Unterschied in meinen Gewichten machte.
Bei einer Lernrate von 0,001 (was ich für ziemlich konservativ hielt) würde die Minimierungsfunktion den Verlust tatsächlich exponentiell erhöhen. Nach einer Epoche könnte der Verlust von einer Zahl von Tausenden auf eine Billion und dann auf unendlich ('nan') springen. Als ich die Lernrate auf 0,0001 senkte, funktionierte alles einwandfrei.
1) Warum hat eine einzelne Größenordnung einen solchen Effekt?
2) Warum führt die Minimierungsfunktion buchstäblich das Gegenteil ihrer Funktion aus und maximiert den Verlust? Es scheint mir, dass dies nicht passieren sollte, unabhängig von der Lernrate.