Производные шаг за шагом
Смысл

$$ f'(x) = \lim_{h \to 0} \frac{f(x + h) - f(x)}{h} $$
Производная — скорость изменения и наклон касательной. Если $f'(x) = 3$, то при увеличении $x$ на 0.01 функция вырастет примерно на 0.03.
Таблица и правила
| $f(x)$ | $f'(x)$ |
|---|---|
| $c$ (константа) | $0$ |
| $x^n$ | $n x^{n-1}$ |
| $e^x$ | $e^x$ |
| $a^x$ | $a^x \ln a$ |
| $\ln x$ | $1/x$ |
| $\sin x$ / $\cos x$ | $\cos x$ / $-\sin x$ |
$$ (cf)' = cf', \quad (f + g)' = f' + g', \quad (fg)' = f'g + fg', \quad \left(\frac{f}{g}\right)' = \frac{f'g - fg'}{g^2}, \quad \bigl(f(g(x))\bigr)' = f'(g(x))\cdot g'(x) $$
Цепное правило — медленно, по шагам
$h(x) = (3x + 1)^2$. Внешняя функция $u^2$, внутренняя $u = 3x + 1$:
- Производная внешней по своему аргументу: $2u$.
- Производная внутренней: $3$.
- Перемножить и подставить: $h'(x) = 2(3x + 1) \cdot 3 = 6(3x + 1)$.
Нейросеть — это цепочка из десятков вложенных функций, и backpropagation — это цепное правило, применённое ко всей цепочке справа налево.
Экстремумы
- В точке минимума или максимума гладкой функции $f'(x) = 0$.
- Вторая производная говорит, что это: $f'' > 0$ — минимум (чашка ∪), $f'' < 0$ — максимум (шапка ∩).
Частные производные
У функции нескольких переменных $f(x, y)$ производная по $x$ считается, «замораживая» $y$ как константу:
$$ f(x, y) = x^2 y + 3y \quad\Rightarrow\quad \frac{\partial f}{\partial x} = 2xy, \qquad \frac{\partial f}{\partial y} = x^2 + 3 $$
Вектор всех частных производных — градиент $\nabla f = (2xy,\ x^2 + 3)$. Он показывает направление самого быстрого роста; градиентный спуск идёт в противоположную сторону.
🏋️ Практика Б7
Б7.1. Найдите производные: $5x^4 - 2x$, $e^{-x^2}$, $\ln(3x)$.
▶️ Ответ
$20x^3 - 2$; $-2x\,e^{-x^2}$; $\frac{3}{3x} = \frac{1}{x}$.Б7.2. Найдите градиент $L(w, b) = (wx + b - y)^2$ по $w$ и $b$.
▶️ Ответ
$\frac{\partial L}{\partial w} = 2(wx + b - y)\cdot x$, $\frac{\partial L}{\partial b} = 2(wx + b - y)$. Это градиенты линейной регрессии на одном примере.Б7.3. Проверьте численно: производная $\sin x$ в точке 1 равна $\cos 1$.
▶️ Ответ
import numpy as np
h = 1e-6
print((np.sin(1 + h) - np.sin(1 - h)) / (2 * h), np.cos(1)) # 0.5403 0.5403