Цепное правило
Как дифференцировать функцию от функции — самое мощное правило анализа.
Цепное правило: производная сложной функции $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)$.
- Главная ошибка — забыть внутреннюю производную.
- Правило обобщается на любую глубину вложенности и лежит в основе обучения нейросетей.