Дифференциальное и матричное исчисление
Правило цепочки и якобиан
Производные вдоль пути перемножаются, по разным путям — складываются
Якобиан
Для отображения линейная аппроксимация — это матрица, а не вектор. Она называется якобианом:
Строк столько, сколько выходов, столбцов — сколько входов. Проверка формы та же, что для матриц в блоке 1: якобиан — это матрица линейного отображения, которое приближает около точки.
Частные случаи, которые полезно узнавать:
- — якобиан это строка, транспонированный градиент;
- — якобиан это столбец;
- линейное отображение — якобиан равен в любой точке. Линейная аппроксимация линейной функции есть она сама.
Правило цепочки в матричном виде
Это буквально то же самое, что в одномерном случае, — только вместо умножения чисел
умножение матриц.
Порядок множителей проверяется размерностями. Если и , то имеет форму , — форму , и только произведение вообще определено. Как и в блоке 1, порядок записи обратен порядку применения.
Сумма по путям
Если переменная влияет на результат несколькими способами, вклады складываются:
Умножение вдоль пути, сложение по путям. Это полная форма правила цепочки, и именно её забывают, когда переменная используется дважды.
Простейший пример: . Есть два пути от к произведению — через первый аргумент и через второй. По каждому локальная производная равна , сумма даёт . Тот же ответ, что и по правилу для , но полученный механически, без знания формулы.
Обратный проход по шагам
Ниже — граф вычисления . Нажимайте «шаг назад»: сначала выход получает затравку , потом каждый узел передаёт свою производную входам, умножая на локальную.
Обратите внимание на порядок обхода: узел можно посетить только после того, как посчитаны производные всех, кто его использует. Это обратный топологический порядок, и именно поэтому обратный проход нельзя начать с середины.
Почему это дёшево
Ключевое наблюдение, из которого выросло всё глубокое обучение. Чтобы получить производные по всем входам, достаточно одного обратного прохода — его стоимость примерно равна стоимости прямого.
Сравните с численным дифференцированием: там на каждый параметр нужно как минимум два вычисления функции. Для сети с параметрами это прямых проходов против одного обратного.
Причина такой асимметрии — в том, с какой стороны перемножать цепочку якобианов. Разберём это в уроке про VJP: то, что backprop идёт справа налево, а не слева направо, и есть источник всей экономии.
Диамант: где ошибаются вручную
Рассмотрим . Граф ветвится: идёт и в экспоненту, и в квадрат, а потом ветви сходятся в сумме.
Пройдите обратный проход и посмотрите на градиент после каждого шага: он
накапливается, а не перезаписывается. В коде это +=, и забытый плюс — классическая
ошибка при написании автограда вручную.
Теорема о неявной функции — только формулировка
Иногда связь задана уравнением , а не формулой . Теорема утверждает: если , то локально выражается через как дифференцируемая функция, и
Доказательство пропускаем. Знать формулировку стоит, потому что она объясняет, как дифференцируют через решение уравнения, не решая его: так устроены implicit layers, deep equilibrium models и дифференцирование через оптимизационную задачу.
Источники
- Deisenroth, Faisal, Ong — Mathematics for Machine Learning, гл. 5.2.2 и 5.3 — Правило цепочки, якобиан, градиенты векторных функций
- Karpathy — Neural Networks Zero to Hero, лекция 1 (micrograd) — Обратное распространение как правило цепочки на графе
Проверки
0 из 2Формы якобианов
Пусть и . Отметьте все верные утверждения про композицию .
Сумма по путям
Реализуйте
total_derivative(paths)— полную производную по правилу «умножаем вдоль пути, складываем по путям».paths— список путей. Каждый путь это список локальных производных на его звеньях. Нужно перемножить числа внутри каждого пути и сложить результаты:Крайние случаи:
- нет путей — производная
0(переменная не влияет на результат); - пустой путь считается произведением по пустому множеству, то есть
1— тот же случай, что пустое произведение из блока 0.
Загрузка редактора…
Ctrl/⌘ + Enter- нет путей — производная