alterna ai
ALTERNA AI / ГЛАВА 09 · 04

09.4 От одной ошибки ко всем весам

На предыдущей странице: чувствительность одного действия.

Начинаем с влияния ошибки на саму себя: оно равно одному. Затем передаём чувствительности в обратном порядке.

Сохраним зависимости выполненных действий и пройдём от ошибки назад. Вклады разных путей к общему весу складываются. Это автоматическое дифференцирование, а не новый способ угадывать направление.

От одного output ко многим inputs

Начинаем с dL/dL=1, остальные gradients обнуляем. Обход идёт в обратном топологическом порядке. Для скалярного L так можно получить производные по многим параметрам одним обратным проходом. N03.

Обработанный узел Incoming gradient Вклады
L=z*z 1 z:7+7=14
z=a+b 14 a:14,b:14
a=x*w 14 x:14×3=42,w:14×2=28

Независимый символический расчёт L=(xw+b)² даёт ∂L/∂x=2(xw+b)w=42, ∂L/∂w=2(xw+b)x=28, ∂L/∂b=2(xw+b)=14.

Эксперимент. Остановитесь перед обработкой a: grad(a) уже готов, grad(x) ещё не получил вклад через a. Один следующий шаг передаст эту чувствительность. Кнопка «Назад» восстанавливает snapshot, а не выполняет обратный optimizer.

Граница. Reverse-mode не обращает функцию: он не восстанавливает input по output. Derivative можно вычислять и для необратимых преобразований. После backward исходные w=3,b=1 ещё не обновлены. Для обучения требуется отдельный update, использующий gradients выбранных параметров одновременно.

x,w,b=2,3,1
z=x*w+b
assert [2*z*w,2*z*x,2*z]==[42,28,14]

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Функция тождества по собственному output имеет derivative1.

Один вес используется несколько раз. Как этот вопрос продолжает полученный результат?

Python-примеры главы 09 Академическая база →