Почему backprop, а не численный градиент
Вопрос
Почему нейросети не обучают численным градиентом через конечные разности? Сравните стоимость и точность.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Численный градиент требует 1-2 прохода на каждый параметр: при миллионах параметров неприемлемо
Backprop даёт все производные за один обратный проход, стоимость порядка прямого
Численный градиент неточен: ошибка формулы и округления
Backprop точен до машинной точности, это не аппроксимация
Численный оставляют для проверки (gradient checking)
Что могут спросить следом
- Сколько памяти стоит backprop?
- Где ещё применяется прямой режим дифференцирования?
Разбор
Численный градиент центральной разностью требует двух вычислений функции потерь на каждый параметр. У модели со 100 млн параметров это 200 млн прямых проходов ради одного шага, это нереально. Обратный режим автодиффа (backprop) проходит граф один раз вперёд и один раз назад и получает производные по всем параметрам сразу, стоимость обратного прохода примерно вдвое-втрое больше прямого. Плюс по точности: конечные разности дают ошибку порядка h² и страдают от округления при вычитании близких чисел, а автодифф применяет цепное правило к точным локальным производным, ошибка только машинная. Платой за backprop служит память: надо хранить активации прямого прохода. Численный градиент остаётся инструментом отладки, чтобы проверить ручной backward на маленьком примере.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.