# Производные: что такое наклон функции

Зачем это нужно: backprop, на котором обучаются нейросети, — это способ быстро посчитать множество производных подряд. Чтобы понимать, что вообще вычисляется, нужно сперва увидеть производную в самом простом, буквальном смысле: не абстрактный символ из учебника, а наклон — то же самое, что наклон дороги под ногами. В [«Бинарной классификации»](/notes/binary-classification/) и [«Логистической регрессии»](/notes/logistic-regression/) уже появлялись $dz$, $dw$, $db$ — эта статья объясняет, что стоит за любым таким `d`, с нуля, без привязки к нейросетям. Все числа посчитаны и перепроверены в Python.

## Что такое наклон

Обычное, бытовое слово. Наклон дороги — это то, насколько круто она идёт вверх или вниз: пологая дорога почти не поднимает тебя, крутая — быстро. Производная — это ровно та же идея, только не для дороги, а для функции: **насколько быстро меняется значение функции, если чуть-чуть сдвинуть её вход**.

Формально: производную функции $f$ в точке $a$ обозначают $f'(a)$ (наклон функции) и определяют как предел

$$f'(a) = \lim_{\varepsilon \to 0} \frac{f(a + \varepsilon) - f(a)}{\varepsilon}$$

Не пугайся значка $\lim$ — он читается «чем меньше $\varepsilon$ (эпсилон, малая добавка), тем точнее». На практике для проверки достаточно взять очень маленький $\varepsilon$ и посчитать дробь напрямую — это и называют **численной производной** ($f'(a)$): подвинул вход на крошечный шаг, посмотрел, на сколько сдвинулся выход, поделил одно на другое.

## Первый пример: наклон, который не меняется

Возьмём самую простую функцию — $f(a) = 3a$ — и точку $a = 2$. Толкнём $a$ на $\varepsilon = 0.000001$:

$f(2) = 6$, $f(2.000001) = 6.000003$. Разница выходов: $0.000003$. Делим на $\varepsilon$: $0.000003 / 0.000001 = 3$.

Наклон равен 3 (f'(a) = 3). Проверим в другой точке, $a = 5$: $f(5) = 15$, $f(5.000001) = 15.000003$, отношение снова ровно $3$. Числа сходятся: в Python подряд для $a=2$ и $a=5$ выходит $2.9999999995...$ и $3.0000000004...$ — округление до пятого знака, но по сути одна и та же тройка.

![Слева: f(a)=3a, наклон одинаковый в любой точке (касательная совпадает с прямой). Справа: f(a)=a², наклон меняется — крутой у краёв, почти плоский у дна, наклон = 2a](/notes/derivatives-intuition/slopes.png)

Смысл: для $f(a) = 3a$ наклон (f'(a)) **не зависит от точки** — где ни возьми касательную, она пойдёт под одним и тем же углом, потому что график — прямая линия. Это и есть первая половина картинки; вторая — когда наклон *меняется* от точки к точке.

## Второй пример: наклон, который меняется

Возьмём $f(a) = a^2$ и повторим тот же трюк в двух точках: $a = 2$ и $a = 5$.

При $a = 2$: $f(2) = 4$, $f(2.000001) \approx 4.000004$, отношение $\approx 4.0000010$. При $a = 5$: $f(5) = 25$, $f(5.000001) \approx 25.000010$, отношение $\approx 10.0000010$.

Наклон вышел разным (f'(a)): 4 в точке 2, и 10 в точке 5. Формула, которая это объясняет — $f'(a) = 2a$: при $a=2$ даёт $2 \cdot 2 = 4$, при $a=5$ даёт $2 \cdot 5 = 10$ — оба раза совпадает с численным ответом. Геометрически: график $a^2$ — парабола, у её дна (около нуля) она почти горизонтальна, наклон близок к нулю, а чем дальше от нуля — тем круче стенки, и наклон растёт.

Попробуй сам: выбери любое $a$ от $-5$ до $5$ — своё любимое число — и проверь его наклон (f'(a)) для $f(a)=a^2$ двумя способами: численно (сдвинь $a$ на крошечный $\varepsilon$, посчитай разницу выходов и подели на $\varepsilon$, как в примерах выше) и по формуле $2a$. Если оба способа не сошлись — где-то в арифметике ошибка, попробуй ещё раз.

**Мини-квиз:** чему равен наклон (f'(a)) функции $f(a) = 5a$ в точке $a = 100$? <details><summary>Ответ</summary>Наклон равен **5**. Как и для $f(a)=3a$ выше, наклон прямой линии не зависит от точки: график $f(a)=5a$ — прямая с постоянным углом, поэтому ответ один и тот же и при $a=100$, и в любой другой точке.</details>

## Что дальше

Мы увидели две крайности: наклон-константа (f'(a)=3, для $3a$) и наклон, зависящий от точки (f'(a)=2a, для $a^2$). У каждой функции — своя «формула наклона», и это не заканчивается на этих двух примерах: [«Больше примеров производных»](/notes/derivatives-more-examples/) показывает то же самое ещё для кубической функции и логарифма.
