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

Пройдите backprop по графу

Вопрос

f = (x + y)·z, x = 2, y = -1, z = 3. Проговорите прямой и обратный проход и назовите все производные.

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

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

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

Коротко

Ввожу промежуточный узел q = x + y. Прямой проход: q = 2 - 1 = 1, f = q·z = 3.

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

  • Прямой проход: q = x + y = 1, f = q·z = 3

  • Старт обратного прохода с ∂f/∂f = 1

  • Умножение: ∂f/∂q = z = 3, ∂f/∂z = q = 1

  • Сложение копирует: ∂f/∂x = ∂f/∂y = 3

  • Обобщает: каждый узел умножает пришедший градиент на свой локальный

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

  • Что изменится, если x используется ещё и в другом месте графа?
  • Какие значения нужно сохранить с прямого прохода?

Разбор

Ввожу промежуточный узел q = x + y. Прямой проход: q = 2 - 1 = 1, f = q·z = 3. Обратный начинается с ∂f/∂f = 1. Узел умножения f = q·z даёт ∂f/∂q = z = 3 и ∂f/∂z = q = 1, то есть множители меняются местами. Узел сложения q = x + y имеет локальные производные 1, поэтому просто копирует пришедший градиент: ∂f/∂x = ∂f/∂y = 3. Итого градиент (3, 3, 1). Для обратного прохода мне нужны значения с прямого: q и z для узла умножения, поэтому фреймворк их сохраняет. Если бы x использовался ещё где-то, его итоговый градиент был бы суммой вкладов по всем путям.

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

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