Локальные производные соединяются по структуре вычисления
Пусть
Малое изменение сначала проходит через , затем через :
Подстановка даёт chain rule:
Для , при :
Второй локальный множитель равен , не : derivative каждого узла вычисляется в его собственном входном состоянии.
Reverse-mode переносит одну upstream-чувствительность назад
Начинаем со скалярного выхода, поэтому . Затем
Forward pass хранит ; backward применяет локальные правила в обратном топологическом порядке. Backprop вычисляет производные в текущем графе. Он не изменяет параметры: update выполняет отдельный optimizer.
Вдоль пути множители, между путями сумма
У вход влияет на результат двумя маршрутами. Вклад квадратной ветви равен , прямой ветви — 1:
Эти вклады складываются, потому что дифференциал суммы равен сумме дифференциалов. Перемножение ошибочно соединяло бы параллельные пути как последовательные.
Если , а , один промежуточный узел используется дважды. При :
Autograd должен накапливать gradient общего узла. Перезапись второго вклада первым или наоборот теряет часть графа.
Численная проверка проверяет точку, а не вывод
Для центральная разность при , равна примерно 20:
Совпадение полезно как regression check локального backward. Оно не доказывает символическую формулу для всех , может пропустить компенсирующие ошибки и требует разумного допуска floating-point.
Для векторных узлов те же правила записываются через Jacobian products. Reverse-mode не строит обязательно полный Jacobian каждого слоя: он передаёт upstream vector через локальный vector-Jacobian product. Поэтому стоимость зависит от графа и операций, а не от буквального хранения всех попарных производных.