alterna ai
ALTERNA AI / ГЛАВА 03 · 01

03.1 Чувствительность к малому изменению

Преобразование уже получает вход и выдаёт результат.

Сдвинем вход совсем немного и сравним изменение результата. Производная описывает предельный наклон, а не само значение функции.

Квадрат числа: f(x)=x²; x=2.

От среднего наклона к локальному

Пусть скалярный вход меняется с xx до x+hx+h. Отношение

qh(x)=f(x+h)−f(x)h,h≠0,q_h(x)=\frac{f(x+h)-f(x)}{h},\qquad h\ne0,

показывает среднее изменение выхода на единицу входа на конечном промежутке. Производная отделяет свойство функции в самой точке от произвольно выбранной длины промежутка:

f′(x)=lim⁡h→0qh(x),f'(x)=\lim_{h\to0}q_h(x),

если левый и правый пределы существуют и совпадают. Для f:R→Rf:\mathbb R\to\mathbb R результат является одним числом. Он имеет единицы «единицы выхода на единицу входа», поэтому производная цены по количеству и производная loss по весу описывают разные физические величины, даже если численно равны.

Для f(x)=x2f(x)=x^2 предел можно вычислить без таблицы приближений:

qh(x)=(x+h)2−x2h=2xh+h2h=2x+h.q_h(x)=\frac{(x+h)^2-x^2}{h} =\frac{2xh+h^2}{h}=2x+h.

При h→0h\to0 остаётся f′(x)=2xf'(x)=2x. В точке x=2x=2:

f(2)=4,f′(2)=4,q0.1(2)=4.1.f(2)=4,\qquad f'(2)=4, \qquad q_{0.1}(2)=4.1.

Значение функции, касательный наклон и наклон конкретной секущей являются тремя разными числами. Касательная записывается в новой координате tt:

ℓ(t)=f(2)+f′(2)(t−2)=4+4(t−2).\ell(t)=f(2)+f'(2)(t-2)=4+4(t-2).

Она обязана проходить через (2,4)(2,4), но не обязана проходить через начало координат.

Производная задаёт первый порядок изменения

Определение предела эквивалентно локальной записи

f(x+h)=f(x)+f′(x)h+r(h),r(h)h→0.f(x+h)=f(x)+f'(x)h+r(h), \qquad \frac{r(h)}{h}\to0.

Главный линейный вклад равен f′(x)hf'(x)h, а остаток убывает быстрее hh. Для квадрата в точке 2 формула точна с явным остатком:

(2+h)2=4+4h+h2.(2+h)^2=4+4h+h^2.

При h=0.1h=0.1 линейная модель предсказывает 4.44.4, точное значение равно 4.414.41, ошибка 0.01=h20.01=h^2. Если уменьшить hh в десять раз, квадратичный остаток уменьшится в сто раз.

Знак наклона не является знаком функции

Для x=−2x=-2 значение x2=4x^2=4 положительно, а производная −4-4 отрицательна. Это означает локальное убывание при движении вправо, а не отрицательное значение функции. В точке x=0x=0 производная квадрата равна нулю и там действительно находится минимум. Однако условие f′(x)=0f'(x)=0 само по себе недостаточно: у f(x)=x3f(x)=x^3 производная в нуле тоже равна нулю, но функция продолжает возрастать через эту точку.

Производная может не существовать

Для f(x)=∣x∣f(x)=|x| в нуле односторонние отношения дают

lim⁡h→0+∣h∣−0h=1,lim⁡h→0−∣h∣−0h=−1.\lim_{h\to0^+}\frac{|h|-0}{h}=1, \qquad \lim_{h\to0^-}\frac{|h|-0}{h}=-1.

Единого предела нет, значит классическая производная не определена. ReLU max⁡(0,x)\max(0,x) имеет ту же проблему в нуле: слева наклон 0, справа 1. Autograd-библиотека выбирает там практическое соглашение, например 0; это определение программного правила backward, а не доказательство гладкости.

Конечные разности полезны для проверки реализации, но не являются способом, которым automatic differentiation обычно получает gradient. Слишком большой hh даёт ошибку усечения, а слишком маленький приводит к вычитанию почти равных floating-point чисел. Центральная разность

f(x+h)−f(x−h)2h\frac{f(x+h)-f(x-h)}{2h}

для гладкой функции часто точнее односторонней при одинаковом hh, но всё равно остаётся численной проверкой в одной точке.

x, h = 2, .1
secant = ((x + h)**2 - x**2) / h
tangent_prediction = x**2 + 2*x*h
exact = (x + h)**2
assert abs(secant - 4.1) < 1e-12
assert abs(exact - tangent_prediction - h*h) < 1e-12

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Это не значение функции, а чувствительность к малому изменению входа. В модели таким входом для ошибки может быть один вес.

Меняем одну причину за раз. Как этот вопрос продолжает полученный результат?

Python-примеры главы 03 Академическая база →