Пройдите backprop по графу
Вопрос
f = (x + y)·z, x = 2, y = -1, z = 3. Проговорите прямой и обратный проход и назовите все производные.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Прямой проход: 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 ошибок.