Цепное правило

Как дифференцировать функцию от функции — самое мощное правило анализа.

Цепное правило: производная сложной функции $f(g(x))$ равна $f'(g(x))\cdot g'(x)$.

Цепное правило — самое важное и самое часто используемое правило дифференцирования. Без него не вычислить производную $\sin(x^2)$, $e^{3x}$ или $\sqrt{1+x^2}$ — всех функций, где одна функция «вложена» в другую. Именно цепное правило стоит за алгоритмом обратного распространения ошибки в нейросетях, так что его значение трудно переоценить.

Смысл правила

Представьте механизм из двух шестерёнок. Внешняя функция $f$ реагирует на свой вход, внутренняя $g$ преобразует $x$. Если $x$ чуть изменился, то сначала меняется $g$ (со скоростью $g'$), а это изменение раскручивает $f$ (со скоростью $f'$). Скорости перемножаются:

$$\big(f(g(x))\big)' = f'(g(x))\cdot g'(x)$$

Главная тонкость: внешнюю производную $f'$ берут в точке $g(x)$, а не в $x$. Потом домножают на внутреннюю производную $g'(x)$.

Пример разбора

Найдём производную $\sin(x^2)$. Внешняя функция $f(u)=\sin u$ с $f'(u)=\cos u$, внутренняя $g(x)=x^2$ с $g'(x)=2x$. По цепному правилу:

$$\big(\sin(x^2)\big)' = \cos(x^2)\cdot 2x$$

Численная проверка

import math

def composite(x):
    return math.sin(x**2)

x = 1.5
h = 1e-6
num = (composite(x + h) - composite(x)) / h
chain = math.cos(x**2) * 2*x

print(f"численно (sin(x^2))' = {num:.6f}")
print(f"цепное cos(x^2)*2x   = {chain:.6f}")

Вывод:

численно (sin(x^2))' = -1.884525
цепное cos(x^2)*2x   = -1.884521

Совпадает. Если бы мы забыли домножить на $2x$ (внутреннюю производную), результат отличался бы в полтора раза — численная проверка это немедленно бы вскрыла.

Цепочка из многих звеньев

Правило обобщается на любую глубину вложенности. Для тройной композиции $f(g(h(x)))$:

$$f'(g(h(x)))\cdot g'(h(x))\cdot h'(x)$$

Производные «звеньев» просто перемножаются, каждая берётся в своей точке. Это и есть «цепь».

Как работает под капотом

Цепное правило — это умножение скоростей передачи. Если внутренняя функция усиливает малое возмущение в $g'$ раз, а внешняя — ещё в $f'$ раз, то суммарное усиление есть произведение. В обучении нейросетей градиент «течёт назад» через слои именно по этому правилу: каждый слой умножает приходящий градиент на свою локальную производную. Понять цепное правило — значит понять, как глубокие сети учатся.

Частые ошибки

Самая частая — забыть про внутреннюю производную $g'(x)$. Люди пишут $(\sin(x^2))' = \cos(x^2)$ и теряют множитель $2x$. Вторая ошибка — взять внешнюю производную в неправильной точке: $f'$ вычисляется в $g(x)$, а не в $x$. Третья — при глубокой вложенности потерять одно из звеньев цепи. Совет: распишите композицию по слоям, продифференцируйте каждый и перемножьте.

Итог

  • Цепное правило: $(f(g(x)))' = f'(g(x))\cdot g'(x)$.
  • Внешняя производная берётся в точке $g(x)$.
  • Главная ошибка — забыть внутреннюю производную.
  • Правило обобщается на любую глубину вложенности и лежит в основе обучения нейросетей.
Проверьте себя
1. Чему равна производная sin(x²) по цепному правилу?
Acos(x²)
Bcos(x²)·2x
C2x·sin(x²)
D−cos(2x)
2. В какой точке вычисляется внешняя производная f' в правиле (f(g(x)))'?
AВ точке x
BВ точке g(x)
CВ нуле
DВ точке f(x)