Случайность и вероятность

Вероятность — это число от 0 до 1, измеряющее, насколько правдоподобно событие; на больших сериях оно проявляется как частота.

Вероятность события — число от 0 (невозможно) до 1 (точно произойдёт). Для равновозможных исходов: P = (благоприятные исходы) / (все исходы).

Зачем вероятность в ML

Машинное обучение работает в условиях неопределённости: данные шумные, мир случаен, модель не может быть уверена на 100%. Поэтому предсказания моделей — это часто вероятности: «спам с вероятностью 0.92», «это кошка с вероятностью 0.8». Чтобы понимать, что выдаёт модель, и строить функции потерь (которые выводятся из вероятностей), нужен язык теории вероятностей.

Классическое определение

Если все исходы равновозможны, вероятность события — это доля «удачных» исходов. У честной кости 6 равновозможных исходов; вероятность выпадения чётного числа — 3 из 6 = 0.5. Посчитаем несколько вероятностей перебором исходов.

from itertools import product

# Все исходы броска двух костей
outcomes = list(product(range(1, 7), repeat=2))
total = len(outcomes)
print("Всего исходов:", total)

# Событие: сумма равна 7
seven = [o for o in outcomes if sum(o) == 7]
print("Сумма = 7:", len(seven), "исходов, P =", round(len(seven) / total, 4))

# Событие: обе кости одинаковы (дубль)
doubles = [o for o in outcomes if o[0] == o[1]]
print("Дубль:", len(doubles), "исходов, P =", round(len(doubles) / total, 4))

Вывод:

Всего исходов: 36
Сумма = 7: 6 исходов, P = 0.1667
Дубль: 6 исходов, P = 0.1667

Частотный смысл: закон больших чисел

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

import random
random.seed(42)

def freq_heads(n):
    heads = sum(1 for _ in range(n) if random.random() < 0.5)
    return heads / n

for n in [10, 100, 1000, 100000]:
    print(f"{n:6} бросков: доля орлов = {round(freq_heads(n), 3)}")

Вывод:

    10 бросков: доля орлов = 0.6
   100 бросков: доля орлов = 0.49
  1000 бросков: доля орлов = 0.482
100000 бросков: доля орлов = 0.5

На 10 бросках частота скачет (0.6), но с ростом числа испытаний она уверенно сходится к теоретической вероятности 0.5. Именно поэтому модели учат на больших данных: больше наблюдений — точнее оценка вероятностей.

Свойства вероятности

ПравилоСмысл
0 ≤ P(A) ≤ 1вероятность между «невозможно» и «точно»
P(достоверного) = 1хоть какой-то исход случится точно
P(не A) = 1 − P(A)вероятность противоположного события
Сумма по всем исходам = 1вероятности всех исходов в сумме дают 1

Итог

  • Вероятность — число от 0 до 1; для равновозможных исходов это доля благоприятных.
  • Частотный смысл: вероятность — предел частоты в длинной серии испытаний (закон больших чисел).
  • На малых выборках частота скачет, на больших сходится к теоретической вероятности.
  • В ML предсказания и функции потерь говорят на языке вероятностей.
Проверьте себя
1. Чему равна вероятность выпадения суммы 7 при броске двух костей?
A1/6
B1/12
C1/36
D7/36
2. Что утверждает закон больших чисел?
AВ каждом броске вероятность меняется
BС ростом числа испытаний частота события сходится к его вероятности
CБольшие числа невозможно посчитать
DВероятность всегда равна 0.5
3. Чему равна вероятность события «не A», если P(A) = 0.3?
A0.3
B0.7
C1.3
D0
Поддержать проект