Похідна складеної функції: правило ланцюга, що множить швидкості змін

Коли одна величина залежить від іншої, а та — від третьої, зміни не просто додаються. Вони множаться. Похідна складеної функції, яку часто називають правилом ланцюга або правилом диференціювання композиції, саме й описує цей ефект каскадного впливу. Якщо y=f(u)y = f(u)y=f(u), а u=g(x)u = g(x)u=g(x), то

dydx=dydududx\frac{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)u=g(x). Другий верстат видає готову продукцію y=f(u)y = f(u)y=f(u). Якщо ми хочемо знати, наскільки швидко змінюється кількість готової продукції при зміні сировини, маємо врахувати швидкість роботи обох верстатів. Швидкість другого верстата (похідна ff’f′) множиться на швидкість першого (похідна gg’g′). Якщо перший верстат працює вдвічі швидше, а другий реагує на зміну напівфабрикату з коефіцієнтом 3, то загальна чутливість системи — 6.

Та сама логіка працює з температурами, швидкостями, цінами чи активаціями в нейронній мережі. Зміна на вході «проходить» крізь кожен шар, і на кожному етапі її масштабують відповідною похідною. Коли шарів багато, добуток багатьох множників може стати дуже малим (затухання градієнта) або дуже великим (вибух градієнта). Саме тому розуміння правила ланцюга — це не лише шкільна вправа, а й ключ до стабільного навчання глибоких моделей.

Точне формулювання та нотації

Нехай функція fff визначена в околі точки u0=g(x0)u_0 = g(x_0)u0​=g(x0​) і має похідну в цій точці, а функція ggg має похідну в точці x0x_0x0​. Тоді складена функція h(x)=f(g(x))h(x) = f(g(x))h(x)=f(g(x)) також диференційовна в x0x_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=dydududx.\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}.dxdy​=dudy​⋅dxdu​.

Важливо пам’ятати: символи dydydy, dududu, 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))xx0\frac{f(g(x)) – f(g(x_0))}{x – x_0}x−x0​f(g(x))−f(g(x0​))​

можна переписати як добуток двох відношень:

f(g(x))f(g(x0))g(x)g(x0)g(x)g(x0)xx0,\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−x0​g(x)−g(x0​)​,

якщо g(x)g(x0)g(x) \neq g(x_0)g(x)=g(x0​). Коли xxx прямує до x0x_0x0​, перше відношення прямує до f(g(x0))f'(g(x_0))f′(g(x0​)), друге — до g(x0)g'(x_0)g′(x0​).

Щоб охопити випадок, коли внутрішня функція «завмирає» на деяких точках, вводять допоміжну функцію, яка «заповнює» значення похідної в точці рівності. У результаті границя добутку все одно існує й дорівнює потрібному добутку похідних. Інші доведення використовують означення диференційовності через малі доданки, що прямують до нуля, або означення Каратеодорі. Усі вони приводять до одного й того самого результату: похідні множаться, а похибки зникають у границі.

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

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

Якщо композиція глибша, повторюйте алгоритм для кожної пари «зовнішня-внутрішня», рухаючись від зовнішнього шару всередину.

Приклади: від базових до заплутаних

Розглянемо y=(3x25x)7y = (3x^2 – 5x)^7y=(3×2−5x)7. Тут зовнішня функція — піднесення до сьомого степеня, внутрішня — 3x25x3x^2 – 5x3×2−5x. Похідна зовнішньої: 7u67u^67u6. Похідна внутрішньої: 6x56x – 56x−5. Отже,

y=7(3x25x)6(6x5).y’ = 7(3x^2 – 5x)^6 \cdot (6x – 5).y′=7(3×2−5x)6⋅(6x−5).

Наступний рівень складності — y=sin(e2x)y = \sin(e^{2x})y=sin(e2x). Зовнішня — синус, внутрішня — експонента від 2x2x2x.

y=cos(e2x)e2x2=2e2xcos(e2x).y’ = \cos(e^{2x}) \cdot e^{2x} \cdot 2 = 2e^{2x} \cos(e^{2x}).y′=cos(e2x)⋅e2x⋅2=2e2xcos(e2x).

Ще глибше: y=ln(cos(x2+1))y = \ln(\cos(x^2 + 1))y=ln(cos(x2+1)). Три шари. Зовнішня — натуральний логарифм, середня — косинус, внутрішня — x2+1x^2 + 1x2+1.

y=1cos(x2+1)(sin(x2+1))2x=2xsin(x2+1)cos(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)​.

Кожен новий шар просто додає свій множник, і вираз залишається керованим.

Типові помилки при використанні правила ланцюга

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

Друга частa помилка — плутанина, яка функція зовнішня. У виразі esinxe^{\sin x}esinx зовнішня — експонента, а не синус. Похідна — esinxcosxe^{\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(fg)(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)T(x), а точка рухається за законом x(t)x(t)x(t), то швидкість зміни температури для цієї точки —

dTdt=dTdxdxdt.\frac{dT}{dt} = \frac{dT}{dx} \cdot \frac{dx}{dt}.dtdT​=dxdT​⋅dtdx​.

У біології та економіці складені моделі зростання чи витрат часто вимагають саме такого підходу.

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

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *