gradient_surfaces_post
Gradient Descent на разных ландшафтах
Один и тот же алгоритм — градиентный спуск — ведёт себя совершенно по-разному в зависимости от поверхности функции потерь.
Четыре классических примера:
▪️ Выпуклая (квадратичная) — идеальный случай. Единственный минимум, траектория плавно сходится. В жизни встречается редко, но именно этот случай разобран во всех учебниках.
▪️ Долина Розенброка — узкий каньон с плоским дном. Градиент почти перпендикулярен оптимальному направлению. Оптимизатор «рыскает» по стенкам, вместо того чтобы двигаться вдоль долины. Именно поэтому адаптивные методы (Adam, RMSProp) так полезны — они масштабируют шаг отдельно по каждой координате.
▪️ Растригин — множество локальных минимумов. Градиентный спуск застревает в ближайшей яме. Для таких ландшафтов нужны стохастичность (SGD с шумом), рестарты или глобальные методы.
▪️ Седловая точка — в одном направлении минимум, в другом максимум. В высокоразмерных пространствах нейросетей седловые точки встречаются чаще, чем локальные минимумы. Градиент в седловой точке = 0, и метод может надолго «залипнуть».
Это объясняет, почему тюнинг оптимизатора — не менее важная часть обучения нейросетей, чем архитектура. Learning rate, momentum, адаптивные методы — всё это попытки справиться с геометрией ландшафта.
На видео: vanilla gradient descent (фиксированный lr) на каждой поверхности. Обратите внимание, как сильно отличается поведение.
#optimization #gradientdescent #machinelearning