Ответ вслух Middle Цепное правило и autodiff обновлено

Почему backprop, а не численный градиент

Вопрос

Почему нейросети не обучают численным градиентом через конечные разности? Сравните стоимость и точность.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Численный градиент центральной разностью требует двух вычислений функции потерь на каждый параметр. У модели со 100 млн параметров это 200 млн прямых проходов ради одного шага, это нереально.

Что должно прозвучать в ответе

  • Численный градиент требует 1-2 прохода на каждый параметр: при миллионах параметров неприемлемо

  • Backprop даёт все производные за один обратный проход, стоимость порядка прямого

  • Численный градиент неточен: ошибка формулы и округления

  • Backprop точен до машинной точности, это не аппроксимация

  • Численный оставляют для проверки (gradient checking)

Что могут спросить следом

  • Сколько памяти стоит backprop?
  • Где ещё применяется прямой режим дифференцирования?

Разбор

Численный градиент центральной разностью требует двух вычислений функции потерь на каждый параметр. У модели со 100 млн параметров это 200 млн прямых проходов ради одного шага, это нереально. Обратный режим автодиффа (backprop) проходит граф один раз вперёд и один раз назад и получает производные по всем параметрам сразу, стоимость обратного прохода примерно вдвое-втрое больше прямого. Плюс по точности: конечные разности дают ошибку порядка h² и страдают от округления при вычитании близких чисел, а автодифф применяет цепное правило к точным локальным производным, ошибка только машинная. Платой за backprop служит память: надо хранить активации прямого прохода. Численный градиент остаётся инструментом отладки, чтобы проверить ручной backward на маленьком примере.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.