Alterna · учебный материал

09.3 Чувствительность одного действия

Разберём только одно умножение или сложение. Их местные правила понадобятся для всей длинной цепи.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: сначала получаем значения.
Разберём только одно умножение или сложение. Их местные правила понадобятся для всей длинной цепи.
Сохраним зависимости выполненных действий и пройдём от ошибки назад. Вклады разных путей к общему весу складываются. Это автоматическое дифференцирование, а не новый способ угадывать направление.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Маленькие правила вместо одной огромной формулы
Для c=a+b локальные производные по обоим операндам равны1. Для c=ab они равны b и a. Для c=tanh(a) derivative равна1−c². Для ReLU используется1 приa>0,0 приa<0; в0 выбран0 как соглашение, а не классическая производная.
В L=z*z каждый из двух входов mul имеет local derivative z=7. Это два ребра к одному узлу; суммарный эффект14. Если превратить operands в set и передать вклад только один раз, gradient будет вдвое меньше.
a
ˉ
+
=
c
ˉ
∂
c
∂
a
,
b
ˉ
+
=
c
ˉ
∂
c
∂
b
.
\bar a\mathrel{+}=\bar c\frac{\partial c}{\partial a},\qquad
\bar b\mathrel{+}=\bar c\frac{\partial c}{\partial b}.
a
ˉ
+
=
c
ˉ
∂
a
∂
c
​
,
b
ˉ
+
=
c
ˉ
∂
b
∂
c
​
.
Черта обозначает derivative выбранного output L по узлу, не его forward value. Incoming gradient масштабирует local derivative, затем contribution добавляется к уже накопленному результату.
Эксперимент.
Выберите шаг mul и сопоставьте operand, local derivative, incoming gradient и contribution. У add local derivative1 не означает, что gradient его родителя обязательно1: учитывается вся цепочка после этого узла.
Легко ошибиться.
Удобный визуализатор не может подставлять одинаковую derivative1 для всех типов операций. Любой новый примитив требует своего локального правила и проверки численной разностью.
z=7
grad_z=0
grad_z+=1*z
grad_z+=1*z
assert grad_z==14
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Второй множитель задаёт локальную чувствительность.
От одной ошибки ко всем весам. Как этот вопрос продолжает полученный результат?
Python-примеры главы 09
Академическая база →

Структурная карта учебников