Подумайте о «ландшафте оптимизации». Например, если у вас была сеть только с двумя весами, вы могли бы построить все комбинации этих двух весов на поверхности, где высота в каждой точке представляет величину ошибки, которую возвращает ваша функция стоимости, если вы используете это (x, y ) координировать как ваши два веса. Вы пытаетесь перейти к самой низкой точке на этой поверхности, чтобы получить самый низкий уровень ошибки.
Иногда проблема заключается в том, что поверхность может стать довольно сумасшедшей, особенно в сетях с миллионами параметров вместо двух. Вы можете застрять в седловых точках, где прогресс замедляется, а затем внезапно перекидывается назад в нисходящий холм.
Вот анимация, чтобы помочь визуализировать это.
Как вы можете видеть, более простые алгоритмы градиентного спуска застревают в этих позициях намного легче.
Для этого могут быть и другие причины, но об этом вы чаще всего слышите. Вполне возможно, что в сети может быть группа юнитов, получающих насыщенные активации (или в случае relu - юнит, который активируется только очень небольшим количеством тренировочных входов), и когда один юнит выходит из насыщения, он запускает цепную реакцию, которая выводит остальное из насыщения, и веса внезапно получают ускорение градиентного потока? Я не рассматривал ничего подобного, но мне было бы интересно, если у кого-то есть другие причины, чтобы добавить.