Когда одна величина зависит от другой, а та – от третьей, изменения не просто добавляются. Они размножаются. Производная составной функции, которую часто называют правилом цепи или правилом дифференцировки композиции, как раз и описывает этот эффект каскадного воздействия. Если y=f(u)у = f (и)y=f(u), а u=g(x)и = г (х)u=g(x), то

dydx=dydu⋅dudxfrac{dy}{dx} = frac{dy}{du} cdot frac{du}{dx}dxdy = dudy ⋅dxdu

или в обозначениях через штрихи y'=f'(g(x))⋅g'(x)y' = f'(g(x)) cdot g'(x)y′=f′(g(x))⋅g′(x). Это краткий и точный ответ на вопрос, как найти производную вложенной функции. Далее открывается целый мир нюансов: почему умножение работает, где прячутся ловушки, как правило выглядит в многомерном пространстве и почему без него не обходится ни одна современная система машинного обучения.

Правило кажется почти очевидным, когда его видишь впервые. Однако за простотой формулы стоит глубокая идея локальной линейности. Каждая дифференцирующая функция в окружении точки ведет себя как прямая линия со своим углом наклона. Когда две такие «прямые» состоят одна за другой, их наклонности перемножаются. Геометрически это означает, что тангенс угла наклона графика композитной функции в точке равен произведению тангенсов углов наклона графиков внешней и внутренней функций в соответствующих точках. Это свойство превращает правило цепи в универсальный инструмент для разложения сложных зависимостей в простые слои.

Интуиция: как изменения распространяются через слои

Представьте конвейер на заводе. Входное сырье – это xxx. Первый станок превращает ее в полуфабрикат. u=g(x)и = г (х)u=g(x). Второй станок выдает готовую продукцию y=f(u)у = f (и)y=f(u). Если мы хотим знать, насколько быстро меняется количество готовой продукции при смене сырья, то следует учесть скорость работы обоих станков. Скорость второго станка (производная f'f 'f′) умножается на скорость первого (производная g'грамм'g′). Если первый станок работает вдвое быстрее, а второй реагирует на смену полуфабриката с коэффициентом 3, общая чувствительность системы — 6.

Та же логика работает с температурами, скоростями, ценами или активациями в нейронной сети. Смена на входе «проходит» сквозь каждый слой, и на каждом этапе ее масштабируют соответствующей производной. Когда слоев много, произведение многих множителей может стать очень малым (затухание градиента) или очень большим (взрыв градиента). Именно поэтому понимание правила цепи – это не только школьное упражнение, но и ключ к стабильному обучению глубоких моделей.

Точная формулировка и нотации

Пусть функция fff определена в окрестности точки u0=g(x0)u_0 = g(x_0)u0=g(x0) и имеет производную в этой точке, а функция ggg имеет производную в точке x0х_0x0. Тогда составлена ​​функция h(x)=f(g(x))h(x) = f(g(x))h(x)=f(g(x)) также дифференцированна в x0х_0x0​, и выполняется равенство

h'(x0)=f'(g(x0))⋅g'(x0).h'(x_0) = f'(g(x_0)) cdot g'(x_0).h′(x0)=f′(g(x0))⋅g′(x0).

В нотации Лейбница, которая особенно удобна для запоминания, запись выглядит как

dydx=dydu⋅dudx.frac{dy}{dx} = frac{dy}{du} cdot frac{du}{dx}.dxdy=dudy⋅dxdu.

Важно помнить: символы dydyды, duduдю, dxdxdx здесь не являются отдельными величинами, а частью единственной дробной нотации, напоминающей о последовательности ответов. В обозначениях через штрихи правило смотрится компактнее и чаще используется в вычислениях.

Правило распространяется и на композицию более двух функций. Если y=f(g(h(x)))y = f(g(h(x)))y=f(g(h(x))), то

y'=f'(g(h(x)))⋅g'(h(x))⋅h'(x).y' = f'(g(h(x))) cdot g'(h(x)) cdot h'(x).y′=f′(g(h(x)))⋅g′(h(x))⋅h′(x).

Каждое новое звено в цепи добавляет свой множитель.

Почему правило работает: краткий взгляд на обоснование

Одно из самых простых обоснований опирается на определение производной через границу. Разностное отношение для композитной функции

f(g(x))-f(g(x0))x-x0frac{f(g(x)) – f(g(x_0))}{x – x_0}x−x0f(g(x))−f(g(x0))

можно переписать как произведение двух отношений:

f(g(x))-f(g(x0))g(x)-g(x0)⋅g(x)-g(x0)x-x0,frac{f(g(x)) – f(g(x_0))}{g(x) – g(x_0)} cdot frac{g(x) – g(x_0)}{x – x_0},g(x)−g(x0)f(g(x))−f(g(x0))⋅x−x0g(x)−g(x0),

если g(x)≠g(x0)g(x) neq g(x_0)g(x)=g(x0). Когда xxx следует к x0х_0x0 , первое отношение следует к f'(g(x0))f'(g(x_0))f′(g(x0)), второе — к g'(x0)g'(x_0)g′(x0).

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

Практический алгоритм вычисления

  1. Определите внешнюю функцию fff и внутреннюю ggg. Запишите y=f(u)у = f (и)y=f(u), где u=g(x)и = г (х)u=g(x).
  2. Найдите производную внешней функции f'(u)ф'(у)f′(u), оставляя uuu «как есть».
  3. Найдите производную внутренней функции g'(x)г'(х)g′(x).
  4. Умножьте результаты и, при необходимости, подставьте u=g(x)и = г (х)u=g(x) назад.
  5. Упростите выражение.

Если композиция глубже, повторяйте алгоритм для каждой пары «внешняя», двигаясь от внешнего слоя внутрь.

Примеры: от базовых до запутанных

Рассмотрим y=(3x2-5x)7y = (3x^2 – 5x)^7y=(3×2−5x)7. Здесь внешняя функция — подъем к седьмой степени, внутренняя — 3x2-5x3x^2 – 5x3×2−5x. Производная наружной: 7u67u^67u6. Производная внутренней: 6x-56x - 56x−5. Итак,

y'=7(3x2-5x)6⋅(6x-5).y' = 7(3x^2 – 5x)^6 cdot (6x – 5).y′=7(3×2−5x)6⋅(6x−5).

Следующий уровень сложности - y=без⁡(e2x)y = sin(e^{2x})y=sin(e2x). Наружная – синус, внутренняя – экспонента от 2x2x2x.

y'=тележка⁡(e2x)⋅e2x⋅2=2e2xтележка⁡(e2x).y' = cos(e^{2x}) cdot e^{2x} cdot 2 = 2e^{2x} cos(e^{2x}).y′=cos(e2x)⋅e2x⋅2=2e2xcos(e2x).

Еще глубже: y=ln⁡(тележка⁡(x2+1))y = ln(cos(x^2 + 1))y=ln(cos(x2+1)). Три слоя. Внешняя – натуральный логарифм, средняя – косинус, внутренняя – x2+1х ^ 2 + 1x2+1.

y'=1тележка⁡(x2+1)⋅(-без⁡(x2+1))⋅2x=-2xбез⁡(x2+1)тележка⁡(x2+1).y' = frac{1}{cos(x^2 + 1)} cdot (-sin(x^2 + 1)) cdot 2x = -frac{2x sin(x^2 + 1)}{cos(x^2 + 1)}.y′=cos(x2+1)1​⋅(−sin(x2+1))⋅2x=−cos(x2+1)2xsin(x2+1)​.

Каждый новый слой просто добавляет свой множитель, и выражение остается управляемым.

Типичные ошибки при использовании правила цепи

Самая распространенная ловушка — забыть умножить на производную внутренней функции. Студенты часто вычисляют производную от без⁡(x2)sin(x^2)sin(x2) как просто тележка⁡(x2)cos(x^2)cos(x2), пропуская множитель 2x2x2x. Результат получается неправильным уже на уровне первой производной.

Вторая частая ошибка — неразбериха, какая функция внешняя. В выражении eбез⁡xe^{sin x}esinx внешняя – экспонента, а не синус. Походная eбез⁡x⋅тележка⁡xe^{sin x} cdot cos xesinx⋅cosx, а не наоборот.

Третья проблема – механическое применение формулы без проверки области определения и точек дифференциальности. Если внутренняя функция имеет угловую точку или разрыв, вся композиция может утратить дифференцировку, даже если формально формула дает какое-то выражение.

Четвертая ошибка — в многомерном случае путаница между градиентами и якобианами. Начинающие иногда добавляют частичные производные вместо того, чтобы выполнить матричное умножение или скалярное произведение.

Пятая типичная ловушка — при вычислении высших производных забывать, что каждая дифференцировка снова применяет правило цепи к уже сложному выражению. Формула Фаа ди Бруно для nnn-й производной композиции содержит сумму из многих членов, и пропустить хотя бы один – значит получить ложный результат.

Осознание этих ловушек приходит с практикой и сознательной проверкой каждого множителя.

Расширение для продвинутых: многомерный случай и высшие производные

Когда функция зависит от нескольких переменных, правило принимает матричную форму. Если y=f(u)mathbf{y} = f(mathbf{u})y=f(u), а u=g(x)mathbf{u} = g(mathbf{x})u=g(x), то полная производная (якобиан) композитной функции — это произведение якобианов:

D(f∘g)(x)=Df(g(x))⋅Dg(x).D(f circ g)(mathbf{x}) = Df(g(mathbf{x})) cdot Dg(mathbf{x}).D(f∘g)(x)=Df(g(x))⋅Dg(x).

Для скалярной функции многих переменных производное вдоль направления — это скалярное произведение градиента внешней функции на вектор производных внутренней. В нейронных сетях именно так и происходит обратное распространение ошибки: градиент функции потерь «течет» назад через слои, на каждом этапе умножаясь на локальную производную активации и весовые матрицы.

Для высших производных композиций существует общая формула Фаа ди Бруно. Она выглядит громоздко, но ее структура отражает все возможные способы, по которым производные внутренней функции могут «распределиться» между производными внешней. В большинстве практических задач до четвертого-пятого порядка включительно формулу можно расписать вручную или воспользоваться символьными вычислениями.

Применение в реальном мире и современных технологиях

В физике правило цепи лежит в основе задач на связанные скорости. Если температура вдоль стержня изменяется по закону T(x)Т(х)T(x), а точка движется по закону x(t)х (т)x(t), то скорость изменения температуры для этой точки

dTdt=dTdx⋅dxdt.frac{dT}{dt} = frac{dT}{dx} cdot frac{dx}{dt}.dtdT=dxdT⋅dtdx.

В биологии и экономике составные модели роста или затрат часто требуют именно такого подхода.

Самое масштабное современное применение – автоматическая дифференцировка в библиотеках глубокого обучения. PyTorch, TensorFlow и JAX используют общее правило цепи на вычислительном графе. При обучении нейронной сети обратное распространение ошибки — не что иное, как последовательное применение правила цепи от функции потерь до каждого параметра. Именно благодаря этому алгоритму стало возможным обучать сети с десятками и сотнями слоев.

Правило цепи остается одним из самых мощных и одновременно простых инструментов математического анализа. Оно превращает казалось бы непреодолимую сложность вложенных функций в последовательность понятных шагов. Когда вы в следующий раз увидите выражение типа без⁡(ln⁡(1+ex2))sin(ln(1 + e^{x^2}))sin(ln(1+ex2)), не пугайтесь — просто разложите его на слои, примените правило последовательно и получите точный ответ. Эта техника работает одинаково хорошо и в школьной тетради, и в коде современной нейронной сети.

Leave a Reply

Your email address will not be published. Required fields are marked *