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

Схема Бернулли

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

Схема Бернулли 🎲

Ты обучил бинарный классификатор. На валидации он даёт accuracy $0{,}9$ — то есть ошибается примерно в одном случае из десяти. Теперь ты гоняешь его на тестовой выборке из $20$ объектов и получаешь $4$ ошибки вместо ожидаемых двух. Первая мысль: «модель поплыла, надо переобучать». Вторая мысль, если ты умеешь считать: а какова вообще вероятность увидеть $4$ ошибки из $20$ у модели, которая честно ошибается с вероятностью $0{,}1$? Может, это совершенно нормальный разброс, и переобучать нечего?

Ответ на этот вопрос даёт одна-единственная формула, придуманная больше трёхсот лет назад — формула Бернулли. И она устроена так, что покрывает чудовищно широкий класс задач: сколько конверсий ждать в A/B-тесте, сколько нейронов выключит dropout на конкретном форвард-проходе, сколько уникальных объектов останется в бутстрэп-выборке, сколько битых пакетов придёт по сети, сколько раз подряд может «повезти» жадному алгоритму. Всё это — одна и та же математическая конструкция: повторяем независимый опыт $n$ раз, у каждого опыта ровно два исхода, вероятность успеха всё время одна и та же.

Схема Бернулли — это, пожалуй, самый прикладной кусок теории вероятностей из всех, что мы прошли. Условная вероятность и формула Байеса дали тебе язык, чтобы рассуждать о том, как знание меняет вероятность. Схема Бернулли даёт инструмент, чтобы считать конкретные числа для повторяющихся экспериментов. А в машинном обучении почти всё повторяющееся: каждый объект в батче, каждый нейрон в слое, каждый пользователь в тесте, каждая эпоха обучения.

Давай разберёмся, как эта схема устроена, где она честно работает, а где ломается (и это важнее, чем сама формула), как считать «хотя бы один» и «не более $k$» без адского перебора, и что делать, когда $n$ становится настолько большим, что факториалы перестают влезать в память.

🎯 Ты узнаешь:

  • Четыре условия схемы Бернулли — и как распознать задачу, где хотя бы одно из них нарушено
  • Формулу Бернулли $P_n(k) = C_n^k p^k q^{n-k}$ и её честный вывод из теорем сложения и умножения
  • Как найти наивероятнейшее число успехов по формуле $np - q \le k_0 \le np + p$
  • Как быстро считать «хотя бы один», «не более $k$» и «от $k_1$ до $k_2$» — и почему прямой перебор часто не нужен
  • Приближения Пуассона и Муавра-Лапласа: что делать, когда $n$ огромное, а $C_n^k$ уже не посчитать
  • Почему в бутстрэп-выборке ровно $63{,}2\%$ уникальных объектов — и откуда там взялось число $e$

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

Всё началось с азартных игр и швейцарской семьи, в которой математиков было больше, чем в иных университетах. Якоб Бернулли (1655-1705), старший из знаменитого клана, потратил больше двадцати лет на книгу, которую так и не успел издать при жизни. Она вышла в 1713 году, через восемь лет после его смерти, под названием «Ars Conjectandi» — «Искусство предположений». Именно там, в четвёртой части, впервые появилась и схема независимых испытаний, и формула, которая теперь носит его имя, и первая в истории строгая формулировка закона больших чисел.

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

Следующий шаг сделал Абрахам де Муавр — французский гугенот, бежавший в Лондон после отмены Нантского эдикта и подрабатывавший расчётами для игроков и страховщиков в кофейне Слотера. В 1733 году он опубликовал работу, где показал: при больших $n$ громоздкая сумма биномиальных вероятностей отлично приближается гладкой кривой $e^{-x^2/2}$. Так на свет появилось нормальное распределение — не как самостоятельный объект, а как приближение к схеме Бернулли. Позже Пьер-Симон Лаплас довёл результат до общего случая $p \ne \tfrac12$, и сегодня мы говорим о теоремах Муавра-Лапласа. Ещё через сто лет Симеон Дени Пуассон (1837) нашёл второе приближение — для противоположного случая, когда $p$ крошечное, а $n$ огромное, и событие редкое.

Мостик в сегодня получается почти неприличный по прямоте. Когда в 2014 году Хинтон с соавторами предложили dropout — выключать случайные нейроны на каждом шаге обучения, — они буквально описали схему Бернулли: каждый нейрон независимо выключается с вероятностью $p$. В коде PyTorch это так и называется — torch.bernoulli. Когда Брэдли Эфрон в 1979 году придумал бутстрэп, ключевая цифра «$63{,}2\%$ уникальных объектов» тоже вывалилась прямо из схемы Бернулли. Триста лет спустя урна с камешками Якоба Бернулли всё ещё крутится — просто теперь на видеокартах.


Четыре условия: когда схема Бернулли вообще применима

Интуиция

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

Теперь сломай конвейер по-разному — и увидишь, каких именно свойств не хватает.

  • Станок постепенно разбалтывается, и брака к вечеру становится больше — вероятность не постоянна.
  • Мастер, увидев брак, останавливает линию и подкручивает станок — опыты зависимы.
  • Кроме «годная» и «брак» появилась категория «на доработку» — исходов больше двух.
  • Ты работаешь не «ровно 100 деталей», а «пока не найдёшь третий брак» — число опытов не фиксировано.

Каждый из этих четырёх сломов выбивает формулу Бернулли из игры. И вот что важно понимать: формулу-то ты всё равно применишь (руки сами наберут $C_n^k p^k q^{n-k}$), а вот число получится неправильное. Причём внешне правдоподобное. Поэтому проверка условий — не бюрократия, а главная защита от красивого вранья.

Определение: Схемой Бернулли (схемой независимых испытаний) называется последовательность из $n$ испытаний, удовлетворяющая четырём условиям:

  1. Число испытаний $n$ фиксировано заранее и не зависит от их результатов.
  2. Каждое испытание имеет ровно два исхода: «успех» ($A$) и «неудача» ($\bar A$).
  3. Вероятность успеха $P(A) = p$ одна и та же во всех испытаниях; $q = 1 - p$ — вероятность неудачи.
  4. Испытания независимы: результат любого из них не влияет на вероятности остальных.

Разберём каждое условие отдельно — с примером, где оно выполнено, и примером, где сломано.

Условие 1: число испытаний фиксировано

Работает: «Прогоняем модель на тестовой выборке из $n = 500$ объектов». Мы решили про $500$ заранее, и никакой результат это число не меняет.

Ломается: «Гоняем модель, пока не встретим третью ошибку — сколько объектов успеем обработать?» Здесь $n$ само стало случайным. Это уже не схема Бернулли, а отрицательное биномиальное распределение (частный случай при одной ошибке — геометрическое). Формула Бернулли на такой вопрос не отвечает в принципе: она умеет считать «сколько успехов при заданном $n$», а не «какое $n$ при заданном числе успехов».

Как отличить на слух: если в условии есть слова «пока не», «до первого», «сколько попыток понадобится» — число испытаний плавает, и формула Бернулли не про это.

Условие 2: ровно два исхода

Работает: бинарная классификация (верно / ошибка), клик по баннеру (кликнул / не кликнул), нейрон в dropout (оставлен / выключен).

Ломается: трёхклассовая классификация «кошка / собака / птица» — три исхода, и вопрос «какова вероятность, что из $10$ картинок ровно $3$ кошки и ровно $2$ собаки» решается полиномиальным распределением, а не формулой Бернулли.

Спасительный приём: почти любую многоисходную задачу можно схлопнуть в двухисходную, если тебя интересует только один класс. Вопрос «сколько кошек из $10$» — это уже схема Бернулли с успехом «кошка» и неудачей «не кошка», где $p = P(\text{кошка})$. А вот вопрос про кошек и собак одновременно — уже нет.

Условие 3: вероятность успеха постоянна

Это самое коварное условие: оно ломается тихо.

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

Ломается:

  • Вытаскиваем $5$ карт из колоды без возвращения: после каждой карты состав колоды меняется, $p$ плывёт. Здесь нужна гипергеометрическая схема.
  • Модель дообучается онлайн прямо во время теста — её accuracy растёт от объекта к объекту, значит $p$ не постоянна.
  • Тестовая выборка склеена из двух разных доменов: на «лёгких» объектах модель ошибается с $p = 0{,}05$, на «трудных» — с $p = 0{,}3$. Средняя вероятность есть, но единой $p$ нет, и разброс числа ошибок будет больше предсказанного формулой Бернулли (это явление называют сверхдисперсией, overdispersion).

Полезное послабление: если выборка без возвращения, но генеральная совокупность огромна по сравнению с выборкой (обычно берут порог $n \le 0{,}05 N$), то $p$ меняется настолько незаметно, что схемой Бернулли пользоваться можно. Опрашивая $1000$ человек из города на миллион, ты спокойно считаешь по Бернулли — хотя формально это выбор без возвращения.

Условие 4: независимость

Работает: dropout-маски для разных нейронов, независимые пользователи в A/B-тесте, отдельные броски монеты.

Ломается:

  • Объекты в тестовой выборке — кадры из одного видео. Ошиблась модель на кадре $37$ — почти наверняка ошибётся и на кадре $38$. Ошибки слипаются в серии, и настоящий разброс сильно больше бернуллиевского.
  • Пользователи в A/B-тесте — участники одного чата, которые обсуждают между собой новую кнопку.
  • В одном и том же тексте одно и то же редкое слово встречается несколько раз (эффект «burstiness» в языковых данных).

Слипание ошибок — самая частая причина, по которой «доверительный интервал по Бернулли» оказывается вдвое уже реального. Если объекты сгруппированы (кадры, сессии, пользователи), считать надо по группам, а не по объектам.

Примеры с разбором

Пример 1 (простой): применима ли схема Бернулли?

Бросаем игральный кубик $8$ раз. Успех — выпадение шестёрки. Схема Бернулли?

Решение. Разберём по шагам:

Шаг 1. Число испытаний: $n = 8$, задано жёстко. ✅

Шаг 2. Исходов формально шесть, но нас интересует только «шестёрка / не шестёрка» — схлопываем в два. ✅

Шаг 3. Вероятность $p = 1/6$ одинакова на каждом броске: кубик не изнашивается. ✅

Шаг 4. Броски независимы: кубик не помнит прошлого. ✅

Ответ: да, схема Бернулли с $n = 8$, $p = 1/6$, $q = 5/6$.


Пример 2 (средний): где ломается условие?

В группе $25$ студентов, из них $10$ отличников. Выбираем наугад $4$ студентов (разных). Какова вероятность, что ровно $2$ из них отличники? Можно ли применить формулу Бернулли с $p = 10/25 = 0{,}4$?

Решение.

Шаг 1. Проверяем условие постоянства $p$. Первый выбранный студент — отличник с вероятностью $10/25 = 0{,}4$. Но если он оказался отличником, то для второго вероятность уже $9/24 = 0{,}375$, а если нет — $10/24 \approx 0{,}417$. Вероятность меняется. ❌

Шаг 2. Проверяем независимость: результат первого выбора напрямую влияет на второй. ❌

Шаг 3. Значит, схема Бернулли неприменима. Правильный инструмент — гипергеометрическая формула через классическое определение вероятности:

$$P = \frac{C_{10}^2 \cdot C_{15}^2}{C_{25}^4} = \frac{45 \cdot 105}{12650} = \frac{4725}{12650} \approx 0{,}3735$$

Шаг 4. Сравним с тем, что дала бы (неправильно применённая) формула Бернулли:

$$P_4(2) = C_4^2 \cdot 0{,}4^2 \cdot 0{,}6^2 = 6 \cdot 0{,}16 \cdot 0{,}36 = 0{,}3456$$

Ответ: схема Бернулли неприменима; верный ответ $\approx 0{,}3735$, а формула Бернулли дала бы $0{,}3456$ — ошибка почти $8\%$ относительно правильного значения.

Обрати внимание, насколько правдоподобно выглядит неверное число $0{,}3456$. Именно поэтому проверять условия надо до подстановки в формулу, а не после того, как ответ «выглядит нормально».


Пример 3 (сложный): скрытая зависимость в ML-задаче

Есть детектор объектов с точностью $0{,}92$ на кадр. Мы прогнали его по $30$-секундному видео с частотой $30$ FPS, то есть по $900$ кадрам, и получили $130$ ошибок. Формула Бернулли говорит, что ожидаемое число ошибок $900 \cdot 0{,}08 = 72$, а стандартное отклонение $\sqrt{900 \cdot 0{,}08 \cdot 0{,}92} \approx 8{,}1$. Отклонение $130 - 72 = 58$ — это больше семи стандартных отклонений! Модель сломалась?

Решение.

Шаг 1. Формально: да, $58 / 8{,}1 \approx 7{,}2$ сигмы. Вероятность такого отклонения при честной схеме Бернулли — порядка $10^{-13}$, то есть «никогда».

Шаг 2. Но прежде чем бить тревогу, проверим четвёртое условие. Соседние кадры видео отличаются на сотые доли секунды: если детектор потерял объект на кадре $200$, он с огромной вероятностью потеряет его и на кадрах $201$, $202$, $203$. Ошибки не независимы — они идут сериями.

Шаг 3. Прикинем масштаб. Если ошибки собираются в серии примерно по $10$ кадров (треть секунды потери трекинга), то независимых «событий» не $900$, а около $90$. Тогда эффективное стандартное отклонение растёт примерно в $\sqrt{10} \approx 3{,}2$ раза: $8{,}1 \cdot 3{,}2 \approx 26$.

Шаг 4. Пересчитаем в новых сигмах: $58 / 26 \approx 2{,}2$. Это уже не «невозможно», а «редковато, но бывает».

Ответ: формально $7{,}2\sigma$, но условие независимости нарушено; с поправкой на слипание ошибок отклонение около $2{,}2\sigma$ — модель, скорее всего, в порядке, а вот метрика «по кадрам» некорректна. Считать надо по независимым видео, а не по кадрам.

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

Половина всех неверных выводов из данных в ML рождается именно здесь — не в формуле, а в молчаливом предположении «ну это же независимые одинаковые испытания». Доверительные интервалы для accuracy, размеры выборок для A/B-тестов, оценки «сколько данных нужно разметить» — всё это строится на схеме Бернулли. Если объекты сгруппированы или распределение неоднородно, интервал получается слишком узким, и ты уверенно докладываешь начальству о выигрыше, которого нет. Проверка четырёх условий занимает тридцать секунд и спасает недели работы.


Формула Бернулли: вывод и смысл

Интуиция

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

Пусть $n = 4$ испытания, вероятность успеха $p$, неудачи $q = 1 - p$. Хотим вероятность того, что успехов ровно $k = 2$.

Шаг первый: одна конкретная последовательность. Пусть успехи выпали в первом и втором испытании, а в третьем и четвёртом — неудачи. Запишем это как УУНН. Испытания независимы, значит вероятность такой цепочки — произведение вероятностей:

$$P(\text{УУНН}) = p \cdot p \cdot q \cdot q = p^2 q^2$$

Шаг второй: а если успехи в других местах? Возьмём УНУН:

$$P(\text{УНУН}) = p \cdot q \cdot p \cdot q = p^2 q^2$$

То же самое! И это ключевое наблюдение: вероятность цепочки не зависит от того, где стоят успехи, а только от того, сколько их. Умножение коммутативно — переставляй множители как хочешь, произведение одно и то же. В любой последовательности из $4$ испытаний с ровно двумя успехами будет ровно два множителя $p$ и два множителя $q$, то есть вероятность $p^2 q^2$.

Шаг третий: сколько таких цепочек? Нужно выбрать, какие $2$ позиции из $4$ занимают успехи. Это ровно число сочетаний $C_4^2 = 6$. Вот они все: УУНН, УНУН, УННУ, НУУН, НУНУ, ННУУ.

Шаг четвёртый: складываем. Все эти цепочки — попарно несовместные события (последовательность не может быть одновременно УУНН и УНУН). По теореме сложения вероятность объединения равна сумме, а слагаемых $6$ штук, и все они одинаковы:

$$P_4(2) = \underbrace{p^2q^2 + p^2q^2 + \dots + p^2q^2}_{6 \text{ раз}} = 6 \cdot p^2 q^2 = C_4^2 p^2 q^2$$

Общий случай доказывается дословно так же: любая цепочка с $k$ успехами и $n-k$ неудачами имеет вероятность $p^k q^{n-k}$, а число таких цепочек равно числу способов расставить $k$ успехов по $n$ позициям, то есть $C_n^k$.

Определение (формула Бернулли): Если проводится $n$ независимых испытаний, в каждом из которых событие $A$ наступает с вероятностью $p$ (и не наступает с вероятностью $q = 1 - p$), то вероятность того, что $A$ наступит ровно $k$ раз, равна

$$P_n(k) = C_n^k \, p^k q^{n-k}, \qquad C_n^k = \frac{n!}{k!\,(n-k)!}, \qquad k = 0, 1, \dots, n$$

Формула читается справа налево буквально по частям:

  • $p^k$ — «$k$ раз повезло»,
  • $q^{n-k}$ — «$n-k$ раз не повезло»,
  • $C_n^k$ — «а повезти могло в разных местах, и вот сколькими способами».

Полезная проверка на вменяемость. Сумма всех вероятностей обязана давать единицу — ведь успехов точно будет какое-то число от $0$ до $n$:

$$\sum_{k=0}^{n} C_n^k p^k q^{n-k} = (p + q)^n = 1^n = 1$$

Это же бином Ньютона! Отсюда, кстати, и название «биномиальное распределение», с которым ты плотно познакомишься в уроке 240: формула Бернулли — это просто отдельное слагаемое разложения $(p+q)^n$. Если при решении задачи ты посчитал все $P_n(k)$ и сумма не сошлась в единицу — где-то арифметическая ошибка, и это отличный способ себя поймать.

Примеры с разбором

Пример 4 (простой): ровно 4 орла из 6 бросков

Монету бросают $6$ раз. Найти вероятность того, что орёл выпадет ровно $4$ раза.

Решение.

Шаг 1. Условия схемы Бернулли выполнены: $n = 6$, $p = 0{,}5$, $q = 0{,}5$, $k = 4$.

Шаг 2. Считаем сочетания:

$$C_6^4 = \frac{6!}{4!\,2!} = \frac{6 \cdot 5}{2} = 15$$

Шаг 3. Подставляем в формулу:

$$P_6(4) = 15 \cdot 0{,}5^4 \cdot 0{,}5^2 = 15 \cdot 0{,}5^6 = \frac{15}{64}$$

Шаг 4. Переводим в десятичную дробь: $15/64 = 0{,}234375$.

Проверим наш ответ. Всего равновероятных последовательностей из орлов и решек: $2^6 = 64$. Из них ровно с четырьмя орлами — $C_6^4 = 15$. Классическое определение вероятности даёт те же $15/64$ ✅

Ответ: $P_6(4) = \dfrac{15}{64} \approx 0{,}2344$


Пример 5 (средний): сколько ошибок сделает классификатор

Бинарный классификатор ошибается с вероятностью $0{,}15$ на каждом объекте (объекты независимы и однородны). На тестовой выборке из $10$ объектов — какова вероятность ровно двух ошибок?

Решение.

Шаг 1. Успех тут — это... ошибка. Не пугайся такой терминологии: «успехом» в схеме Бернулли называют то событие, которое считают, а не то, которое хорошее. Итак: $n = 10$, $p = 0{,}15$, $q = 0{,}85$, $k = 2$.

Шаг 2. Сочетания: $C_{10}^2 = \dfrac{10 \cdot 9}{2} = 45$.

Шаг 3. Степени: $p^2 = 0{,}15^2 = 0{,}0225$; $q^8 = 0{,}85^8 \approx 0{,}27249$.

Шаг 4. Собираем:

$$P_{10}(2) = 45 \cdot 0{,}0225 \cdot 0{,}27249 = 1{,}0125 \cdot 0{,}27249 \approx 0{,}2759$$

Шаг 5. Осмыслим. Ожидаемое число ошибок $np = 10 \cdot 0{,}15 = 1{,}5$. Значение $k = 2$ — почти в самой середине распределения, и вероятность вышла солидная, около $28\%$. Всё сходится.

Ответ: $P_{10}(2) \approx 0{,}2759$, то есть примерно $27{,}6\%$


Пример 6 (сложный): A/B-тест и «редкая» конверсия

Ты показал новую версию лендинга $50$ пользователям. По исторической статистике конверсия составляет $12\%$. Какова вероятность увидеть ровно $6$ конверсий? А почему одного этого числа мало, чтобы делать выводы?

Решение.

Шаг 1. $n = 50$, $p = 0{,}12$, $q = 0{,}88$, $k = 6$. Пользователи независимы (разные люди, разные сессии) — схема Бернулли работает.

Шаг 2. Сочетания: $C_{50}^6 = \dfrac{50 \cdot 49 \cdot 48 \cdot 47 \cdot 46 \cdot 45}{720}$. Считаем числитель по шагам: $50 \cdot 49 = 2450$; $2450 \cdot 48 = 117\,600$; $117\,600 \cdot 47 = 5\,527\,200$; $5\,527\,200 \cdot 46 = 254\,251\,200$; $254\,251\,200 \cdot 45 = 11\,441\,304\,000$. Делим на $720$: $C_{50}^6 = 15\,890\,700$.

Шаг 3. Степени: $0{,}12^6 \approx 2{,}986 \cdot 10^{-6}$; $0{,}88^{44} \approx 0{,}003607$.

Шаг 4. Перемножаем:

$$P_{50}(6) \approx 15\,890\,700 \cdot 2{,}986 \cdot 10^{-6} \cdot 0{,}003607 \approx 0{,}1712$$

Шаг 5. Теперь главное — интерпретация. Вероятность ровно $17\%$ выглядит «маленькой», и новичок делает вывод: «результат нетипичный, лендинг работает иначе». Это ошибка! Ожидаемое число конверсий $np = 6$ — то есть $k = 6$ это самое вероятное значение, и всё равно у него всего $17\%$. Просто вероятность размазана по многим соседним значениям: $5$, $6$, $7$, $8$ тоже вполне обычны. Вероятность ровно какого-то значения при большом $n$ всегда мала — судить надо по интервалам, а не по точкам.

Ответ: $P_{50}(6) \approx 0{,}1712$; это самый вероятный исход, и малость числа не означает аномалии.

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

Формула Бернулли — это фундамент, на котором стоит вся оценка качества моделей. Когда sklearn показывает тебе accuracy $0{,}91$ на выборке из $200$ объектов, за этой цифрой стоит бернуллиевский эксперимент: $200$ независимых испытаний с неизвестной $p$. Вопрос «насколько можно доверять этой цифре» — это вопрос о том, как широко разбросано биномиальное распределение вокруг $np$. Все доверительные интервалы для доли (Вальда, Уилсона, Клоппера-Пирсона) — прямые потомки формулы Бернулли. Тот же фундамент под расчётом размера выборки для A/B-теста: «сколько пользователей нужно, чтобы заметить прирост конверсии на $1$ п.п.» — это вопрос о том, когда два биномиальных распределения перестают заметно перекрываться.


Наивероятнейшее число успехов

Интуиция

Посмотри на формулу $P_n(k)$ как на функцию от $k$. При $k = 0$ она обычно мала (все $n$ раз не повезло — редкость), при $k = n$ тоже мала (повезло абсолютно всегда — ещё большая редкость), а где-то посередине — максимум. Вопрос: где именно?

Ответ подсказывает здравый смысл: около $np$. Если ты бросаешь монету $100$ раз, самое вероятное число орлов — $50$. Если гоняешь классификатор с частотой ошибок $0{,}1$ на $200$ объектах, самое вероятное число ошибок — $20$. Но $np$ обычно не целое (при $n = 25$, $p = 0{,}2$ получаем $np = 5$ — повезло, а при $n = 24$ уже $4{,}8$), а число успехов целое. Значит нужна аккуратная формулировка.

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

$$\frac{P_n(k)}{P_n(k-1)} = \frac{C_n^k p^k q^{n-k}}{C_n^{k-1} p^{k-1} q^{n-k+1}} = \frac{n-k+1}{k} \cdot \frac{p}{q}$$

Вероятность растёт, пока это отношение больше единицы:

$$\frac{(n-k+1)p}{kq} > 1 \iff (n-k+1)p > kq \iff np + p > k(p + q) = k \iff k < np + p$$

А убывает, когда $k > np + p$. Значит максимум достигается при наибольшем целом $k$, для которого $k \le np + p$. Отсюда классическая двойная оценка.

Определение: Наивероятнейшим числом успехов $k_0$ в схеме Бернулли называется значение $k$, при котором $P_n(k)$ максимальна. Оно удовлетворяет двойному неравенству

$$np - q \le k_0 \le np + p$$

Длина этого отрезка равна $(np + p) - (np - q) = p + q = 1$, поэтому целое $k_0$ определено однозначно — кроме случая, когда $np + p = (n+1)p$ целое: тогда концы отрезка целые и наивероятнейших чисел два: $k_0 = np - q$ и $k_0 = np + p$, и вероятности у них совпадают.

Практический рецепт в две строки:

  1. Посчитай $(n+1)p$.
  2. Если оно не целое — $k_0 = \lfloor (n+1)p \rfloor$ (целая часть). Если целое — их два: $(n+1)p$ и $(n+1)p - 1$.

Примеры с разбором

Пример 7 (простой): dropout на слое из 512 нейронов

Слой из $512$ нейронов, dropout с вероятностью выключения $p = 0{,}3$. Какое число выключенных нейронов наиболее вероятно?

Решение.

Шаг 1. $n = 512$, $p = 0{,}3$. Считаем $(n+1)p = 513 \cdot 0{,}3 = 153{,}9$.

Шаг 2. Число не целое, берём целую часть: $k_0 = 153$.

Шаг 3. Проверим двойным неравенством: $np - q = 512 \cdot 0{,}3 - 0{,}7 = 153{,}6 - 0{,}7 = 152{,}9$ и $np + p = 153{,}6 + 0{,}3 = 153{,}9$. Отрезок $[152{,}9;\ 153{,}9]$ содержит единственное целое $153$ ✅

Ответ: $k_0 = 153$ нейрона (при том что «в среднем» выключается $np = 153{,}6$).


Пример 8 (средний): случай двух максимумов

Модель ошибается с вероятностью $p = 0{,}3$. Прогоняем её на $9$ объектах. Найти наивероятнейшее число ошибок и его вероятность.

Решение.

Шаг 1. $(n+1)p = 10 \cdot 0{,}3 = 3$ — целое число. Значит наивероятнейших значений два: $k_0 = 3$ и $k_0 = 2$.

Шаг 2. Проверим прямым счётом. Для $k = 2$:

$$P_9(2) = C_9^2 \cdot 0{,}3^2 \cdot 0{,}7^7 = 36 \cdot 0{,}09 \cdot 0{,}0823543 \approx 0{,}2668$$

Шаг 3. Для $k = 3$:

$$P_9(3) = C_9^3 \cdot 0{,}3^3 \cdot 0{,}7^6 = 84 \cdot 0{,}027 \cdot 0{,}117649 \approx 0{,}2668$$

Вероятности совпали до четвёртого знака — и это не совпадение, а ровно тот вырожденный случай, который предсказывает формула.

Шаг 4. Для контраста посмотрим на соседа: $P_9(4) = C_9^4 \cdot 0{,}3^4 \cdot 0{,}7^5 = 126 \cdot 0{,}0081 \cdot 0{,}16807 \approx 0{,}1715$ — заметно меньше.

Ответ: $k_0 = 2$ и $k_0 = 3$, обе с вероятностью $\approx 0{,}2668$.


Пример 9 (сложный): наивероятнейшее и его вероятность

В обучающем батче $25$ объектов, каждый принадлежит редкому классу с вероятностью $0{,}2$. Найти наивероятнейшее число объектов редкого класса в батче и вероятность этого числа. Насколько «острый» получается максимум?

Решение.

Шаг 1. $(n+1)p = 26 \cdot 0{,}2 = 5{,}2$ — не целое, значит $k_0 = 5$.

Шаг 2. Считаем $C_{25}^5 = \dfrac{25 \cdot 24 \cdot 23 \cdot 22 \cdot 21}{120}$. Числитель: $25 \cdot 24 = 600$; $600 \cdot 23 = 13\,800$; $13\,800 \cdot 22 = 303\,600$; $303\,600 \cdot 21 = 6\,375\,600$. Делим на $120$: $C_{25}^5 = 53\,130$.

Шаг 3. Степени: $0{,}2^5 = 0{,}00032$; $0{,}8^{20} \approx 0{,}0115292$.

Шаг 4. Перемножаем:

$$P_{25}(5) = 53\,130 \cdot 0{,}00032 \cdot 0{,}0115292 \approx 17{,}0016 \cdot 0{,}0115292 \approx 0{,}1960$$

Шаг 5. Оценим «остроту». Максимальная вероятность — всего $19{,}6\%$. То есть даже самый вероятный исход случается лишь в одном батче из пяти. Это типичная картина: чем больше $n$, тем ниже пик, потому что суммарная единица размазывается по всё большему числу значений. Приблизительно высота пика падает как $1/\sqrt{npq}$ — этот факт мы увидим строго в локальной теореме Муавра-Лапласа чуть ниже.

Ответ: $k_0 = 5$, $P_{25}(5) \approx 0{,}1960$.

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

Наивероятнейшее число — это мода биномиального распределения, и оно почти всегда близко к среднему $np$, но не всегда совпадает с ним. В прикладных задачах это ориентир «чего ждать по умолчанию»: сколько нейронов выключит dropout, сколько объектов редкого класса попадёт в батч (и не окажется ли батч пустым по редкому классу — больная тема при обучении на несбалансированных данных), сколько конверсий увидеть в A/B-тесте. Ещё важнее вывод из примера 9: высота пика падает с ростом $n$. Значит «точное попадание в ожидаемое значение» — это не норма, а редкость, и оценивать наблюдения надо интервалами, а не точками.


Составные события: «хотя бы один», «не более k», «от k₁ до k₂»

Интуиция

Формула Бернулли отвечает на вопрос «ровно $k$». Но в жизни почти никогда не спрашивают «ровно». Спрашивают: «хотя бы один сервер упадёт?», «не более трёх ошибок?», «конверсий будет от $8$ до $15$?». Все такие события — это объединения элементарных случаев «ровно $k$», а они попарно несовместны (число успехов не может быть одновременно $3$ и $5$). Значит вероятности просто складываются.

$$P(k_1 \le k \le k_2) = \sum_{k=k_1}^{k_2} C_n^k p^k q^{n-k}$$

Это честно, но иногда мучительно: при $n = 100$ и вопросе «не менее $10$» пришлось бы сложить $91$ слагаемое. Поэтому есть три приёма, которые экономят кучу времени.

Приём 1: переход к противоположному событию. Классика жанра — «хотя бы один». Событие «хотя бы один успех» противоположно событию «ни одного успеха», а у последнего вероятность считается в одну строчку:

$$P(k \ge 1) = 1 - P_n(0) = 1 - q^n$$

Это самая часто используемая формула во всём разделе. Запомни её намертво.

Приём 2: считать с той стороны, где слагаемых меньше. «Не менее $8$ успехов из $10$» — это $P_{10}(8) + P_{10}(9) + P_{10}(10)$, три слагаемых. А «не более $7$» проще посчитать как $1$ минус эти же три, чем складывать восемь.

Приём 3: рекуррентный пересчёт. Мы уже нашли отношение соседних членов:

$$P_n(k) = P_n(k-1) \cdot \frac{n-k+1}{k} \cdot \frac{p}{q}$$

Стартуешь с $P_n(0) = q^n$ и дальше идёшь умножениями, без единого факториала. Так считают биномиальные суммы в реальном коде — это и быстрее, и не переполняется.

Определение: Основные составные события в схеме Бернулли:

  • Хотя бы один успех: $P(k \ge 1) = 1 - q^n$
  • Хотя бы одна неудача: $P(k \le n-1) = 1 - p^n$
  • Не более $m$ успехов: $P(k \le m) = \sum_{k=0}^{m} C_n^k p^k q^{n-k}$
  • Не менее $m$ успехов: $P(k \ge m) = \sum_{k=m}^{n} C_n^k p^k q^{n-k} = 1 - \sum_{k=0}^{m-1} C_n^k p^k q^{n-k}$
  • От $k_1$ до $k_2$ включительно: $P(k_1 \le k \le k_2) = \sum_{k=k_1}^{k_2} C_n^k p^k q^{n-k}$

Примеры с разбором

Пример 10 (простой): хотя бы одно падение

Сервис делает $20$ независимых запросов к внешнему API, каждый падает с вероятностью $0{,}05$. Какова вероятность, что хотя бы один запрос упадёт?

Решение.

Шаг 1. Прямой путь — сложить $P_{20}(1) + P_{20}(2) + \dots + P_{20}(20)$, то есть двадцать слагаемых. Не будем.

Шаг 2. Переходим к противоположному: «хотя бы один упал» ⟷ «не упал ни один».

$$P(k \ge 1) = 1 - q^{20} = 1 - 0{,}95^{20}$$

Шаг 3. Считаем $0{,}95^{20}$. Удобно через логарифм или последовательным возведением: $0{,}95^2 = 0{,}9025$; $0{,}95^4 = 0{,}9025^2 \approx 0{,}81451$; $0{,}95^8 \approx 0{,}66342$; $0{,}95^{16} \approx 0{,}44013$; $0{,}95^{20} = 0{,}95^{16} \cdot 0{,}95^4 \approx 0{,}44013 \cdot 0{,}81451 \approx 0{,}35849$.

Шаг 4. Итого: $P = 1 - 0{,}35849 \approx 0{,}6415$.

Ответ: $\approx 0{,}6415$, то есть почти в $2$ случаях из $3$ хотя бы один запрос упадёт.

Обрати внимание на контринтуитивность: каждый отдельный запрос надёжен на $95\%$, а вся цепочка из двадцати — уже нет. Это фундаментальная беда микросервисных архитектур и длинных ML-пайплайнов: надёжности перемножаются, а не усредняются.


Пример 11 (средний): не более двух ошибок

Модель ошибается с вероятностью $0{,}1$. На тестовой выборке из $12$ объектов — какова вероятность, что ошибок будет не более двух?

Решение.

Шаг 1. Нужно $P(k \le 2) = P_{12}(0) + P_{12}(1) + P_{12}(2)$. Три слагаемых — считаем в лоб.

Шаг 2. $P_{12}(0) = 0{,}9^{12}$. Считаем: $0{,}9^2 = 0{,}81$; $0{,}9^4 = 0{,}6561$; $0{,}9^8 \approx 0{,}43047$; $0{,}9^{12} = 0{,}9^8 \cdot 0{,}9^4 \approx 0{,}43047 \cdot 0{,}6561 \approx 0{,}28243$.

Шаг 3. $P_{12}(1) = C_{12}^1 \cdot 0{,}1 \cdot 0{,}9^{11} = 12 \cdot 0{,}1 \cdot 0{,}31381 \approx 0{,}37657$. (Здесь $0{,}9^{11} = 0{,}9^{12}/0{,}9 \approx 0{,}31381$.)

Шаг 4. $P_{12}(2) = C_{12}^2 \cdot 0{,}01 \cdot 0{,}9^{10} = 66 \cdot 0{,}01 \cdot 0{,}34868 \approx 0{,}23013$.

Шаг 5. Складываем: $0{,}28243 + 0{,}37657 + 0{,}23013 \approx 0{,}8891$.

Проверим наш ответ. Ожидаемое число ошибок $np = 1{,}2$. Условие «не более $2$» покрывает ожидание с запасом, поэтому вероятность близка к $0{,}9$ — правдоподобно ✅

Ответ: $\approx 0{,}8891$


Пример 12 (сложный): сколько прогонов нужно, чтобы «поймать» редкий баг

В пайплайне есть плавающий баг, который срабатывает в среднем в одном запуске из десяти ($p = 0{,}1$). Сколько раз нужно запустить пайплайн, чтобы поймать баг хотя бы один раз с вероятностью не менее $0{,}95$?

Решение.

Шаг 1. Формализуем: нужно найти наименьшее $n$, при котором $1 - 0{,}9^n \ge 0{,}95$.

Шаг 2. Переносим: $0{,}9^n \le 0{,}05$.

Шаг 3. Логарифмируем (основание любое, возьмём натуральный логарифм). Осторожно: $\ln 0{,}9 < 0$, поэтому знак неравенства при делении переворачивается:

$$n \ln 0{,}9 \le \ln 0{,}05 \implies n \ge \frac{\ln 0{,}05}{\ln 0{,}9}$$

Шаг 4. Считаем: $\ln 0{,}05 \approx -2{,}9957$, $\ln 0{,}9 \approx -0{,}10536$. Отношение: $n \ge 28{,}43$.

Шаг 5. Так как $n$ целое — берём $n = 29$.

Проверим наш ответ. При $n = 28$: $0{,}9^{28} \approx 0{,}0523$, значит $P \approx 0{,}9477 < 0{,}95$ — не хватает. При $n = 29$: $0{,}9^{29} \approx 0{,}0471$, значит $P \approx 0{,}9529 \ge 0{,}95$ ✅

Ответ: $n = 29$ запусков.

Универсальная формула на будущее: чтобы поймать событие с вероятностью $p$ хотя бы раз с надёжностью $\gamma$, нужно

$$n \ge \frac{\ln(1-\gamma)}{\ln(1-p)}$$

Именно так считают, сколько прогонов фаззера нужно для покрытия редкой ветки кода, сколько раз перезапускать обучение с разными сидами, чтобы не пропустить «удачную» инициализацию, и сколько сэмплов брать в Monte Carlo.

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

«Хотя бы один» — это шаблон, под который подпадает половина инженерных вопросов о надёжности. Вероятность, что хотя бы один из $N$ сервисов упадёт; что хотя бы один из $N$ гиперпараметрических запусков сойдётся; что хотя бы один объект персональных данных утечёт. И правило $1 - q^n$ безжалостно: при $n$ порядка $1/p$ вероятность «хотя бы одного» уже около $63\%$ (заметил число? мы к нему ещё вернёмся). Отсюда инженерное следствие: улучшать надёжность отдельного звена бесполезно, если звеньев много, — надо сокращать число звеньев или вводить ретраи.


Схема Бернулли в машинном обучении

Этот раздел — про то, где четыре условия Якоба Бернулли встречаются с реальным кодом. Разберём четыре сюжета, которые ты почти наверняка встретишь на практике.

Сюжет 1: оценка качества классификатора

Пусть у модели истинная вероятность правильного ответа $p$ (её мы не знаем — именно её и оцениваем). Тестовая выборка из $n$ независимых, одинаково распределённых объектов. Тогда число правильных ответов $k$ — ровно бернуллиевская величина, и

$$P(\text{ровно } k \text{ верных}) = C_n^k p^k (1-p)^{n-k}$$

Наблюдаемая accuracy — это $\hat p = k/n$. Насколько она может гулять? Стандартное отклонение числа успехов равно $\sqrt{npq}$ (строго мы это выведем в уроке 238), значит отклонение самой доли — $\sqrt{pq/n}$.

Подставим числа: $n = 100$, $p = 0{,}9$. Тогда $\sqrt{0{,}9 \cdot 0{,}1 / 100} = \sqrt{0{,}0009} = 0{,}03$. То есть на выборке в сотню объектов accuracy честно гуляет в диапазоне $\pm 3$ процентных пункта на одну сигму и $\pm 6$ п.п. на две. Модель с «настоящими» $90\%$ спокойно покажет $84\%$ или $96\%$ — просто по случайности.

Вот почему сравнивать две модели по accuracy $0{,}91$ против $0{,}89$ на сотне объектов — бессмысленно. Разница в $2$ п.п. тонет в шуме размером $\pm 6$ п.п. Чтобы отличать модели с разницей $1$ п.п., нужны выборки на десятки тысяч объектов: $\sqrt{pq/n} \le 0{,}0025$ требует $n \ge 0{,}09/0{,}00000625 = 14\,400$.

Сюжет 2: A/B-тест

A/B-тест — это две параллельные схемы Бернулли. Контрольная группа: $n_A$ пользователей, конверсия $p_A$. Тестовая: $n_B$ пользователей, конверсия $p_B$. Вопрос: наблюдаемая разница — сигнал или шум?

Пусть $n = 1000$ в каждой группе, базовая конверсия $p = 0{,}1$. Тогда:

  • ожидаемое число конверсий $np = 100$;
  • стандартное отклонение $\sqrt{npq} = \sqrt{1000 \cdot 0{,}1 \cdot 0{,}9} = \sqrt{90} \approx 9{,}49$.

Ты наблюдаешь $100$ конверсий в контроле и $118$ в тесте. Разница $18$ — это $18/9{,}49 \approx 1{,}9$ стандартных отклонения одной группы. Строго нужно считать сигму разности (она примерно в $\sqrt 2$ больше, около $13{,}4$), и тогда $18/13{,}4 \approx 1{,}34$ — то есть результат находится в зоне «может быть просто шум». Даже разница в $18\%$ относительного прироста на выборке в тысячу человек ничего не доказывает.

Интуитивное правило, которое стоит держать в голове: шум растёт как $\sqrt n$, а сигнал — как $n$. Удвоив выборку, ты удваиваешь ожидаемую разницу в абсолютных числах, но шум растёт только в $\sqrt 2 \approx 1{,}41$ раза. Отсюда и знаменитое «чтобы поймать вдвое меньший эффект, нужно вчетверо больше данных». Строгие критерии значимости — это урок 247, здесь нам важна сама механика.

Сюжет 3: dropout

Dropout — буквальная реализация схемы Бернулли внутри нейросети. На каждом форвард-проходе для каждого нейрона независимо бросается монетка: с вероятностью $p$ нейрон выключается (его выход обнуляется), с вероятностью $1-p$ остаётся.

Слой из $n = 1000$ нейронов, $p = 0{,}5$:

  • Ожидаемое число выключенных: $np = 500$.
  • Стандартное отклонение: $\sqrt{npq} = \sqrt{1000 \cdot 0{,}25} = \sqrt{250} \approx 15{,}8$.
  • Вероятность, что выключено ровно $500$: около $0{,}025$ — всего $2{,}5\%$! Точное попадание в среднее почти никогда не случается.
  • Зато вероятность, что выключено от $469$ до $531$ (то есть $\pm 2\sigma$), — около $95\%$.

Отсюда сразу два практических вывода. Первый: на маленьких слоях dropout шумит непропорционально сильно. При $n = 10$ и $p = 0{,}5$ вероятность выключить $8$ и более нейронов из $10$ равна $(C_{10}^8 + C_{10}^9 + C_{10}^{10})/2^{10} = (45+10+1)/1024 \approx 0{,}055$ — то есть в одном шаге из восемнадцати слой почти полностью гаснет. Поэтому dropout не ставят на узкие слои.

Второй: почему при инференсе выходы умножают на $(1-p)$ (или, наоборот, делят на $(1-p)$ при обучении — это inverted dropout). Потому что при обучении до следующего слоя доходит в среднем доля $(1-p)$ активаций, и без компенсации масштаб сигнала на инференсе подскочил бы в $1/(1-p)$ раз. Схема Бернулли объясняет это в одну строчку через математическое ожидание.

Сюжет 4: бутстрэп и магические 63,2%

А вот самый красивый сюжет. Бутстрэп: из выборки размера $n$ мы $n$ раз извлекаем случайный объект с возвращением, получая новую выборку того же размера. Вопрос: какая доля исходных объектов в неё попадёт?

Зафиксируем конкретный объект — скажем, объект номер $7$. Каждое из $n$ извлечений — испытание Бернулли: «взяли объект $7$» с вероятностью $1/n$, «взяли другой» с вероятностью $1 - 1/n$. Извлечения независимы (возвращаем же!), число их фиксировано, исходов два — идеальная схема Бернулли.

Вероятность, что объект $7$ не попал ни разу, — это $P_n(0)$:

$$P(\text{объект не попал}) = \left(1 - \frac{1}{n}\right)^n$$

Посмотрим, что это за число при разных $n$:

  • $n = 10$: $0{,}9^{10} \approx 0{,}3487$
  • $n = 100$: $0{,}99^{100} \approx 0{,}3660$
  • $n = 1000$: $0{,}999^{1000} \approx 0{,}36770$
  • $n = 10\,000$: $\approx 0{,}36786$

Числа сходятся, и сходятся они к знаменитому пределу:

$$\lim_{n \to \infty}\left(1 - \frac{1}{n}\right)^n = e^{-1} \approx 0{,}367879$$

Проверим это через логарифм. Обозначим $L = n\ln\left(1 - \frac1n\right)$. При больших $n$ величина $1/n$ мала, и разложение $\ln(1-x) = -x - \frac{x^2}{2} - \dots$ даёт

$$L = n\left(-\frac1n - \frac{1}{2n^2} - \dots\right) = -1 - \frac{1}{2n} - \dots \xrightarrow[n\to\infty]{} -1$$

Значит сама величина стремится к $e^{-1}$.

Итог: доля объектов, попавших хотя бы раз, равна $1 - 1/e \approx 0{,}632$, то есть $63{,}2\%$. Оставшиеся $36{,}8\%$ образуют так называемую out-of-bag выборку — те объекты, которые дерево в случайном лесе не видело при обучении. Именно на них считают OOB-оценку качества, бесплатную замену кросс-валидации в RandomForest. Когда в документации sklearn встречаешь oob_score=True, за этим стоит ровно эта выкладка.

Заодно объясняется и загадочная строчка из прошлого раздела: «при $n \approx 1/p$ вероятность хотя бы одного успеха около $63\%$». Это то же самое число, только с другой стороны: $1 - (1-p)^{1/p} \to 1 - 1/e$.

Сюжет 5: случайные маски и инициализация

Схема Бернулли всплывает ещё в куче мест:

  • Маскирование в BERT-подобных моделях: каждый токен независимо маскируется с вероятностью $0{,}15$. В предложении из $40$ токенов ожидается $6$ масок, а вероятность, что не замаскируется ни один, — $0{,}85^{40} \approx 0{,}0015$. То есть примерно в одном предложении из семисот батч получит пример без единой цели для обучения.
  • Разреженная инициализация и pruning: обнуляем каждый вес с вероятностью $p$ — снова $n$ независимых испытаний Бернулли, и число выживших весов распределено биномиально.
  • Аугментации: каждое изображение с вероятностью $p$ проходит через горизонтальный флип. Сколько флипнутых картинок в батче из $64$? Схема Бернулли.
  • Стохастическая глубина (stochastic depth): каждый residual-блок независимо выключается с вероятностью $p$. Число активных блоков в проходе — снова биномиальная величина.

Приближение Пуассона: когда событие редкое

Интуиция

Попробуй посчитать $P_{5000}(3)$ при $p = 0{,}0004$ прямо по формуле Бернулли. Тебе понадобится $C_{5000}^3 \approx 2{,}08 \cdot 10^{10}$ и множитель $0{,}9996^{4997}$, который считается только через логарифм. Формально всё работает, практически — больно и легко ошибиться.

Но у такой ситуации (огромное $n$, крошечное $p$, умеренное произведение $\lambda = np$) есть простое приближение. Идея: когда событие редкое, важно не «сколько испытаний», а «сколько успехов ожидается в среднем». Один и тот же поток редких событий получается и из миллиона испытаний с $p = 10^{-6}$, и из тысячи с $p = 10^{-3}$ — если $\lambda = np$ одно и то же.

Определение (формула Пуассона): Если $n$ велико, $p$ мало, а произведение $\lambda = np$ умеренно, то

$$P_n(k) \approx \frac{\lambda^k}{k!}\, e^{-\lambda}, \qquad \lambda = np$$

Условие применимости на практике: $n \ge 50$ (лучше $n \ge 100$), $p \le 0{,}1$ и $\lambda = np \le 10$. Чем меньше $p$ при фиксированном $\lambda$, тем точнее приближение.

Откуда оно берётся, если посмотреть на формулу Бернулли и подставить $p = \lambda/n$:

$$C_n^k p^k q^{n-k} = \underbrace{\frac{n(n-1)\cdots(n-k+1)}{n^k}}_{\to\, 1} \cdot \frac{\lambda^k}{k!} \cdot \underbrace{\left(1 - \frac{\lambda}{n}\right)^{n}}_{\to\, e^{-\lambda}} \cdot \underbrace{\left(1 - \frac{\lambda}{n}\right)^{-k}}_{\to\, 1}$$

Первый множитель — произведение $k$ дробей, каждая близка к единице при $n \gg k$. Третий — тот самый замечательный предел, который мы только что видели в бутстрэпе, только с $\lambda$ вместо единицы. Четвёртый стремится к $1$ при фиксированном $k$. Остаётся ровно $\dfrac{\lambda^k}{k!}e^{-\lambda}$.

Отдельно запомни удобнейший частный случай:

$$P(\text{хотя бы одно редкое событие}) = 1 - P_n(0) \approx 1 - e^{-\lambda}$$

Примеры с разбором

Пример 13 (простой): битые пакеты

По сети отправлено $500$ пакетов, каждый теряется с вероятностью $0{,}004$. Какова вероятность потерять ровно $3$ пакета?

Решение.

Шаг 1. Проверим применимость: $n = 500 \ge 50$ ✅, $p = 0{,}004 \le 0{,}1$ ✅, $\lambda = 500 \cdot 0{,}004 = 2 \le 10$ ✅

Шаг 2. Подставляем в формулу Пуассона:

$$P_{500}(3) \approx \frac{2^3}{3!}e^{-2} = \frac{8}{6} \cdot 0{,}135335 = 1{,}33333 \cdot 0{,}135335$$

Шаг 3. Считаем: $\approx 0{,}18045$.

Ответ: $\approx 0{,}1804$, то есть около $18\%$.


Пример 14 (средний): насколько точно приближение

$n = 200$, $p = 0{,}01$, $k = 2$. Сравни точный результат по Бернулли и приближение Пуассона.

Решение.

Шаг 1. Точно по Бернулли: $C_{200}^2 = \dfrac{200 \cdot 199}{2} = 19\,900$; $p^2 = 0{,}0001$; $q^{198} = 0{,}99^{198} \approx 0{,}13670$.

$$P_{200}(2) = 19\,900 \cdot 0{,}0001 \cdot 0{,}13670 = 1{,}99 \cdot 0{,}13670 \approx 0{,}27203$$

Шаг 2. По Пуассону: $\lambda = 200 \cdot 0{,}01 = 2$.

$$P \approx \frac{2^2}{2!}e^{-2} = 2 \cdot 0{,}135335 \approx 0{,}27067$$

Шаг 3. Сравниваем: $0{,}27203$ против $0{,}27067$. Абсолютная разница $0{,}00136$, относительная — примерно $0{,}5\%$.

Ответ: приближение Пуассона даёт $0{,}2707$ против точных $0{,}2720$ — расхождение около полупроцента, чего для инженерных задач более чем достаточно.


Пример 15 (сложный): опечатка на миллион

Сервис обрабатывает $1000$ запросов в час. Каждый запрос падает с вероятностью $0{,}001$. (а) Какова вероятность, что за час не будет ни одного падения? (б) Что падений будет не больше двух? (в) Сколько запросов можно обработать, чтобы вероятность «хотя бы одного падения» не превышала $10\%$?

Решение.

Шаг 1. $\lambda = 1000 \cdot 0{,}001 = 1$. Условия Пуассона выполнены с огромным запасом.

Шаг 2. (а) Ни одного падения: $P(0) \approx e^{-1} \approx 0{,}36788$.

Сравним с точным значением: $0{,}999^{1000} \approx 0{,}367695$. Разница в четвёртом знаке — и, кстати, это ровно тот же бутстрэп-предел, что мы разбирали выше, потому что $(1 - 1/n)^n$ при $n = 1000$.

Шаг 3. (б) Не больше двух: складываем три пуассоновских члена.

$$P(0) + P(1) + P(2) \approx e^{-1}\left(1 + 1 + \frac12\right) = 0{,}36788 \cdot 2{,}5 \approx 0{,}91970$$

Шаг 4. (в) Нужно $1 - e^{-\lambda} \le 0{,}1$, то есть $e^{-\lambda} \ge 0{,}9$, то есть $\lambda \le -\ln 0{,}9 \approx 0{,}10536$.

Шаг 5. Из $\lambda = n \cdot 0{,}001 \le 0{,}10536$ получаем $n \le 105{,}36$, то есть $n = 105$ запросов.

Ответ: (а) $\approx 0{,}3679$; (б) $\approx 0{,}9197$; (в) не более $105$ запросов.

Пункт (в) — очень отрезвляющий результат. Сервис с надёжностью «одна девятка после трёх» ($99{,}9\%$ на запрос) выдерживает всего сотню запросов, прежде чем шанс сбоя дорастает до $10\%$.

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

Приближение Пуассона — это рабочая модель для всего «редкого и массового»: отказы серверов, опечатки в корпусе, редкие классы в несбалансированных данных, коллизии хешей, попадания в кэш-промахи, битые пиксели на матрице. В ML особенно важен случай редкого класса: если положительных примеров $0{,}5\%$, то в батче из $256$ объектов $\lambda = 1{,}28$, и вероятность батча вообще без положительных примеров равна $e^{-1{,}28} \approx 0{,}278$. Больше четверти шагов обучения проходит вхолостую по целевому классу! Это ровно та арифметика, из-за которой в несбалансированных задачах применяют взвешенный сэмплинг.


Теоремы Муавра-Лапласа: когда n огромное

Интуиция

Приближение Пуассона работает, когда $p$ мало. А что делать, если $p$ обычное — скажем, $0{,}5$ — а $n$ измеряется тысячами? Считать $C_{10000}^{5100}$ никто не станет.

Здесь работает второе приближение, историческое первое: при больших $n$ график биномиальных вероятностей становится неотличим от гладкого «колокола». Де Муавр заметил это ещё в 1733 году: если нарисовать столбики $P_n(k)$ и правильно отмасштабировать оси, получается одна и та же кривая независимо от $n$ и $p$.

Вводим стандартизованную переменную — «на сколько сигм отклонилось $k$ от среднего»:

$$x = \frac{k - np}{\sqrt{npq}}$$

Здесь $np$ — ожидаемое число успехов, $\sqrt{npq}$ — стандартное отклонение. Эта величина безразмерна, и вот в её терминах всё и формулируется. Полный вывод — тема центральной предельной теоремы (урок 241), а здесь мы берём результат как рабочий инструмент.

Локальная теорема Муавра-Лапласа. Если $n$ велико и $npq \ge 10$, то

$$P_n(k) \approx \frac{1}{\sqrt{npq}}\,\varphi(x), \qquad x = \frac{k - np}{\sqrt{npq}}, \qquad \varphi(x) = \frac{1}{\sqrt{2\pi}}e^{-x^2/2}$$

Функция $\varphi(x)$ называется функцией Гаусса; она чётная: $\varphi(-x) = \varphi(x)$.

Интегральная теорема Муавра-Лапласа. При тех же условиях вероятность того, что число успехов попадёт в интервал от $k_1$ до $k_2$, равна

$$P(k_1 \le k \le k_2) \approx \Phi_0(x_2) - \Phi_0(x_1), \qquad x_i = \frac{k_i - np}{\sqrt{npq}}$$

где $\Phi_0(x) = \dfrac{1}{\sqrt{2\pi}}\displaystyle\int_0^x e^{-t^2/2}\,dt$ — функция Лапласа. Она нечётная: $\Phi_0(-x) = -\Phi_0(x)$, и $\Phi_0(+\infty) = 0{,}5$.

Значения обеих функций берут из таблиц (или из scipy.stats.norm). Вот минимальный набор, который стоит держать в голове:

$x$ $\varphi(x)$ $\Phi_0(x)$
$0$ $0{,}3989$ $0{,}0000$
$0{,}5$ $0{,}3521$ $0{,}1915$
$1{,}0$ $0{,}2420$ $0{,}3413$
$1{,}5$ $0{,}1295$ $0{,}4332$
$1{,}96$ $0{,}0584$ $0{,}4750$
$2{,}0$ $0{,}0540$ $0{,}4772$
$2{,}5$ $0{,}0175$ $0{,}4938$
$3{,}0$ $0{,}0044$ $0{,}4987$

Из последних строк выпадают знаменитые правила: $2\Phi_0(1) = 0{,}6826$ (правило одной сигмы), $2\Phi_0(2) = 0{,}9544$ (двух сигм), $2\Phi_0(3) = 0{,}9973$ (трёх сигм), а $2\Phi_0(1{,}96) = 0{,}95$ — тот самый $95\%$-й доверительный интервал.

Поправка на непрерывность. Мы приближаем дискретные столбики непрерывной кривой, и для интегральной теоремы это даёт систематическую погрешность. Лечится просто: границы раздвигают на половину шага, беря $k_1 - 0{,}5$ и $k_2 + 0{,}5$. Насколько это важно, увидим прямо сейчас.

Примеры с разбором

Пример 16 (простой): локальная теорема

Монету бросают $400$ раз. Найти вероятность того, что орёл выпадет ровно $210$ раз.

Решение.

Шаг 1. $n = 400$, $p = q = 0{,}5$. Тогда $np = 200$, $npq = 100$, $\sqrt{npq} = 10$. Проверка: $npq = 100 \ge 10$ ✅

Шаг 2. Стандартизуем: $x = \dfrac{210 - 200}{10} = 1$.

Шаг 3. По таблице $\varphi(1) = 0{,}2420$.

Шаг 4. Подставляем:

$$P_{400}(210) \approx \frac{0{,}2420}{10} = 0{,}0242$$

Проверим наш ответ. Точное значение по формуле Бернулли — $0{,}024207$. Приближение дало $0{,}024197$. Совпадение в четвёртом знаке ✅

Ответ: $\approx 0{,}0242$


Пример 17 (средний): интегральная теорема и поправка на непрерывность

Та же монета, $400$ бросков. Какова вероятность, что число орлов окажется от $190$ до $210$ включительно?

Решение.

Шаг 1. $np = 200$, $\sqrt{npq} = 10$ (как выше).

Шаг 2. Без поправки: $x_1 = \dfrac{190-200}{10} = -1$, $x_2 = \dfrac{210-200}{10} = 1$.

$$P \approx \Phi_0(1) - \Phi_0(-1) = 0{,}3413 + 0{,}3413 = 0{,}6826$$

Шаг 3. С поправкой на непрерывность берём границы $189{,}5$ и $210{,}5$:

$$x_1 = \frac{189{,}5-200}{10} = -1{,}05, \quad x_2 = \frac{210{,}5-200}{10} = 1{,}05$$

$$P \approx 2\Phi_0(1{,}05) = 2 \cdot 0{,}3531 = 0{,}7062$$

Шаг 4. Точное значение (прямое суммирование $21$ биномиального члена) равно $0{,}70629$.

Ответ: без поправки $0{,}6826$ (ошибка $0{,}024$), с поправкой $0{,}7062$ (ошибка $0{,}00001$). Поправка на непрерывность уменьшила ошибку в две тысячи раз — на узких интервалах ею пренебрегать нельзя.


Пример 18 (сложный): доверительный коридор для dropout

Слой из $1000$ нейронов, dropout $p = 0{,}2$ (выключается каждый пятый). Какова вероятность, что число выключенных нейронов окажется в диапазоне от $180$ до $220$?

Решение.

Шаг 1. $np = 1000 \cdot 0{,}2 = 200$; $npq = 1000 \cdot 0{,}2 \cdot 0{,}8 = 160$; $\sqrt{npq} = \sqrt{160} \approx 12{,}649$. Условие $npq = 160 \ge 10$ ✅

Шаг 2. С поправкой на непрерывность границы: $179{,}5$ и $220{,}5$.

$$x_{1,2} = \pm\frac{20{,}5}{12{,}649} \approx \pm 1{,}621$$

Шаг 3. По таблице $\Phi_0(1{,}62) \approx 0{,}4474$.

$$P \approx 2 \cdot 0{,}4474 = 0{,}8948$$

Шаг 4. Точное суммирование по всем $41$ значению даёт $0{,}89505$. Приближение попало в третий знак.

Шаг 5. Осмыслим: диапазон $\pm 20$ нейронов вокруг двухсот — это $\pm 1{,}6\sigma$, и туда попадает примерно $89\%$ проходов. То есть в $11\%$ форвард-проходов dropout выключит меньше $180$ или больше $220$ нейронов. Разброс маски — обычное дело, и именно он делает dropout регуляризатором.

Ответ: $\approx 0{,}895$

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

Муавр-Лаплас — это мост между схемой Бернулли и всей практической статистикой. Формула «доля $\pm\, 1{,}96\sqrt{\hat p(1-\hat p)/n}$», которую ты встретишь в каждом калькуляторе A/B-тестов, — это интегральная теорема Муавра-Лапласа, повёрнутая относительно неизвестной $p$. Правило «трёх сигм» для мониторинга метрик — она же. И, что немаловажно, она отвечает на инженерный вопрос «сколько данных нужно»: ширина коридора падает как $1/\sqrt n$, значит для вдвое более точной оценки нужно вчетверо больше данных. Это не эмпирика, а прямое следствие $\sqrt{npq}$ в знаменателе.

Важно и обратное: у теоремы есть условие применимости. При $npq < 10$ (то есть когда $n$ мало или $p$ близко к $0$ либо к $1$) нормальное приближение врёт, и надо либо считать точно по Бернулли, либо, если $p$ мало, использовать Пуассона. Практическая шпаргалка:

  • $n$ маленькое (до $\sim 30$) — считай точно по формуле Бернулли.
  • $n$ большое, $p \le 0{,}1$, $np \le 10$ — Пуассон.
  • $n$ большое, $npq \ge 10$ — Муавр-Лаплас (не забудь поправку на непрерывность).

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

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

Задание 1: Монету бросают $5$ раз. Найди вероятность того, что орёл выпадет ровно $3$ раза.


Задание 2: Игральный кубик бросают $4$ раза. Какова вероятность выпадения ровно одной шестёрки?


Задание 3: Классификатор даёт правильный ответ с вероятностью $0{,}8$. Какова вероятность, что на $6$ независимых объектах он не ошибётся ни разу?


Задание 4: Сервис делает $5$ независимых запросов, каждый падает с вероятностью $0{,}1$. Какова вероятность, что упадёт хотя бы один?


Задание 5: Модель ошибается с вероятностью $0{,}2$. Найди вероятность того, что на трёх объектах не будет ни одной ошибки.


Задание 6: Проводится $10$ независимых испытаний с вероятностью успеха $0{,}3$. Найди наивероятнейшее число успехов.


Задание 7: Из колоды в $36$ карт последовательно вынимают $3$ карты без возвращения. Можно ли применить формулу Бернулли для подсчёта вероятности вытащить ровно $2$ туза?


Задание 8: Проводится $8$ независимых испытаний с вероятностью успеха $0{,}25$. Найди вероятность ровно двух успехов.


Задание 9: На слое из $4$ нейронов работает dropout с вероятностью выключения $0{,}5$. Какова вероятность, что выключены ровно $2$ нейрона?


Задание 10: Монету бросают $7$ раз. Какова вероятность, что все $7$ раз выпадет орёл?


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

Задание 11: Монету бросают $6$ раз. Найди вероятность того, что орёл выпадет не более двух раз.


Задание 12: Проводится $5$ испытаний с вероятностью успеха $0{,}2$. Найди вероятность того, что число успехов будет от $1$ до $2$ включительно.


Задание 13: Плавающий баг воспроизводится в одном запуске из десяти ($p = 0{,}1$). Сколько запусков нужно сделать, чтобы поймать его хотя бы раз с вероятностью не менее $0{,}95$?


Задание 14: В батче $25$ объектов, каждый принадлежит редкому классу с вероятностью $0{,}2$. Найди наивероятнейшее число объектов редкого класса и его вероятность.


Задание 15: Модель с accuracy $0{,}9$ проверяется на $20$ независимых объектах. Какова вероятность ровно $18$ правильных ответов?


Задание 16: Из $800$ отправленных пакетов каждый теряется с вероятностью $0{,}005$. Пользуясь приближением Пуассона, найди вероятность потери ровно двух пакетов.


Задание 17: Бутстрэп: из выборки в $10$ объектов $10$ раз извлекают объект с возвращением. Какова вероятность, что конкретный объект не попадёт в бутстрэп-выборку ни разу?


Задание 18: Проводится $4$ испытания с вероятностью успеха $0{,}3$. Найди вероятность того, что успехов будет не менее двух.


Задание 19: В A/B-тесте новую версию страницы увидели $200$ пользователей, конверсия каждого — $0{,}05$. Найди ожидаемое число конверсий и стандартное отклонение. В каком диапазоне ($\pm 2\sigma$) окажется результат?


Задание 20: Проводится $19$ испытаний с вероятностью успеха $0{,}5$. Найди наивероятнейшее число успехов. Сколько таких чисел получилось и почему?


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

Задание 21: Монету бросают $10\,000$ раз. Пользуясь локальной теоремой Муавра-Лапласа, найди вероятность того, что орёл выпадет ровно $5100$ раз.


Задание 22: Монету бросают $1000$ раз. Найди вероятность того, что число орлов окажется в пределах от $470$ до $530$ включительно. Используй интегральную теорему Муавра-Лапласа с поправкой на непрерывность.


Задание 23: Бутстрэп из выборки размера $n = 1000$. (а) Найди вероятность, что конкретный объект не попадёт в бутстрэп-выборку. (б) Какая доля исходных объектов окажется уникальными в бутстрэп-выборке? (в) К какому числу это стремится при $n \to \infty$?


Задание 24: Сервис обрабатывает $1000$ запросов, каждый падает с вероятностью $0{,}001$. Найди вероятность того, что падений будет не менее двух — по формуле Пуассона и точно. Сравни.


Задание 25: Слой из $100$ нейронов, dropout с $p = 0{,}5$. Какова вероятность, что число выключенных нейронов отличается от ожидаемого не более чем на $10$?


Задание 26: Модель ошибается с вероятностью $0{,}03$. Её прогоняют на тестовой выборке из $10\,000$ объектов. Найди ожидаемое число ошибок, стандартное отклонение и коридор «трёх сигм». Какое число ошибок должно вызвать тревогу?


Задание 27: A/B-тест: в контрольной группе $1000$ пользователей и $100$ конверсий, в тестовой $1000$ пользователей и $118$ конверсий. Оцени на уровне интуиции, значима ли разница.


Задание 28: Для каждой ситуации определи, применима ли схема Бернулли, и если нет — какое из четырёх условий нарушено.

(а) Модель дообучается онлайн прямо во время прохода по тестовой выборке. (б) Детектор объектов прогоняется по $900$ кадрам одного видео. (в) Из корпуса в $1\,000\,000$ документов случайно (без возвращения) отбирают $500$ и считают, сколько содержат слово «нейросеть». (г) Пайплайн перезапускают, пока он не завершится успешно; считают число запусков.


Задание 29: Проводится $5$ независимых испытаний с вероятностью успеха $0{,}4$. (а) Найди наивероятнейшее число успехов. (б) Найди вероятность того, что успехов будет не менее трёх. (в) Проверь, что сумма всех $P_5(k)$ равна единице.


Задание 30: Модель запускают $6$ раз, каждый запуск успешен с вероятностью $0{,}7$. Найди вероятность того, что число успехов окажется чётным (включая ноль). Выведи общую формулу.


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

Ошибка 1: применять формулу Бернулли к выборке без возвращения

Неправильно: «В коробке $20$ деталей, $5$ бракованных. Достаём $3$ детали. Вероятность ровно одной бракованной: $C_3^1 \cdot 0{,}25 \cdot 0{,}75^2 = 0{,}4219$».

Правильно: детали не возвращают, значит $p$ меняется после каждого извлечения. Считать надо через сочетания:

$$P = \frac{C_5^1 \cdot C_{15}^2}{C_{20}^3} = \frac{5 \cdot 105}{1140} = \frac{525}{1140} \approx 0{,}4605$$

Почему важно: ошибка составила почти $4$ процентных пункта, причём в сторону занижения. Правило-спасатель: если выборка меньше $5\%$ от генеральной совокупности, разницу можно игнорировать; здесь $3/20 = 15\%$ — игнорировать нельзя.


Ошибка 2: считать «хотя бы один» через сумму вместо противоположного события

Неправильно: «Хотя бы один успех из $20$ — это $P_{20}(1) + P_{20}(2) + \dots + P_{20}(20)$», после чего человек считает первые два-три слагаемых, устаёт и пишет неверный ответ. Или, что хуже, пишет $P(k \ge 1) = 20p$ — «двадцать испытаний по $p$ каждое».

Правильно: $P(k \ge 1) = 1 - q^n$. При $n = 20$, $p = 0{,}05$: $1 - 0{,}95^{20} \approx 0{,}6415$, а не $20 \cdot 0{,}05 = 1$.

Почему важно: формула $np$ даёт среднее число успехов, а не вероятность. При $np > 1$ она выдаёт «вероятность» больше единицы — верный признак, что что-то пошло не так. При малых $np$ она случайно оказывается близка к правде ($1 - e^{-\lambda} \approx \lambda$ при малых $\lambda$), что и делает эту ошибку живучей.


Ошибка 3: путать «ровно $k$» с «$k$ и более»

Неправильно: «Вероятность, что хотя бы $3$ из $10$ объектов окажутся редкого класса, равна $P_{10}(3)$».

Правильно: «хотя бы $3$» — это $P_{10}(3) + P_{10}(4) + \dots + P_{10}(10)$, или, что удобнее, $1 - P_{10}(0) - P_{10}(1) - P_{10}(2)$.

Почему важно: формулировки в задачах различаются одним словом, а ответы — в разы. Заведи привычку выписывать множество значений $k$ явно: «не менее $3$» → $k \in \{3,4,\dots,10\}$; «более $3$» → $k \in \{4,\dots,10\}$; «не более $3$» → $k \in \{0,1,2,3\}$. Особенно коварно «более» против «не менее» — граница сдвигается на единицу.


Ошибка 4: считать наивероятнейшее число как $\lfloor np \rfloor$

Неправильно: «$n = 9$, $p = 0{,}3$, значит $np = 2{,}7$, наивероятнейшее $k_0 = 2$».

Правильно: формула требует $(n+1)p = 3$ — целое число, значит наивероятнейших значений два: $k_0 = 2$ и $k_0 = 3$, обе с вероятностью $\approx 0{,}2668$.

Почему важно: в большинстве случаев $\lfloor np \rfloor$ действительно совпадает с ответом — и именно поэтому ошибку почти невозможно заметить. Она вылезает ровно тогда, когда $(n+1)p$ целое, а также в пограничных случаях вроде $n = 4$, $p = 0{,}9$: $np = 3{,}6$, $\lfloor np \rfloor = 3$, но $(n+1)p = 4{,}5$, и настоящий ответ $k_0 = 4$. Всегда считай $(n+1)p$.


Ошибка 5: применять Муавра-Лапласа при маленьком $npq$

Неправильно: «$n = 30$, $p = 0{,}02$. Вероятность ровно одного успеха по локальной теореме: $np = 0{,}6$, $\sqrt{npq} = \sqrt{0{,}588} \approx 0{,}767$, $x = (1-0{,}6)/0{,}767 \approx 0{,}52$, $P \approx 0{,}3482/0{,}767 \approx 0{,}454$».

Правильно: здесь $npq = 0{,}588 \ll 10$, нормальное приближение неприменимо. Точный ответ: $P_{30}(1) = 30 \cdot 0{,}02 \cdot 0{,}98^{29} \approx 0{,}6 \cdot 0{,}5566 \approx 0{,}334$. Пуассон с $\lambda = 0{,}6$ даёт $0{,}6 \cdot e^{-0{,}6} \approx 0{,}3293$ — вполне прилично.

Почему важно: нормальное приближение ошиблось на $36\%$ — больше чем на треть. Запомни развилку: маленькое $p$ — Пуассон, $npq \ge 10$ — Муавр-Лаплас, маленькое $n$ — только точная формула.


Ошибка 6: забывать про поправку на непрерывность в интегральной теореме

Неправильно: «$n = 400$, $p = 0{,}5$, от $190$ до $210$: $x = \pm 1$, ответ $2\Phi_0(1) = 0{,}6826$».

Правильно: с поправкой границы $189{,}5$ и $210{,}5$, тогда $x = \pm 1{,}05$ и $2\Phi_0(1{,}05) = 0{,}7062$. Точное значение — $0{,}70629$.

Почему важно: без поправки ошибка составила $0{,}024$, с поправкой — $0{,}00001$. Чем уже интервал (и чем меньше $n$), тем больнее. Правило простое: расширяй границы на $0{,}5$ в обе стороны всегда, когда переходишь от дискретного $k$ к непрерывной кривой.


Ошибка 7: не проверять независимость в реальных данных

Неправильно: «Модель ошиблась на $130$ из $900$ кадров при ожидаемых $72$ — это $7{,}2\sigma$, модель сломалась, срочно переобучаем».

Правильно: кадры одного видео зависимы, ошибки идут сериями. Эффективное число независимых наблюдений в разы меньше $900$, и настоящее отклонение оказывается около $2\sigma$. Оценивать надо по независимым видео, а не по кадрам.

Почему важно: это самая дорогая ошибка из списка, потому что она не в арифметике, а в постановке. Она приводит к ложным тревогам, к «переобучению по шуму» и к доверительным интервалам, которые вдвое уже реальных. Спрашивай себя перед каждым расчётом: а точно ли мои $n$ наблюдений — это $n$ независимых наблюдений?


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

  1. Схема Бернулли — это $n$ фиксированных, независимых испытаний с двумя исходами и постоянной вероятностью успеха $p$. Все четыре условия обязательны; проверять их надо до подстановки в формулу.

  2. Формула Бернулли: $P_n(k) = C_n^k p^k q^{n-k}$, где $q = 1 - p$. Читается как «$k$ раз повезло ($p^k$), $n-k$ раз не повезло ($q^{n-k}$), и повезти могло $C_n^k$ способами».

  3. Контроль правильности: $\sum_{k=0}^{n} P_n(k) = (p+q)^n = 1$. Если посчитал все вероятности и сумма не сошлась — ищи арифметическую ошибку.

  4. Хотя бы один успех: $P(k \ge 1) = 1 - q^n$. Самая полезная формула раздела. Не путать со средним числом успехов $np$.

  5. Наивероятнейшее число: $np - q \le k_0 \le np + p$, на практике $k_0 = \lfloor (n+1)p \rfloor$. Если $(n+1)p$ целое — наивероятнейших чисел два: $(n+1)p$ и $(n+1)p - 1$.

  6. Среднее и разброс: ожидаемое число успехов $np$, стандартное отклонение $\sqrt{npq}$. Разброс доли — $\sqrt{pq/n}$, то есть падает как $1/\sqrt{n}$: чтобы удвоить точность, нужно вчетверо больше данных.

  7. Приближение Пуассона ($n \ge 50$, $p \le 0{,}1$, $\lambda = np \le 10$): $P_n(k) \approx \dfrac{\lambda^k}{k!}e^{-\lambda}$. Для «хотя бы одного»: $1 - e^{-\lambda}$.

  8. Локальная теорема Муавра-Лапласа ($npq \ge 10$): $P_n(k) \approx \dfrac{\varphi(x)}{\sqrt{npq}}$, где $x = \dfrac{k-np}{\sqrt{npq}}$, $\varphi(x) = \dfrac{1}{\sqrt{2\pi}}e^{-x^2/2}$.

  9. Интегральная теорема Муавра-Лапласа: $P(k_1 \le k \le k_2) \approx \Phi_0(x_2) - \Phi_0(x_1)$, обязательно с поправкой на непрерывность (границы $k_1 - 0{,}5$ и $k_2 + 0{,}5$). Отсюда правила одной, двух и трёх сигм: $0{,}6826$, $0{,}9544$, $0{,}9973$.

  10. Развилка методов: маленькое $n$ — точная формула Бернулли; большое $n$ и маленькое $p$ — Пуассон; большое $n$ и $npq \ge 10$ — Муавр-Лаплас.

  11. Бутстрэп-константа: вероятность объекту не попасть в бутстрэп-выборку равна $(1 - 1/n)^n \to 1/e \approx 0{,}368$, поэтому уникальных объектов ровно $1 - 1/e \approx 63{,}2\%$, а out-of-bag — $36{,}8\%$.

  12. Главная практическая опасность — не арифметика, а нарушение независимости в реальных данных (кадры видео, сессии одного пользователя, повторы в тексте). Зависимость раздувает настоящий разброс и делает бернуллиевские доверительные интервалы обманчиво узкими.


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

Что было до. Схема Бернулли опирается ровно на тот аппарат, который мы построили в предыдущих уроках. Теорема умножения для независимых событий (урок 229) даёт вероятность одной конкретной цепочки $p^k q^{n-k}$. Теорема сложения для несовместных событий (тот же урок) позволяет просуммировать все $C_n^k$ цепочек. Условная вероятность (урок 230) — это язык, на котором формулируется независимость: $P(A \mid B) = P(A)$. А формула Байеса (урок 232) — то, чем ты будешь пользоваться, если захочешь решать обратную задачу: увидел $k$ успехов из $n$, что теперь думать про $p$? (Это, кстати, и есть байесовский вывод для биномиальной модели — но об этом позже.)

Что дальше. В уроке 234 мы формально введём понятие случайной величины, и число успехов в схеме Бернулли станет первым примером дискретной случайной величины. В уроке 235 появится функция распределения, а «не более $k$ успехов» превратится в её значение. В уроке 240 набор вероятностей $P_n(k)$ получит собственное имя — биномиальное распределение $B(n,p)$ — и встанет в один ряд с распределениями Пуассона, нормальным, экспоненциальным. В уроках 237-238 мы строго выведем то, чем сегодня пользовались на веру: математическое ожидание $M[X] = np$ и дисперсию $D[X] = npq$. Урок 241 (центральная предельная теорема) докажет теоремы Муавра-Лапласа как частный случай гораздо более общего утверждения, а урок 242 (закон больших чисел) закроет ту самую задачу, ради которой Якоб Бернулли всё это и затевал: доказательство того, что частота успехов сходится к вероятности. Уроки 245-247 превратят эти результаты в рабочие инструменты статистики — доверительные интервалы для доли и проверку гипотез.

Где применяется. В машинном обучении: оценка accuracy и доверительные интервалы для неё, расчёт размера выборки для A/B-теста, dropout и стохастическая глубина, бутстрэп и out-of-bag оценка в случайном лесе, маскирование токенов в языковых моделях, случайные аугментации, разреженная инициализация и pruning, оценка вероятности хотя бы одного отказа в пайплайне. В инженерии: надёжность систем из $n$ компонентов, планирование ретраев, оценка покрытия при фаззинге. В биологии и медицине: доля выздоровевших в клиническом испытании. В финансах: дефолты в портфеле кредитов. В контроле качества: приёмочные планы выборочного контроля — исторически первое массовое применение схемы Бернулли в промышленности.


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

1. Книга, которую издавали восемь лет после смерти автора. Якоб Бернулли писал «Ars Conjectandi» больше двадцати лет и так и не закончил четвёртую часть — ту самую, с законом больших чисел. Издать её удалось только в 1713 году, и сделал это племянник Николай, с которым Якоб при жизни успел изрядно поссориться. Семья Бернулли вообще славилась не только математикой, но и склоками: Якоб публично обвинял родного брата Иоганна в плагиате, а Иоганн однажды выгнал из дома собственного сына Даниила за то, что тот разделил с ним премию Парижской академии.

2. Число 63,2% старше компьютеров на два с половиной века. Константа $1 - 1/e$, которую сегодня знает каждый, кто хоть раз читал документацию к RandomForest, была известна ещё Эйлеру. Эфрон, придумавший бутстрэп в 1979 году, не открывал ничего нового про математику — он заметил, что старый предел даёт удивительно удобное свойство: каждая бутстрэп-выборка автоматически оставляет треть данных «на отложенную проверку», совершенно бесплатно.

3. Нормальное распределение родилось как костыль для вычислений. Де Муавр в 1733 году не собирался открывать «главное распределение природы». Он просто хотел избавиться от невыносимых вычислений с факториалами при больших $n$ — считать $C_{1000}^{500}$ вручную не хочется никому. Гладкая кривая $e^{-x^2/2}$ была для него приближением к биномиальным столбикам, чисто вычислительным трюком. То, что она окажется универсальным законом, поняли только через сто лет — Лаплас и Гаусс.

4. Задача, которая создала страховой бизнес. Де Муавр в лондонской кофейне Слотера продавал консультации по расчёту вероятностей — фактически работал первым в истории актуарием-фрилансером. Его книга «Annuities upon Lives» (1725) заложила основы расчёта пожизненных рент. Ирония: сам он, по легенде, предсказал дату собственной смерти, заметив, что каждый день спит на $15$ минут дольше предыдущего, экстраполировал арифметическую прогрессию и назвал день, когда сон достигнет $24$ часов. Он умер именно в этот день — 27 ноября 1754 года.

5. Dropout придумали, глядя на банки. Джеффри Хинтон рассказывал, что идея dropout пришла ему после посещения банка: он заметил, что кассиры постоянно меняются местами, и предположил, что это защита от сговора — чтобы обмануть банк, нужна кооперация сотрудников, а если состав всё время тасуется, кооперация не складывается. Ровно та же логика с нейронами: если случайно выключать половину, они не могут «сговориться» и выучить хрупкие совместные признаки. Реализуется эта идея, разумеется, схемой Бернулли.

6. Правило трёх сигм придумали не в статистике, а на заводе. Уолтер Шухарт, работавший в Bell Labs в 1920-х, ввёл контрольные карты с границами $\pm 3\sigma$ для контроля качества телефонных реле. Выбор именно трёх сигм был чисто прагматическим: при $99{,}73\%$ покрытия ложные тревоги случаются достаточно редко, чтобы рабочие не начали игнорировать сигналы. Сегодня тот же порог используют для мониторинга метрик ML-моделей в проде — и по той же самой причине.


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

🔹 Лайфхак 1: считай $C_n^k$ с меньшей стороны.

Свойство симметрии $C_n^k = C_n^{n-k}$ экономит кучу времени. Вместо $C_{20}^{18}$ считай $C_{20}^{2} = 190$ — три секунды вместо трёх минут. Правило: если $k > n/2$, сразу переходи к $n - k$.

🔹 Лайфхак 2: рекуррентный пересчёт вместо факториалов.

Соседние вероятности связаны простым соотношением:

$$P_n(k) = P_n(k-1) \cdot \frac{n-k+1}{k} \cdot \frac{p}{q}$$

Стартуешь с $P_n(0) = q^n$ и идёшь вверх. Ни одного факториала, ни одного переполнения. Это же соотношение сразу показывает, где вероятность перестаёт расти (когда множитель становится меньше единицы) — то есть заодно даёт наивероятнейшее число.

🔹 Лайфхак 3: три вопроса перед началом решения.

Прежде чем писать формулу, ответь себе:

  1. Что такое «одно испытание»? (Один бросок, один объект, один нейрон, одно извлечение.)
  2. Что считается «успехом» и чему равна его вероятность $p$?
  3. Множество каких $k$ меня интересует — ровно одно значение, диапазон, «хотя бы», «не более»?

Три предложения на черновике снимают половину ошибок в этой теме.

🔹 Лайфхак 4: прикидка «сколько сигм» до всяких формул.

Перед точным расчётом посчитай $np$ и $\sqrt{npq}$ и посмотри, на сколько сигм отстоит интересующее значение. Если это $0{,}5\sigma$ — событие рядовое, вероятность порядка десятков процентов. Если $2\sigma$ — редковато (около $5\%$ в обе стороны). Если $4\sigma$ — либо ты ошибся в модели, либо что-то реально сломалось. Такая прикидка занимает десять секунд и мгновенно ловит арифметические ляпы.

🔹 Лайфхак 5: «хотя бы один» и правило $n \approx 1/p$.

Держи в голове опорную точку: при $n = 1/p$ вероятность хотя бы одного успеха составляет примерно $63\%$; при $n = 3/p$ — уже около $95\%$; при $n = 5/p$ — почти $99{,}3\%$. Это позволяет отвечать на вопросы вроде «сколько прогонов нужно» без калькулятора. Проверка: $\lambda = 3$ даёт $1 - e^{-3} = 0{,}9502$ ✅

🔹 Лайфхак 6: симметрия при $p = 0{,}5$.

Если $p = q = 0{,}5$, формула схлопывается до $P_n(k) = C_n^k / 2^n$, а вся задача превращается в комбинаторику. Плюс работает симметрия $P_n(k) = P_n(n-k)$, которая часто позволяет свести «не более $m$» к «не менее $n-m$» и сэкономить половину вычислений.

🔹 Лайфхак 7: проверяй ответ суммой.

Если задача требует нескольких $P_n(k)$, посчитай заодно оставшиеся и убедись, что сумма равна единице. Этот приём ловит опечатки в сочетаниях и степенях лучше любой перепроверки — потому что ошибка в одном слагаемом сразу рушит баланс.

🔹 Лайфхак 8: в коде — логарифмы.

При больших $n$ прямое вычисление $C_n^k p^k q^{n-k}$ переполняется или теряет точность. Считай в логарифмах: $\ln P = \ln C_n^k + k\ln p + (n-k)\ln q$, где $\ln C_n^k = \ln n! - \ln k! - \ln(n-k)!$ через math.lgamma. Потом один раз экспоненцируешь. Именно так устроены scipy.stats.binom.pmf и все нормальные реализации.


Заключение

Смотри, что получилось. Мы взяли самую простую конструкцию, какую только можно придумать — повторяем одинаковый опыт с двумя исходами, — и из неё выросло всё: формула для точного счёта, правило наивероятнейшего значения, два приближения для разных предельных режимов, число $e$ в бутстрэпе, правило трёх сигм для мониторинга метрик и арифметика A/B-тестов.

И самое ценное, что ты уносишь из этого урока, — это не формула $C_n^k p^k q^{n-k}$ (её всегда можно подсмотреть или вызвать из scipy). Самое ценное — привычка спрашивать «а действительно ли мои наблюдения независимы и одинаково распределены?». Формулу знают все, а вот проверяют условия единицы — и именно поэтому в индустрии столько уверенных выводов, построенных на песке: доверительные интервалы, посчитанные по кадрам видео; A/B-тесты, «выигранные» на разнице в полтора шума; тревоги по метрикам, которые всего лишь отражают обычный бернуллиевский разброс.

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

В следующем уроке мы сделаем шаг вверх по уровню абстракции: перестанем говорить «вероятность того, что успехов ровно $k$» и введём случайную величину — объект, который сам по себе принимает разные значения с разными вероятностями. Число успехов в схеме Бернулли станет её первым и самым понятным примером, а всё, что ты сегодня посчитал руками, превратится в свойства этого объекта. Так что можешь считать, что половину следующего урока ты уже прошёл. 🚀

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

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

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