🔴 Сложный ⏱️ 45 минут

Бесконечно малые и большие

📋 Содержание урока

Бесконечно малые и большие 🔬

Что общего у сигнала в проводе, который слабеет с каждым метром, у ошибки округления, накопившейся за миллион операций, и у градиента, который пробирается обратным распространением через полторы сотни слоёв нейросети? Формально — ничего: провод, ошибка и градиент живут в разных областях. Но с точки зрения математики это один и тот же вопрос: что происходит с величиной, когда параметр, от которого она зависит, меняется — расстояние растёт, число операций растёт, число слоёв растёт. И ответов на этот вопрос ровно два: величина либо утекает к нулю, либо улетает в бесконечность. Разложить оба сценария по полочкам, дать им точные определения и научиться работать с ними как с инструментом — задача этого урока.

Первое, что стоит держать в голове: бесконечно малая — это не число вроде $0{,}0000001$. Как бы ты ни выбрал крошечное положительное число, оно останется фиксированным и никуда не денется. Бесконечно малая — это процесс: функция или последовательность, которая меняется вместе со своим аргументом и в пределе достигает нуля. Последовательность $a_n = 1/n$ — бесконечно малая не потому, что $a_{1000} = 0{,}001$ маленькое число, а потому, что для любого наперёд заданного порога, каким бы крошечным он ни был, найдётся номер, начиная с которого все члены последовательности этот порог не превышают. Симметрично устроена и бесконечно большая величина: не «большое число», а процесс безудержного роста.

Теперь — обещанная связь с нейросетями, и она почти буквальная. При обратном распространении ошибки градиент, который добирается от последнего слоя до первого, проходит через цепочку умножений: на каждом слое он домножается на локальную производную. Если типичный множитель на каждом слое по модулю меньше единицы, то после $L$ таких умножений градиент — это последовательность, индексированная глубиной сети $L$, и при росте $L$ она стремится к нулю. Это и есть затухающий градиент (vanishing gradient) — не метафора, а буквально бесконечно малая величина по определению этого урока, только роль «$n \to \infty$» играет «число слоёв $L \to \infty$». Если множители систематически больше единицы, та же последовательность улетает в бесконечность — взрыв градиента (exploding gradient). Ни один инженер не гоняет сеть с бесконечным числом слоёв, но скорость, с которой произведение стремится к своему пределу, определяет, сколько слоёв реально можно поставить, прежде чем сигнал утонет в шуме округления или переполнит формат чисел с плавающей точкой. Разобравшись в этом уроке, ты будешь понимать механизм этой болезни, а не просто помнить её название.

🎯 Ты узнаешь:

  • Строгие определения бесконечно малой и бесконечно большой величины — для функций и для последовательностей — и почему это определения про процесс, а не про конкретное число

  • Теорему о взаимной обратности: почему обратная величина бесконечно малой (при её ненулевом значении рядом с точкой) — это всегда бесконечно большая, и наоборот

  • Три рабочих свойства бесконечно малых: сумма конечного числа бесконечно малых — бесконечно малая, произведение бесконечно малой на ограниченную функцию — бесконечно малая, и как из этого выводится, что произведение конечного числа бесконечно малых — тоже бесконечно малая

  • Классическую ловушку: почему эти свойства работают только для фиксированного числа слагаемых или множителей и ломаются, если их количество растёт вместе с параметром — ровно то, что происходит с числом слоёв в сети

  • Как этот аппарат превращается в объяснение затухающего и взрывающегося градиента, числа обусловленности и переполнения чисел с плавающей точкой

  • Первый взгляд на то, что значит «одна бесконечно малая стремится к нулю быстрее другой» — вопрос, на который следующий урок даст полный формальный ответ

История: откуда это взялось?

Когда Готфрид Лейбниц в 1684 году и Исаак Ньютон в рукописях 1660-х годов создавали математический анализ, оба опирались на понятие бесконечно малой величины — числа $dx$, настолько крошечного, что оно меньше любого положительного числа, но при этом не равного нулю. С такими величинами можно было делить: производная $dy/dx$ получалась как отношение двух бесконечно малых. Аппарат работал прекрасно и давал верные ответы — задачи о касательных, скоростях и площадях решались одна за другой. Но логическое основание было шатким: что такое $dx$, если оно не ноль, но меньше любого положительного числа?

Слабое место не укрылось от современников. В 1734 году английский епископ Джордж Беркли выпустил памфлет «Аналист», где высмеял бесконечно малые как «призраки исчезнувших величин» (ghosts of departed quantities): в вычислении $dx$ сперва объявляют ненулевым, чтобы на него можно было делить, а затем отбрасывают как нулевое, чтобы получить конечный ответ. Формально Беркли был совершенно прав — противоречие в основаниях действительно было. Но результаты анализа слишком хорошо работали на практике, чтобы математики XVIII века остановились в ожидании строгости; Эйлер, Лагранж и их современники ещё сто лет продолжали считать с бесконечно малыми интуитивно, полагаясь на то, что ответ и так известен из физики или геометрии.

Строгость пришла в XIX веке, и пришла в два шага. Первый сделал Бернард Больцано, ещё в 1817 году давший по-настоящему аккуратное определение непрерывности через неравенства, хотя его работы долго оставались малоизвестными. Второй, решающий шаг сделал Огюстен Луи Коши: в «Курсе анализа» 1821 года он предложил определение, которое перевернуло саму идею. Бесконечно малая — это, по Коши, не фиксированное сверхмалое число, а переменная величина, предел которой равен нулю. Парадокс Беркли исчез сам собой: $dx$ никогда и не было фиксированным ненулевым числом, это было имя для процесса стремления к нулю. Осталось только формализовать само слово «предел» без апелляции к интуиции о движении — этим в 1850–1860-х годах в берлинских лекциях занялся Карл Вейерштрасс, выразивший идею предела на языке неравенств $\varepsilon$ и $\delta$, который ты видишь в определениях этого урока. Именно эта $\varepsilon$-$\delta$ формулировка сегодня стандартна во всём мире и полностью снимает вопрос Беркли: никаких «призраков» больше нет, есть только числа и неравенства между ними.

Бесконечно малые величины

Интуиция: не число, а процесс

Представь, что ты наблюдаешь за муравьём, который ползёт к стене вдоль числовой прямой, каждую секунду преодолевая половину оставшегося расстояния. После первой секунды до стены остаётся половина исходного пути, после второй — четверть, после десятой — одна тысяча двадцать четвёртая. Муравей никогда не коснётся стены за конечное число секунд, но расстояние до неё можно сделать меньше любого наперёд заданного порога, если подождать достаточно долго. Вот это «можно сделать меньше любого порога, если подождать достаточно долго» и есть суть бесконечно малой величины — и заметь, ни на одном шаге расстояние не равно нулю в буквальном смысле.

Определение

Определение: Функция $\alpha(x)$, определённая в некоторой проколотой окрестности точки $a$ (или при $x \to \infty$), называется бесконечно малой при $x \to a$, если

$$\lim_{x \to a} \alpha(x) = 0,$$

то есть для любого $\varepsilon > 0$ найдётся $\delta > 0$ такое, что из $0 < |x - a| < \delta$ следует $|\alpha(x)| < \varepsilon$.

Последовательность $\{a_n\}$ называется бесконечно малой при $n \to \infty$, если $\lim_{n \to \infty} a_n = 0$: для любого $\varepsilon > 0$ найдётся номер $N$ такой, что при всех $n > N$ выполнено $|a_n| < \varepsilon$.

Ключевое слово — «для любого $\varepsilon$». Определение не говорит, что величина маленькая; оно говорит, что она обязана стать меньше любого наперёд заданного порога, если аргумент подойдёт достаточно близко к $a$ (или номер станет достаточно большим).

Разбор примеров

Пример 1 (лёгкий). Покажи по определению, что $\alpha(x) = (x-1)^3$ — бесконечно малая при $x \to 1$.

Возьмём произвольное $\varepsilon > 0$ и положим $\delta = \sqrt[3]{\varepsilon}$. Тогда из $|x - 1| < \delta$ следует $|x-1|^3 < \delta^3 = \varepsilon$, то есть $|\alpha(x)| < \varepsilon$. По определению $\alpha(x) \to 0$ при $x \to 1$, значит функция бесконечно малая.

Пример 2 (средний). Последовательность $a_n = 5/n$ — бесконечно малая при $n \to \infty$. Найди номер $N$, начиная с которого $|a_n| < 0{,}001$.

Нужно $5/n < 0{,}001$, откуда $n > 5000$. Значит, при всех $n > 5000$ (например, $N = 5000$) выполнено $a_n < 0{,}001$. Для любого другого $\varepsilon$ рассуждение то же: $N = \lceil 5/\varepsilon \rceil$ работает всегда, а значит $a_n \to 0$.

Пример 3 (сложный). Докажи, что $a_n = n!/n^n$ — бесконечно малая при $n \to \infty$, хотя числитель $n!$ и знаменатель $n^n$ оба растут неограниченно.

Распишем дробь как произведение:

$$\frac{n!}{n^n} = \frac{1 \cdot 2 \cdot 3 \cdots n}{n \cdot n \cdot n \cdots n} = \frac{1}{n} \cdot \frac{2}{n} \cdot \frac{3}{n} \cdots \frac{n}{n}.$$

Каждый множитель, начиная со второго, не превышает единицы (ведь $k \le n$ при $k$ от $2$ до $n$), поэтому всё произведение не превышает первого множителя:

$$0 < \frac{n!}{n^n} \le \frac{1}{n}.$$

Правая часть — бесконечно малая (пример 2 с другим числителем), а последовательность зажата между $0$ и величиной, стремящейся к нулю. Значит, $n!/n^n \to 0$: несмотря на то что оба «участника» дроби неограниченно растут, их отношение стремится к нулю — факториал в знаменателе побеждает степень.

Почему это важно

Именно так — через $\varepsilon$-$\delta$, а не через интуитивное «маленькое число» — определяется предел вообще, а на пределе стоит вся строгая версия производной, интеграла и непрерывности. А в прикладном смысле каждый локальный множитель $\partial h_{k+1}/\partial h_k$ в цепочке обратного распространения — это число, и вопрос, стремится ли произведение таких чисел к нулю с ростом глубины сети, дословно совпадает с вопросом «является ли эта последовательность бесконечно малой».

Бесконечно большие величины

Интуиция: неограниченный рост

Представь противоположную ситуацию: не муравей приближается к стене, а воздушный шар поднимается, и с каждой минутой набирает высоту, которая рано или поздно превзойдёт любую наперёд заданную планку — километр, десять километров, тысячу. Неважно, насколько высокую планку ты назовёшь, шар рано или поздно её проскочит и больше не вернётся вниз. Это и есть бесконечно большая величина: не «огромное число», а процесс, который обязан перескочить любой порог.

Определение

Определение: Функция $f(x)$ называется бесконечно большой при $x \to a$, если для любого $M > 0$ найдётся $\delta > 0$ такое, что из $0 < |x - a| < \delta$ следует $|f(x)| > M$. Пишут $\lim_{x \to a} f(x) = \infty$.

Последовательность $\{a_n\}$ называется бесконечно большой при $n \to \infty$, если для любого $M > 0$ найдётся номер $N$ такой, что при всех $n > N$ выполнено $|a_n| > M$.

Если, кроме того, начиная с некоторого момента $f(x) > M$ (без модуля), говорят, что предел равен $+\infty$; если $f(x) < -M$ — что предел равен $-\infty$. Без уточнения знака $\infty$ обозначает только неограниченный рост модуля.

Обрати внимание: определение симметрично определению бесконечно малой с точностью до замены «меньше $\varepsilon$» на «больше $M$». Это не случайность — дальше в этом уроке мы докажем, что связь между ними даже теснее, чем просто похожая структура определений.

Разбор примеров

Пример 1 (лёгкий). Покажи, что $f(x) = x^2 + 1$ — бесконечно большая при $x \to \infty$.

Для любого $M > 0$ решим неравенство $x^2 + 1 > M$: достаточно взять $x > \sqrt{M}$. Значит, при $x > \sqrt{M}$ выполнено $f(x) > M$, и по определению $f$ — бесконечно большая (со знаком $+\infty$, поскольку $f(x) > 0$ всегда).

Пример 2 (средний). Является ли последовательность $a_n = n \cdot (-1)^n$ бесконечно большой?

Сама последовательность не стремится ни к $+\infty$, ни к $-\infty$ — она прыгает между большими положительными и большими отрицательными значениями: $a_1 = -1$, $a_2 = 2$, $a_3 = -3$, $a_4 = 4, \dots$ Но модуль $|a_n| = n$ неограниченно растёт: для любого $M$, взяв $N = M$, при всех $n > N$ получаем $|a_n| = n > M$. По определению без уточнения знака это бесконечно большая величина (в общем, беззнаковом смысле), хотя ни $+\infty$, ни $-\infty$ по отдельности сказать нельзя.

Пример 3 (сложный). Докажи, что $a_n = n!/2^n$ — бесконечно большая при $n \to \infty$.

Посмотрим на отношение соседних членов: $\dfrac{a_{n+1}}{a_n} = \dfrac{(n+1)!/2^{n+1}}{n!/2^n} = \dfrac{n+1}{2}$. При $n \ge 3$ это отношение не меньше $2$, значит начиная с $n = 3$ каждый следующий член как минимум вдвое больше предыдущего:

$$a_n \ge a_3 \cdot 2^{\,n-3} \quad \text{при } n \ge 3, \qquad a_3 = \frac{3!}{2^3} = \frac{6}{8} = 0{,}75.$$

Правая часть — геометрическая прогрессия со знаменателем $2$, она неограниченно растёт, значит и $a_n \to \infty$. Как и в примере с $n!/n^n$, здесь работает один и тот же приём: не считать предел напрямую, а зажать последовательность между известной бесконечно большой (или малой) и константой.

Замечание (полезное следствие). Если $|f(x)| \ge |g(x)|$ в некоторой проколотой окрестности точки $a$, а $g$ — бесконечно большая при $x \to a$, то и $f$ — бесконечно большая при $x \to a$. Доказательство мгновенное: для любого $M$ найдётся $\delta$, на котором $|g(x)| > M$, а значит там же $|f(x)| \ge |g(x)| > M$. Именно этим приёмом только что были доказаны примеры 2 и 3.

Почему это важно

Взрыв градиента, переполнение чисел с плавающей точкой (inf вместо разумного значения), неограниченный рост функции потерь при слишком высокой скорости обучения — всё это именно бесконечно большая величина в этом строгом смысле, только роль $x \to a$ играет число шагов оптимизации или номер слоя. Приём из примера 3 — зажать между известной геометрической прогрессией — это ровно тот метод, которым в конце урока мы оценим, за сколько слоёв взрывается градиент в конкретной сети.

Связь между бесконечно малыми и бесконечно большими

Интуиция: обратная величина переворачивает масштаб

Возьми любое положительное число и посмотри на его обратную величину: чем меньше исходное число, тем больше обратное, и наоборот. Микроскоп и телескоп в этом смысле — зеркальные инструменты: один увеличивает то, что стремится схлопнуться в точку, другой сжимает то, что убегает за горизонт. Ровно эта симметрия связывает бесконечно малые и бесконечно большие величины — и связывает не метафорически, а в виде точной теоремы.

Теорема

Теорема (о взаимной обратности).

  1. Если $\alpha(x)$ — бесконечно малая при $x \to a$ и $\alpha(x) \ne 0$ в некоторой проколотой окрестности точки $a$, то $f(x) = 1/\alpha(x)$ — бесконечно большая при $x \to a$.
  2. Если $f(x)$ — бесконечно большая при $x \to a$, то $\alpha(x) = 1/f(x)$ — бесконечно малая при $x \to a$ (при этом $f(x) \ne 0$ автоматически в достаточно малой окрестности, поскольку $|f(x)| > 1$ там).

Доказательство пункта 1. Возьмём произвольное $M > 0$. Так как $\alpha$ — бесконечно малая, для $\varepsilon = 1/M$ найдётся $\delta > 0$ такое, что из $0 < |x-a| < \delta$ следует $|\alpha(x)| < 1/M$. Поскольку там же $\alpha(x) \ne 0$, можно поделить единицу на $|\alpha(x)|$: $|1/\alpha(x)| > M$. Значит, для любого $M$ нашлась своя $\delta$ — по определению $f = 1/\alpha$ бесконечно большая.

Доказательство пункта 2. Возьмём произвольное $\varepsilon > 0$. Положим $M = 1/\varepsilon$; так как $f$ — бесконечно большая, найдётся $\delta > 0$ такое, что из $0 < |x-a| < \delta$ следует $|f(x)| > M = 1/\varepsilon$, откуда $|1/f(x)| < \varepsilon$. По определению $1/f$ — бесконечно малая.

Условие «$\alpha(x) \ne 0$ рядом с $a$» в первом пункте не бюрократическая деталь: если $\alpha$ обращается в ноль сколь угодно близко к $a$, то $1/\alpha(x)$ там просто не определена, и говорить о её пределе бессмысленно.

Разбор примеров

Пример 1 (лёгкий). $\alpha(x) = x - 5$ — бесконечно малая при $x \to 5$ и не равна нулю при $x \ne 5$. По теореме, $f(x) = 1/(x-5)$ — бесконечно большая при $x \to 5$. Что подтверждает и прямой счёт: при $x \to 5^+$ дробь стремится к $+\infty$, при $x \to 5^-$ — к $-\infty$, то есть модуль в любом случае неограниченно растёт.

Пример 2 (средний). $f(x) = x^3$ — бесконечно большая при $x \to \infty$ (проверяется как в предыдущем блоке). По пункту 2 теоремы автоматически следует, что $1/x^3$ — бесконечно малая при $x \to \infty$, без отдельного $\varepsilon$-$\delta$ рассуждения для дроби.

Пример 3 (сложный). Докажи, что $1/(1 - \cos x)$ — бесконечно большая при $x \to 0$.

Функция $\alpha(x) = 1 - \cos x$ непрерывна и $\cos 0 = 1$, поэтому $\alpha(x) \to 0$ при $x \to 0$ — она бесконечно малая. На проколотой окрестности $0 < |x| < \pi$ выполнено $\cos x < 1$ строго (косинус достигает значения $1$ только в точках $2\pi k$), значит там $\alpha(x) > 0$, то есть условие «$\alpha \ne 0$ рядом с точкой» выполнено. По пункту 1 теоремы $1/(1-\cos x)$ — бесконечно большая при $x \to 0$.

Почему это важно

Эта теорема — формальное обоснование того, почему деление на «почти ноль» ведёт себя как взрыв. В машинном обучении это буквальный источник численной нестабильности: дисперсия признака в знаменателе batch normalization, знаменатель softmax, обратная матрица ковариаций — стоит одному из этих знаменателей стать бесконечно малым, как вся дробь становится бесконечно большой, и вычисление разваливается. Именно поэтому в формулах вроде $\hat{x} = (x - \mu)/\sqrt{\sigma^2 + \varepsilon}$ инженеры добавляют крошечное $\varepsilon$: оно не даёт знаменателю коснуться нуля и тем самым не даёт результату превратиться в бесконечно большую (или вовсе неопределённую) величину.

Свойства бесконечно малых величин

Интуиция: маленькое плюс маленькое остаётся маленьким — но только пока слагаемых конечно много

Если у тебя три независимых источника мелкой погрешности — округление датчика, дрожание температуры, помеха в проводе, — суммарная ошибка всё равно остаётся маленькой: три маленькие вещи, сложенные вместе, не превращаются в большую. То же самое, если маленькую величину умножить на что-то, что не улетает в бесконечность, а остаётся в разумных пределах: доля вероятности, близкая к нулю, умноженная на ограниченный выигрыш, всё равно даёт крошечный вклад. Оба этих факта — не наблюдения, а точные теоремы, и они формируют арифметику бесконечно малых.

Теорема (свойства)

Теорема. Пусть $\alpha(x)$ и $\beta(x)$ — бесконечно малые при $x \to a$, а $g(x)$ — функция, ограниченная в некоторой проколотой окрестности точки $a$ (то есть $|g(x)| \le C$ там для некоторой константы $C$). Тогда при $x \to a$:

  1. Сумма $\alpha(x) + \beta(x)$ — бесконечно малая (и, по индукции, сумма любого фиксированного конечного числа бесконечно малых — тоже бесконечно малая).
  2. Произведение $\alpha(x) \cdot g(x)$ — бесконечно малая.
  3. В частности (следствие из пункта 2 и того, что всякая бесконечно малая сама ограничена рядом с $a$), произведение любого фиксированного конечного числа бесконечно малых — снова бесконечно малая.

Доказательство пункта 1. Дано $\varepsilon > 0$. Поскольку $\alpha$ — бесконечно малая, найдётся $\delta_1$ такое, что $|\alpha(x)| < \varepsilon/2$ при $0 < |x-a| < \delta_1$; аналогично найдётся $\delta_2$ с $|\beta(x)| < \varepsilon/2$ при $0 < |x-a| < \delta_2$. Возьмём $\delta = \min(\delta_1, \delta_2)$. Тогда при $0 < |x-a| < \delta$ по неравенству треугольника

$$|\alpha(x) + \beta(x)| \le |\alpha(x)| + |\beta(x)| < \varepsilon/2 + \varepsilon/2 = \varepsilon.$$

Для трёх и более слагаемых рассуждение повторяется индукцией: сумма первых $k$ бесконечно малых — бесконечно малая, добавление ещё одной по только что доказанному пункту сохраняет это свойство.

Доказательство пункта 2. Пусть $|g(x)| \le C$ на некоторой проколотой окрестности $a$ (если $C = 0$, произведение тождественно ноль и доказывать нечего). Дано $\varepsilon > 0$; так как $\alpha$ — бесконечно малая, найдётся $\delta$ такое, что $|\alpha(x)| < \varepsilon/C$ при $0 < |x-a| < \delta$ (можно ещё пересечь с окрестностью, где верна оценка на $g$). Тогда там же

$$|\alpha(x) \cdot g(x)| = |\alpha(x)| \cdot |g(x)| < \frac{\varepsilon}{C} \cdot C = \varepsilon.$$

Доказательство пункта 3 (для двух множителей, дальше — индукция). Возьмём $\varepsilon = 1$ в определении бесконечно малой $\beta$: найдётся окрестность, где $|\beta(x)| < 1$, то есть $\beta$ ограничена рядом с $a$. Значит, к произведению $\alpha(x)\beta(x)$ применим уже доказанный пункт 2 с $g = \beta$: произведение бесконечно малой $\alpha$ на ограниченную $\beta$ — снова бесконечно малая. Для трёх и более множителей: если произведение первых $k$ множителей уже установлено как бесконечно малое, то оно, в частности, ограничено рядом с $a$ (тем же аргументом с $\varepsilon = 1$), и умножение на ещё одну бесконечно малую снова даёт бесконечно малую по пункту 2. Индукция завершает доказательство для любого фиксированного числа множителей.

Разбор примеров

Пример 1 (лёгкий). $x^2$ и $x^3$ — бесконечно малые при $x \to 0$ по отдельности (прямая подстановка предела). По пункту 1 их сумма $x^2 + x^3$ — тоже бесконечно малая при $x \to 0$.

Пример 2 (средний). Вычисли $\lim\limits_{x \to 0} x \sin(1/x)$.

Функция $\sin(1/x)$ вообще не имеет предела при $x \to 0$ — она бесконечно часто колеблется между $-1$ и $1$. Но она ограничена: $|\sin(1/x)| \le 1$ для всех $x \ne 0$. А $x$ — бесконечно малая при $x \to 0$. По пункту 2 теоремы произведение бесконечно малой на ограниченную функцию — бесконечно малая, поэтому

$$\lim_{x \to 0} x \sin(1/x) = 0.$$

Заметь: доказательство не требует, чтобы у $\sin(1/x)$ был предел — только ограниченности достаточно. Это ровно та тонкость, которую легко упустить.

Пример 3 (сложный — классическая ловушка). Верно ли, что сумма $b_n = \underbrace{\dfrac{1}{n} + \dfrac{1}{n} + \dots + \dfrac{1}{n}}_{n \text{ слагаемых}}$ — бесконечно малая при $n \to \infty$, ведь каждое слагаемое $1/n \to 0$?

Посчитаем явно: $b_n = n \cdot \dfrac{1}{n} = 1$ для любого $n$. Предел этой последовательности равен $1$, а вовсе не нулю — сумма никакая не бесконечно малая. Противоречия с теоремой нет: пункт 1 доказан для фиксированного числа слагаемых — двух, трёх, ста, но одного и того же числа для всех $x$ (или всех $n$) в рассуждении. Здесь же число слагаемых само растёт вместе с $n$, и теорема к такой сумме попросту неприменима. Это самая важная оговорка всего урока — и она напрямую связана с числом слоёв в нейросети, о чём чуть ниже.

Почему это важно

Ловушка из примера 3 — не учебная казуистика, а ровно то место, где интуиция обманывает инженеров на практике. «Каждый слой лишь немного меняет градиент, значит суммарный эффект небольшой» — рассуждение того же типа, что и «каждое слагаемое $1/n$ маленькое, значит сумма маленькая», и оно так же неверно, если число слоёв растёт. Разница между «сумма фиксированного числа бесконечно малых» и «сумма растущего числа бесконечно малых» — это разница между школьной интуицией и реальным поведением глубокой сети, и именно она мотивирует следующий раздел.

Сравнение скорости стремления к пределу (что дальше)

Все три примера выше на самом деле уже задавали один и тот же не заданный вслух вопрос: с какой скоростью величина приближается к своему пределу? $x^2$ и $x^3$ обе стремятся к нулю при $x \to 0$, но $x^3$ делает это заметно быстрее — при $x = 0{,}1$ это $0{,}001$ против $0{,}000001$, разница в тысячу раз. А произведение $\rho^L$, где $\rho$ — типичный множитель на одном слое сети, а $L$ — число слоёв, ведёт себя принципиально по-разному в зависимости от того, чуть меньше единицы $\rho$ или чуть больше: при $\rho = 0{,}95$ и $\rho = 1{,}05$ обе величины стартуют почти одинаково, но через полсотни шагов расходятся на много порядков — прикинь: $0{,}95^{50} \approx 0{,}077$, а $1{,}05^{50} \approx 11{,}5$.

Формальный язык для сравнения таких скоростей — так называемые о-малое, О-большое и эквивалентные бесконечно малые — это тема следующего урока. Там мы дадим точное определение того, что значит «$\alpha$ стремится к нулю быстрее $\beta$», научимся заменять сложные бесконечно малые на простые эквивалентные и посчитаем пределы, которые «в лоб» через определение считать неудобно. Здесь же важно унести с собой главный вывод: сам факт, что величина бесконечно малая (или бесконечно большая), — это только классификация «да/нет». Как быстро именно она приближается к пределу — совсем другой, куда более информативный вопрос, и без ответа на него нельзя ни оценить число обусловленности задачи, ни понять, через сколько слоёв градиент в конкретной сети реально станет неотличим от нуля.

Практика: 30 заданий

Базовые задания (1–10)

Задание 1: По определению докажи, что $\alpha(x) = (x+2)^2$ — бесконечно малая при $x \to -2$.


Задание 2: Последовательность $a_n = 7/n^2$. Найди номер $N$, начиная с которого $|a_n| < 0{,}01$.


Задание 3: По определению докажи, что $f(x) = x^4$ — бесконечно большая при $x \to \infty$.


Задание 4: Является ли последовательность $a_n = (-1)^n$ бесконечно малой? Ограничена ли она?


Задание 5: $\alpha(x) = x - 3$ — бесконечно малая при $x \to 3$ и не равна нулю при $x \ne 3$. Что можно сказать о поведении $1/(x-3)$ при $x \to 3$?


Задание 6: $f(x) = x^5$ — бесконечно большая при $x \to \infty$. Что следует о поведении $1/x^5$?


Задание 7: Докажи по свойству суммы, что $x^2 + x^4 + x^6$ — бесконечно малая при $x \to 0$.


Задание 8: Вычисли $\lim\limits_{x \to 0} x^2 \cos(1/x)$.


Задание 9: Вычисли $\lim\limits_{n \to \infty} \dfrac{\cos n}{n}$.


Задание 10: Игрушечная сеть из трёх слоёв: на каждом слое градиент домножается на $0{,}5$. Чему равен итоговый множитель после трёх слоёв? Уже заметно затухание?

Средние задания (11–20)

Задание 11: По определению (через $M$ и $\delta$) докажи, что $f(x) = 1/x$ — бесконечно большая при $x \to 0$ (оба знака, $x \ne 0$).


Задание 12: Является ли последовательность $a_n = n(-1)^n$ бесконечно большой? Можно ли сказать, что её предел равен $+\infty$?


Задание 13: Докажи, что $x^2 + 3x^3 - 5x^4$ — бесконечно малая при $x \to 0$, опираясь на свойства произведения и суммы (не вычисляя предел напрямую).


Задание 14: Вычисли $\lim\limits_{n \to \infty} \dfrac{\sin n + \cos 2n}{\sqrt{n}}$.


Задание 15: (Ловушка.) $b_n = \underbrace{\dfrac1n+\dfrac1n+\dots+\dfrac1n}_{n}$. Каждое слагаемое стремится к нулю при $n \to \infty$. Значит ли это, что $b_n \to 0$? Посчитай явно.


Задание 16: Взрыв градиента: 10 слоёв, каждый слой домножает градиент на $1{,}5$. Найди итоговый множитель $1{,}5^{10}$.


Задание 17: Затухание градиента: 10 слоёв, каждый слой домножает градиент на $0{,}5$. Найди $0{,}5^{10}$.


Задание 18: Докажи, что $n^2 + 1$ — бесконечно большая при $n \to \infty$, используя сравнение с уже известной бесконечно большой $n^2$.


Задание 19: Вычисли $\lim\limits_{x \to 0} \dfrac{1-\cos x}{x^2}$ (сообщается заранее: он равен $1/2$). Что этот результат говорит о скорости стремления $1-\cos x$ и $x^2$ к нулю?


Задание 20: Вычисли $\lim\limits_{x \to \infty} \dfrac{\sin x}{x}$.

Продвинутые задания (21–30)

Задание 21: Докажи в общем виде: если $\alpha(x) \to 0$ при $x \to a$ и $|g(x)| \le C$ в некоторой проколотой окрестности $a$, то $\alpha(x) g(x) \to 0$ при $x \to a$.


Задание 22: Докажи теорему о взаимной обратности в обе стороны заново, но для последовательностей (не для функций).


Задание 23: Докажи, что $a_n = \dfrac{n^2+\sin(n^3)}{n}$ — бесконечно большая при $n\to\infty$.


Задание 24: В рекуррентной сети множитель на каждом шаге backprop ограничен по модулю величиной $\rho$ (спектральный радиус матрицы весов, урок 172). Посчитай $\rho^L$ при $\rho=0{,}95$ и $\rho=1{,}05$ для $L=50$ и $L=200$ шагов и сделай вывод о том, как быстро расходятся два, казалось бы, близких сценария.


Задание 25: Пусть $a_n = n+5$ и $b_n = n$ — обе бесконечно большие при $n\to\infty$. Чему равен $\lim(a_n-b_n)$? Что это говорит про арифметику бесконечно больших величин?


Задание 26: Пусть $\alpha_n = 1/n$ и $\beta_n = (-1)^n/n$ — обе бесконечно малые при $n\to\infty$. Существует ли $\lim\limits_{n\to\infty} \alpha_n/\beta_n$?


Задание 27: Докажи методом индукции: произведение $n$ (фиксированного числа) бесконечно малых при $x\to a$ функций $\alpha_1(x), \dots, \alpha_n(x)$ — снова бесконечно малая.


Задание 28: Реальная сеть из 4 слоёв с разными локальными производными: $0{,}3$, $2{,}1$, $0{,}4$, $1{,}8$. Найди итоговый множитель градиента и определи, в каком режиме находится сеть.


Задание 29: Рассмотрим сумму $S_n = \sum\limits_{k=n+1}^{2n} \dfrac1k = \dfrac1{n+1}+\dfrac1{n+2}+\dots+\dfrac1{2n}$. В сумме ровно $n$ слагаемых, и каждое из них при фиксированном $k$ и $n\to\infty$... впрочем, посчитай $S_{10}$ явно и сопоставь с $\ln 2 \approx 0{,}6931$.


Задание 30: Рассмотри $f(x) = \dfrac{x^2\sin(1/x) + 3x^3}{x^2+x^4}$ при $x\to0$. Покажи, что числитель и знаменатель по отдельности бесконечно малые, а затем выясни, существует ли предел самой дроби.

Частые ошибки

Ошибка 1. Считают бесконечно малую конкретным крошечным числом, а не процессом.

Как выглядит: «$dx$ — это такое супермаленькое число, примерно $0{,}00000001$».

Почему возникает: историческая интуиция Лейбница и Ньютона, которая жила в математике полтора века и до сих пор проще для первого знакомства.

Как правильно: бесконечно малая — это функция или последовательность с пределом ноль, то есть про неё имеет смысл говорить только вместе с процессом $x\to a$ или $n\to\infty$. Фиксированное число, даже очень маленькое, бесконечно малой не является: оно не может стать «ещё меньше любого $\varepsilon$», оно уже зафиксировано.

Ошибка 2. Путают «ограничена» и «бесконечно малая».

Как выглядит: «$(-1)^n$ маленькая, потому что она всегда между $-1$ и $1$» или, наоборот, «$\sin(1/x)$ должна быть бесконечно малой, потому что она ограничена».

Почему возникает: оба свойства действительно про «не улетает далеко», и в свойстве произведения (бесконечно малая $\times$ ограниченная) они стоят рядом.

Как правильно: ограниченность означает лишь, что величина не выходит за некоторые рамки; бесконечно малая обязана ещё и стремиться к нулю. Задание 4 практики — ровно на эту разницу: $(-1)^n$ ограничена, но предела не имеет вовсе, и бесконечно малой не является.

Ошибка 3. Применяют теорему о сумме (или произведении) конечного числа бесконечно малых к сумме, число слагаемых в которой растёт вместе с параметром.

Как выглядит: «каждое слагаемое стремится к нулю, значит и сумма стремится к нулю» — без оглядки на то, что число слагаемых зависит от того же $n$, что и стремление к пределу.

Почему возникает: формулировка теоремы про «конечное число» слагаемых легко читается как «любое число», если не обратить внимание на слово «фиксированное».

Как правильно: смотри задания 15 и 29 практики. Число слагаемых в теореме обязано быть одним и тем же для всех $x$ (или всех $n$) в ходе доказательства — как только оно начинает расти вместе с параметром предела, теорема перестаёт работать, и сумма может стремиться к любому конечному пределу или вовсе не иметь предела. Это ровно ситуация с числом слоёв нейросети: слоёв столько же, сколько шагов идёт градиент, и увеличение глубины меняет сам объект, а не просто «ещё одно маленькое слагаемое».

Ошибка 4. Забывают условие «$\alpha(x)\ne0$ рядом с точкой» в теореме о взаимной обратности.

Как выглядит: заявляют, что $1/\alpha(x)$ бесконечно большая, хотя $\alpha$ обращается в ноль сколь угодно близко к точке $a$ (например, $\alpha(x)=x\sin(1/x)$ при $x\to0$).

Почему возникает: условие звучит как техническая деталь, которую легко пропустить при быстром применении теоремы.

Как правильно: если $\alpha$ обращается в ноль в любой окрестности точки $a$, дробь $1/\alpha(x)$ там просто не определена в отдельных точках, и утверждение о пределе (тем более о бесконечно большой) теряет смысл. Условие нужно проверять явно, а не считать автоматическим.

Ошибка 5. Считают $\infty - \infty$, $\infty/\infty$ и подобные выражения однозначно определёнными.

Как выглядит: «обе величины бесконечно большие, значит их разность тоже бесконечно большая» или «тоже равна нулю» — выбирают ответ по интуиции.

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

Как правильно: задание 25 практики показывает разность двух бесконечно больших, равную константе $5$; несложно построить пример, где разность бесконечно малая, бесконечно большая или вовсе без предела. Такие выражения называют неопределённостями именно потому, что ответ зависит от конкретных функций, а не от одной лишь классификации «бесконечно большая».

Ошибка 6. Полагают, что раз обе величины (числитель и знаменатель) бесконечно малые, то и предел их отношения существует и легко считается.

Как выглядит: видят $0/0$ и ищут способ «сократить» без проверки, действительно ли предел вообще есть.

Почему возникает: в учебных примерах предел почти всегда находится, и складывается впечатление, что $0/0$ — это просто техническая заминка, которую всегда можно обойти.

Как правильно: задание 30 практики — контрпример: числитель и знаменатель оба бесконечно малые, но предел дроби не существует вовсе. Перед тем как искать предел, стоит убедиться, что он в принципе есть; а инструменты для аккуратного сравнения двух бесконечно малых — тема следующего урока.

Ошибка 7. В контексте ML делают вывод о режиме сети (затухание или взрыв) по одному слою или по одному числу без учёта глубины.

Как выглядит: «множитель на этом слое $0{,}9$, это почти единица, всё в порядке» — без учёта того, что $0{,}9^L$ при большом $L$ всё равно уходит к нулю.

Почему возникает: $0{,}9$ действительно близко к $1$ и на глаз выглядит безопасно.

Как правильно: задание 24 практики показывает, что даже при $\rho=0{,}95$ за 200 шагов множитель падает до $3{,}5\cdot10^{-5}$. Значение имеет не столько сам множитель на одном шаге, сколько знак $\ln\rho$ и число шагов $L$, через которые он умножается сам на себя, — судить нужно про произведение по всей глубине, а не про один сомножитель.

Главное запомнить

  • Бесконечно малая при $x\to a$ — функция (или последовательность при $n\to\infty$) с пределом, равным нулю. Это классификация процесса, а не свойство отдельного числа.

  • Бесконечно большая при $x\to a$ — функция, модуль которой превосходит любой наперёд заданный порог $M$ при достаточном приближении $x$ к $a$; пишут $\lim f(x)=\infty$, с уточнением знака $+\infty$ или $-\infty$, если он определён.

  • Теорема о взаимной обратности: обратная величина к бесконечно малой (ненулевой рядом с точкой) — бесконечно большая, и наоборот, обратная к бесконечно большой — всегда бесконечно малая.

  • Условие «$\alpha(x)\ne0$ рядом с точкой» в этой теореме обязательно — без него $1/\alpha(x)$ может быть не определена сколь угодно близко к точке.

  • Сумма фиксированного конечного числа бесконечно малых — бесконечно малая; доказывается через неравенство треугольника и деление $\varepsilon$ поровну между слагаемыми.

  • Произведение бесконечно малой на функцию, ограниченную рядом с точкой, — бесконечно малая; ограниченность важнее наличия предела у второго множителя (пример $x\sin(1/x)$).

  • Произведение фиксированного конечного числа бесконечно малых — бесконечно малая; следует из предыдущего пункта и того, что бесконечно малая сама всегда ограничена рядом с точкой.

  • Все три свойства работают только для фиксированного числа слагаемых или множителей. Если число слагаемых растёт вместе с параметром предела, сумма может стремиться к любому числу — это главная ловушка урока и прямая модель числа слоёв в нейросети.

  • Затухающий и взрывающийся градиент — буквально бесконечно малая и бесконечно большая последовательность по параметру «число слоёв $L$»: множитель $\rho^L$ стремится к нулю при $\rho<1$ и к бесконечности при $\rho>1$, причём расхождение по $L$ нарастает экспоненциально быстро.

  • Выражения вида $\infty-\infty$, $\infty/\infty$, $0/0$ — неопределённости: сама по себе классификация «бесконечно малая» или «бесконечно большая» не решает вопрос о пределе комбинации таких величин, для этого нужны более тонкие инструменты сравнения.

Связь с другими темами курса

Что нужно было знать до этого урока

Весь аппарат этого урока опирается на понятие предела из уроков 178–180: определение предела последовательности через $\varepsilon$-$N$, теоремы о пределах суммы, произведения и частного (в частности, ровно оттуда взято, что сумма и произведение сходящихся последовательностей ведут себя предсказуемо — здесь мы разобрали частный, но важнейший случай, когда пределы равны нулю), и замечательные пределы, где уже встречались первые пары эквивалентных бесконечно малых вроде $\sin x$ и $x$, хотя формального языка для этого урок 180 ещё не вводил.

Что изучить дальше

Урок 182 «Сравнение бесконечно малых» — прямое продолжение последнего раздела этого урока: даст формальные определения о-малого, О-большого, эквивалентности $\alpha \sim \beta$ и таблицу стандартных эквивалентных бесконечно малых при $x\to0$, а также объяснит, почему предел отношения двух бесконечно малых не всегда существует (задание 26) и что делать в таких случаях. Дальше по курсу эта техника прорастёт в правило Лопиталя, формулу Тейлора с остаточным членом и асимптотический анализ сложности алгоритмов, где иерархия «что растёт быстрее» становится главным инструментом.

Где это нужно в жизни

💻 Программирование. Асимптотика алгоритмов ($O(n)$, $O(n\log n)$, $O(n^2)$) — это прямое применение сравнения бесконечно больших величин, формализованного в следующем уроке; переполнение (inf) и исчезновение значащих цифр (underflow до нуля) в числах с плавающей точкой — это то, что происходит с реальными бесконечно большими и бесконечно малыми в компьютерной арифметике с конечной точностью.

🤖 ML/AI. Затухающий и взрывающийся градиент в глубоких и рекуррентных сетях (урок 172 уже вводил спектральный радиус $\rho(W)$ как источник этой болезни — здесь дана строгая математическая рамка, в которой она формулируется); эпсилон-сглаживание в знаменателях batch normalization, softmax и Adam-оптимизаторе — прямое применение теоремы о взаимной обратности, не позволяющее знаменателю стать бесконечно малым.

📊 Data Science. Логарифмическое преобразование признаков с широким разбросом значений — способ приручить величины, которые ведут себя как бесконечно большие; анализ хвостов распределений и выбросов часто сводится к вопросу, с какой скоростью убывает плотность вероятности.

🔬 Наука. Асимптотические разложения в физике и инженерии (например, малые колебания, приближения при больших числах Рейнольдса) построены на точной формализации «величина мала по сравнению с другой» — это в точности материал следующего урока, а фундамент для него — определения из этого.

💰 Финансы. Долгосрочное дисконтирование денежных потоков — это поведение множителя $(1+r)^{-n}$ при $n\to\infty$, то есть бесконечно малой величины, а сложные проценты $(1+r)^n$ — зеркальной бесконечно большой; чувствительность к малым изменениям ставки $r$ работает по той же логике, что и чувствительность $\rho^L$ к малым изменениям $\rho$ в задании 24.

Интересные факты

  • Знаменитая фраза Джорджа Беркли про «призраки исчезнувших величин» (ghosts of departed quantities) из памфлета «Аналист» 1734 года целый век оставалась без строгого ответа — противоречие в основаниях анализа математики того времени не смущало, потому что результаты и так подтверждались на практике.

  • Определение бесконечно малой как переменной величины с пределом ноль, которое ты видишь в этом уроке, принадлежит Огюстену Луи Коши (1821 год) — до него полтора века математики оперировали интуитивным, логически шатким понятием фиксированного «сверхмалого числа».

  • В 1960-х годах логик Абрахам Робинсон показал, что интуицию Лейбница и Ньютона всё же можно сделать строгой — через так называемый нестандартный анализ и гипердействительные числа, где настоящие ненулевые бесконечно малые существуют формально корректно. Иронично, что спор, начатый в XVIII веке, спустя двести с лишним лет закончился не победой одной из сторон, а доказательством, что обе интуиции — переменная величина Коши и число Лейбница — можно строго обосновать, просто в разных математических системах.

  • Стандарт IEEE 754, по которому в компьютерах хранятся числа с плавающей точкой, буквально реализует бесконечно малые и бесконечно большие: у типа double есть наименьшее положительное представимое число порядка $4{,}9\cdot10^{-324}$, ниже которого всё округляется до нуля (underflow), и специальное значение inf для переполнения снизу или сверху (overflow). Именно в эти технические границы упирается затухающий и взрывающийся градиент на практике — не в абстрактную бесконечность, а в конкретные биты конкретного формата чисел.

Лайфхаки и полезные трюки

  1. Доказывая, что величина бесконечно малая, не вычисляй предел напрямую — зажимай неравенством. Если можешь оценить $|f(x)| \le g(x)$, где $g$ — заведомо бесконечно малая (или явно посчитанная), этого достаточно. Так были доказаны и $n!/n^n \to 0$, и $\sin(1/x)\cdot x \to 0$ — прямое вычисление в обоих случаях было бы куда сложнее.

  2. Ищи паттерн «ограниченная функция рядом с бесконечно малой». Любой множитель вида $\sin(\dots)$, $\cos(\dots)$, $(-1)^n$ или просто константа рядом со стремящейся к нулю величиной — сигнал, что всё произведение сразу можно классифицировать как бесконечно малое, не разбираясь, есть ли у самого осциллирующего множителя предел.

  3. Считая число слагаемых или множителей, спрашивай себя: оно фиксировано или растёт вместе с параметром? Если растёт — теоремы этого урока неприменимы напрямую, и стоит явно посчитать сумму или произведение хотя бы для нескольких значений параметра, прежде чем доверять интуиции (задания 15 и 29 — ровно такая проверка).

  4. В отладке нейросети отслеживай именно накопленное произведение множителей по глубине, а не отдельный слой. Логарифм превращает произведение в сумму: $\ln(\rho_1\rho_2\cdots\rho_L) = \sum_k \ln\rho_k$. Если эта сумма систематически растёт в минус — сеть на пути к затуханию, если в плюс — к взрыву, и это видно задолго до того, как градиенты реально станут нулём или inf.

  5. Знак $\ln\rho$ важнее самого $\rho$. $\rho<1$ ($\ln\rho<0$) гарантирует, что $\rho^L\to0$ при росте $L$, каким бы близким к единице ни было $\rho$ — вопрос только в том, за сколько шагов. $\rho>1$ — зеркально гарантирует рост без границ. Пограничный случай $\rho=1$ — единственный, где судьба решается уже не главным членом, а более тонкими эффектами.

  6. В коде для защиты от обеих крайностей используются готовые инструменты. torch.nn.utils.clip_grad_norm_ ограничивает эффект взрыва, обрезая норму градиента сверху; выбор инициализации весов (Xavier, He) целится в спектральный радиус, близкий к единице, чтобы избежать обеих крайностей с самого начала обучения:

import torch

loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()

Строгое определение бесконечно малой и бесконечно большой величины может показаться формальностью — но именно эта формальность разводит по разным полкам «предел равен нулю», «предела нет вовсе» и «предел не равен нулю», и без этого разведения любые дальнейшие рассуждения о скорости обучения, устойчивости алгоритма или точности вычислений держатся на честном слове, а не на доказательстве. Мы увидели, что даже сама формулировка свойств бесконечно малых таит ловушку — фиксированное число слагаемых работает, растущее ломает интуицию, — и эта ловушка оказалась не абстрактной придиркой, а точным описанием того, почему глубина нейросети имеет значение. Следующий шаг — научиться не просто говорить «стремится к нулю», а сравнивать, насколько быстрее одна величина стремится к своему пределу, чем другая. Это и есть тема урока 182.

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!