Как ответить
Градиент показывает, в какую сторону и насколько нужно изменить веса, чтобы уменьшить ошибку. В адаптивных методах мы учитываем не только текущий градиент, но и его историю — это позволяет автоматически регулировать шаг обучения для каждого параметра отдельно. Без этого пришлось бы вручную подбирать единый learning rate, который часто оказывается либо слишком большим (расходится), либо слишком маленьким (медленно сходится).
Конкретно: в SGD мы делаем шаг w = w - lr * g, где g — градиент. Проблема в том, что для разных признаков масштаб градиента может отличаться на порядки. В разреженных данных (например, one-hot признаки) одни веса обновляются часто, другие — редко. Если lr одинаков, то редкие признаки будут учиться слишком медленно.
Адаптивные методы решают это, накапливая информацию о градиентах. Например:
- Adagrad — делит lr на корень из суммы квадратов прошлых градиентов. Часто обновляемые параметры получают маленький шаг, редкие — большой. Минус: знаменатель постоянно растёт, шаг стремится к нулю.
- RMSprop — использует экспоненциальное скользящее среднее квадратов, чтобы знаменатель не рос бесконечно. Это позволяет адаптироваться под локальный рельеф: на крутых склонах (большие градиенты) шаг уменьшается, на пологих — увеличивается.
- Adam — комбинирует идеи момента (SGD с Momentum) и RMSprop. Он хранит скользящее среднее градиента (первый момент) и скользящее среднее квадратов (второй момент). Итоговое обновление:
m = beta1 * m + (1-beta1) * g,v = beta2 * v + (1-beta2) * g^2, затемw = w - lr * m / (sqrt(v) + eps). Момент сглаживает направление и ускоряет сходимость на плато, а нормировка наvдаёт адаптивный шаг для каждого параметра.
На практике Adam — стандартный выбор для большинства задач DL. Он избавляет от ручного подбора lr (обычно 0.001 работает), но иногда требует корректировки бета-параметров. Учёт градиента в его истории позволяет алгоритму «чувствовать» ландшафт функции потерь и эффективно двигаться к минимуму, особенно в невыпуклых задачах с разреженными градиентами.