Математический анализ
Понятие предела
Цели урока
- Понять интуитивный смысл предела функции
- Освоить строгое ε-δ определение предела
- Различать односторонние пределы
- Вычислять пределы на бесконечности
- Распознавать типы неопределённостей
Предварительные знания
- Последовательности и их пределы
- Понятие функции и её графика
- Абсолютная величина |x|
Провокация: предел функции $f$ в точке $a$ не имеет никакого отношения к значению $f(a)$. Вообще. Функция может быть не определена в этой точке - и предел всё равно существует. Может равняться 100 в точке - а предел равен 5. Это не ошибка и не парадокс. Это инструмент, который Коши создал в 1821 году, чтобы описать то, что происходит *рядом* с точкой, а не в ней. Именно этот инструмент позволяет PyTorch вычислять производную через разностное отношение $(f(x+h) - f(x))/h$ при $h \to 0$, не деля на ноль.
- **Автодифференцирование в PyTorch**: `autograd` вычисляет $\frac{\partial L}{\partial w}$ как предел разностного отношения при $h \to 0$. Без понятия предела backpropagation - просто «магия»
- **Асимптотическая сложность O(n)**: "алгоритм работает за $O(n^2)$" - это утверждение о пределе отношения $T(n)/n^2$ при $n \to \infty$. Без предела O-нотация не имеет формального смысла
- **Непрерывное начисление**: $e^r = \lim_{n \to \infty}(1 + r/n)^n$. Каждая финансовая модель с непрерывным временем использует этот предел
- **Мгновенная скорость**: GPS-трекер вычисляет скорость как $\Delta x / \Delta t$ за малый интервал. Истинная мгновенная скорость - предел при $\Delta t \to 0$
- **Softmax temperature**: при $T \to 0$ softmax стремится к argmax, при $T \to \infty$ - к равномерному распределению. Это пределы функции по параметру
От парадоксов Зенона до строгости Вейерштрасса
Древние греки уже понимали пределы интуитивно - парадоксы Зенона о стреле и Ахиллесе с черепахой по сути о бесконечном приближении. Но строгое определение появилось только в XIX веке. **Огюстен-Луи Коши** (1821) первым дал словесное определение предела. **Карл Вейерштрасс** (1861) довёл его до современной ε-δ формы. Эта строгость была необходима: до неё математики спорили, равна ли сумма $1 - 1 + 1 - 1 + ...$ нулю или единице!
Интуиция: предел - это тенденция, не значение
Интуиция: предел - это тенденция, не значение
Есть функция $f$. Интересует её поведение около точки $x = a$. Не в $a$ - около. Берём $x$ всё ближе и ближе к $a$ (но не равное $a$). Куда стремится $f(x)$?
Записываем: $\lim_{x \to a} f(x) = L$ - "предел функции $f(x)$ при $x$, стремящемся к $a$, равен $L$". Значение $f(a)$ при этом игнорируется. Его может не быть вообще.
**Ключевое отличие от последовательностей**: предел последовательности - это тенденция при $n \to \infty$. Предел функции - это тенденция при $x \to a$, и $a$ может быть любым числом. Функция может "вести себя" у точки так, как в ней не определена.
Предел не зависит от значения в точке
Функция с «дыркой» в точке
$f(x) = \frac{x^2 - 1}{x - 1}$ не определена при $x = 1$ (деление на 0). Но упростив: $\frac{x^2-1}{x-1} = \frac{(x-1)(x+1)}{x-1} = x + 1$ при $x \neq 1$ Поэтому $\lim_{x \to 1} \frac{x^2-1}{x-1} = \lim_{x \to 1}(x+1) = 2$ Предел существует и равен 2, хотя функция в точке 1 не определена. **PyTorch-параллель**: именно так работает производная сложной активации в точке недифференцируемости - берётся предел, а не значение.
Функция $g(x) = x + 3$ при $x \neq 2$, и $g(2) = 100$. Чему равен $\lim_{x \to 2} g(x)$?
Предел определяется поведением функции **около** точки, а не **в** ней. Около x = 2 функция равна x + 3, значит предел равен 2 + 3 = 5. Значение $g(2) = 100$ - это значение, не предел.
Строгое определение: язык ε-δ
Строгое определение: язык ε-δ
"Близко" - это ощущение, не математика. Вейерштрасс заменил ощущение на игру двух игроков. Это и есть ε-δ определение.
Это **игра**: Скептик задаёт точность $\varepsilon$ - насколько близко $f(x)$ должна быть к $L$. Защитник отвечает окрестностью $\delta$ - откуда брать $x$. Если Защитник может ответить на **любой** $\varepsilon$ - предел существует.
**Зачем это нужно ML-инженеру**: числовая дифференциация через конечные разности $\frac{f(x+h) - f(x)}{h}$ работает именно потому, что этот предел существует. Выбор $h$ - это выбор $\delta$. Погрешность аппроксимации - это $\varepsilon$. ε-δ определение - не академический артефакт, а формальная основа gradient checking в PyTorch.
$\lim_{x \to a} f(x) = f(a)$ всегда
Предел может существовать, даже если $f(a)$ не определено или отличается от предела
Предел описывает поведение функции ОКОЛО точки, игнорируя саму точку. Функция может быть разрывной, иметь «дыры» или вообще не быть определённой в точке - предел при этом существует. Именно поэтому производная через предел разностного отношения корректна даже там, где функция «острая».
В ε-δ определении, что означает условие $0 < |x - a|$ (строгое неравенство)?
Условие $0 < |x - a|$ исключает саму точку $a$. Предел описывает поведение функции ОКОЛО точки, поэтому значение в самой точке не важно - и может вообще не существовать.
Односторонние пределы
Односторонние пределы
Функция может вести себя по-разному при приближении **слева** и **справа**. Это не экзотика - это то, что происходит с ReLU в нуле:
Двусторонний предел $\lim_{x \to a} f(x)$ существует тогда и только тогда, когда $L^- = L^+$.
ReLU в нуле
Односторонние пределы в ML
$\text{ReLU}(x) = \max(0, x) = \begin{cases} 0, & x \leq 0 \\ x, & x > 0 \end{cases}$ При приближении к нулю: - **Слева**: $\lim_{x \to 0^-} \text{ReLU}(x) = 0$ - **Справа**: $\lim_{x \to 0^+} \text{ReLU}(x) = 0$ Оба предела равны нулю, значит двусторонний предел **существует и равен 0**. Но производная в нуле? Слева: $(\text{ReLU})' = 0$. Справа: $(\text{ReLU})' = 1$. Односторонние производные **не совпадают** - вот почему ReLU не дифференцируема в нуле. Это отдельный предел.
Функция sign(x)
Классический пример разных односторонних пределов
$\text{sign}(x) = \begin{cases} -1, & x < 0 \\ 0, & x = 0 \\ +1, & x > 0 \end{cases}$ При приближении к нулю: - **Слева**: $\lim_{x \to 0^-} \text{sign}(x) = -1$ - **Справа**: $\lim_{x \to 0^+} \text{sign}(x) = +1$ Поскольку $-1 \neq +1$, двусторонний предел $\lim_{x \to 0} \text{sign}(x)$ **не существует**.
Для функции $f(x) = \lfloor x \rfloor$ (целая часть), чему равен $\lim_{x \to 2^-} f(x)$?
При приближении к 2 слева (например, x = 1.9, 1.99, 1.999...), целая часть всегда равна 1. Справа (x = 2.001) было бы 2, поэтому двусторонний предел не существует.
Пределы на бесконечности
Пределы на бесконечности
Что происходит с функцией, когда $x$ становится сколь угодно большим? Это вопрос об **асимптотическом поведении** - то, что ML-инженеры изучают при анализе сложности алгоритмов и поведения моделей при больших данных:
Вместо $\delta$-окрестности точки берём «далёкие» значения $x > M$. Если функция стабилизируется около $L$ - предел существует. В нотации O-большое: $f(n) = O(g(n))$ означает, что $\lim_{n \to \infty} f(n)/g(n)$ конечен и ненулевой.
$\infty$ - это число, с которым можно делать арифметику
$\infty$ - это символ для «неограниченного роста», а не число
Когда пишем $\lim f(x) = \infty$, это означает: предел НЕ существует, функция растёт без ограничений. Нельзя делить на $\infty$ или складывать его как число. В ML: «softmax насыщается при больших логитах» - это неформальное описание того, что предел логита стремится к бесконечности.
В чём ключевая идея раздела «Пределы на бесконечности»?
Перескажите главное определение или результат раздела одним предложением.
Замечательные пределы
Замечательные пределы
Два предела настолько фундаментальны, что их называют **замечательными** - они порождают целые семейства результатов:
Первый замечательный предел объясняет, почему в теории обучения часто пишут $\sin x \approx x$ при малых $x$. Это не приближение - это точное утверждение о поведении в пределе. Второй предел связан с числом $e \approx 2.71828$ - основанием натурального логарифма, живущим в softmax, в температурном сглаживании, в непрерывном дисконтировании.
Чему равен $\lim_{x \to 0} \frac{\sin(3x)}{x}$?
Используем первый замечательный предел: $\frac{\sin(3x)}{x} = 3 \cdot \frac{\sin(3x)}{3x}$. При $x \to 0$ имеем $3x \to 0$, и $\frac{\sin(3x)}{3x} \to 1$. Ответ: $3 \cdot 1 = 3$.
Свойства пределов
Свойства пределов
Если $\lim_{x \to a} f(x) = L$ и $\lim_{x \to a} g(x) = M$ существуют, то:
- **Сумма/разность**: $\lim(f \pm g) = L \pm M$
- **Произведение**: $\lim(f \cdot g) = L \cdot M$
- **Частное**: $\lim(f / g) = L / M$ при $M \neq 0$
- **Константа**: $\lim(c \cdot f) = c \cdot L$
- **Степень**: $\lim f^n = L^n$
В чём ключевая идея раздела «Свойства пределов»?
Перескажите главное определение или результат раздела одним предложением.
Неопределённости
Неопределённости
Прямая подстановка иногда даёт бессмысленное выражение - **неопределённость**. Это не ответ, это сигнал: нужен другой метод:
| Вид | Пример | Метод раскрытия |
|---|---|---|
| $\frac{0}{0}$ | $\lim_{x\to1}\frac{x^2-1}{x-1}$ | Разложить и сократить |
| $\frac{\infty}{\infty}$ | $\lim_{x\to\infty}\frac{x^2}{x^3}$ | Поделить на старшую степень |
| $0 \cdot \infty$ | $\lim_{x\to0^+} x \ln x$ | Преобразовать в дробь |
| $\infty - \infty$ | $\lim_{x\to\infty}(\sqrt{x+1} - \sqrt{x})$ | Умножить на сопряжённое |
| $1^\infty$ | $\lim_{x\to\infty}(1+1/x)^x$ | Второй замечательный предел |
| $0^0, \infty^0$ | $\lim_{x\to0^+} x^x$ | Прологарифмировать |
**Правило Лопиталя** - мощный инструмент для раскрытия $\frac{0}{0}$ и $\frac{\infty}{\infty}$: берём производные числителя и знаменателя. Подробнее - в уроке о вычислении пределов!
В чём ключевая идея раздела «Неопределённости»?
Перескажите главное определение или результат раздела одним предложением.
Практика
Практика
Вычислите $\lim_{x \to 2} \frac{x^2 - 4}{x - 2}$
Числитель: $x^2 - 4 = (x-2)(x+2)$ $\lim_{x \to 2} \frac{(x-2)(x+2)}{x-2} = \lim_{x \to 2} (x+2) = 4$
Вычислите $\lim_{x \to \infty} \frac{3x^2 + 5x - 1}{2x^2 - x + 7}$
Делим всё на $x^2$: $\lim_{x \to \infty} \frac{3 + 5/x - 1/x^2}{2 - 1/x + 7/x^2}$ При $x \to \infty$ все дроби с $x$ в знаменателе → 0: $= \frac{3 + 0 - 0}{2 - 0 + 0} = \frac{3}{2}$
Докажите с помощью ε-δ определения, что $\lim_{x \to 3} (2x + 1) = 7$
Нужно доказать: $\forall \varepsilon > 0 \; \exists \delta > 0: 0 < |x - 3| < \delta \Rightarrow |(2x+1) - 7| < \varepsilon$ Упростим $|(2x+1) - 7| = |2x - 6| = 2|x - 3|$ Хотим: $2|x - 3| < \varepsilon$, то есть $|x - 3| < \varepsilon/2$ **Выбираем $\delta = \varepsilon/2$** Проверка: если $0 < |x - 3| < \delta = \varepsilon/2$, то: $|(2x+1) - 7| = 2|x - 3| < 2 \cdot \varepsilon/2 = \varepsilon$ ✓
В чём ключевая идея раздела «Практика»?
Перескажите главное определение или результат раздела одним предложением.
Связь с другими темами
Предел функции - фундамент всего анализа
- Последовательности — Предел функции обобщает предел последовательности (определение Гейне)
- Непрерывность — Функция непрерывна в точке, если предел равен значению
- Производная — Производная - это предел разностного отношения. Весь backprop живёт здесь
- Интеграл — Определённый интеграл - предел интегральных сумм Римана
- Ряды Тейлора — Используют пределы для аппроксимации функций
Итоги
- **Предел $\lim_{x \to a} f(x) = L$** описывает поведение функции около точки $a$, но не в ней - $f(a)$ может не существовать
- **ε-δ определение**: для любой точности ε найдётся окрестность δ, обеспечивающая эту точность. Это формальная основа gradient checking
- **Односторонние пределы** могут различаться. Двусторонний существует только при их равенстве - именно так анализируется ReLU
- **Замечательные пределы**: $\frac{\sin x}{x} \to 1$ и $(1+x)^{1/x} \to e$ при $x \to 0$. Второй порождает всю математику непрерывного времени
- **Неопределённости** (0/0, ∞/∞ и др.) требуют специальных методов раскрытия - не ошибка, а сигнал
Вопросы для размышления
- Почему предел функции в точке может не равняться значению функции в этой точке? Приведите пример из ML.
- Как бы объяснили ε-δ определение junior-разработчику через аналогию с gradient checking?
- Почему $\infty$ - это не число? Что сломается, если считать его числом при вычислении softmax?
- Как связаны предел последовательности и предел функции?