Выбор ответа Senior Цепное правило и autodiff обновлено

Почему обратный режим

Вопрос

Почему нейросети обучают обратным режимом автодифференцирования (backprop), а не прямым?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Выход один (скалярный loss), а входов миллионы: обратный режим даёт всё за один проход. Прямой режим за один проход считает производные всех выходов по одному входу, обратный считает производные одного выхода по всем входам.

Варианты ответа

  1. Выход один (скалярный loss), а входов миллионы: обратный режим даёт всё за один проходправильный ответ
  2. Прямой режим не умеет считать производные нелинейных функций вроде ReLU и softmax
  3. Обратный режим не требует хранить активации прямого прохода, поэтому экономит память
  4. Прямой режим даёт только приближённые производные, как численное дифференцирование

Разбор

Прямой режим за один проход считает производные всех выходов по одному входу, обратный считает производные одного выхода по всем входам. У нас один loss и миллионы параметров, поэтому обратный режим выигрывает в число параметров раз: стоимость backward сопоставима с forward.

  • Прямой режим работает с любыми дифференцируемыми функциями.
  • Наоборот: обратный режим должен хранить промежуточные активации прямого прохода, поэтому его главный минус это память (отсюда gradient checkpointing).
  • Оба режима точны до машинной точности, это не численное дифференцирование.

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

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