Выбор ответа Senior Цепное правило и autodiff обновлено
Почему обратный режим
Вопрос
Почему нейросети обучают обратным режимом автодифференцирования (backprop), а не прямым?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Выход один (скалярный loss), а входов миллионы: обратный режим даёт всё за один проход. Прямой режим за один проход считает производные всех выходов по одному входу, обратный считает производные одного выхода по всем входам.
Варианты ответа
- Выход один (скалярный loss), а входов миллионы: обратный режим даёт всё за один проходправильный ответ
- Прямой режим не умеет считать производные нелинейных функций вроде ReLU и softmax
- Обратный режим не требует хранить активации прямого прохода, поэтому экономит память
- Прямой режим даёт только приближённые производные, как численное дифференцирование
Разбор
Прямой режим за один проход считает производные всех выходов по одному входу, обратный считает производные одного выхода по всем входам. У нас один loss и миллионы параметров, поэтому обратный режим выигрывает в число параметров раз: стоимость backward сопоставима с forward.
- Прямой режим работает с любыми дифференцируемыми функциями.
- Наоборот: обратный режим должен хранить промежуточные активации прямого прохода, поэтому его главный минус это память (отсюда gradient checkpointing).
- Оба режима точны до машинной точности, это не численное дифференцирование.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.