База

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

Смысл

derivative

$$ 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$:

  1. Производная внешней по своему аргументу: $2u$.
  2. Производная внутренней: $3$.
  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