Случайные величины и распределения
Язык вероятностей, на котором говорит LLM — распределения, матожидание и дисперсия, условная вероятность и формула Байеса, а главное — как модель «бросает кубик» по своему категориальному распределению.
Зачем это нужно
Заголовок раздела «Зачем это нужно»Задайте DeepSeek или Qwen один и тот же вопрос дважды — ответы будут разными. Дело не в поломке: большая языковая модельбольшая языковая модель (БЯМ, LLM)EN large language model (LLM)В китайском «большая модель» («да мосин») — разговорное общее название для LLM и вообще foundation models. не выдаёт «единственно верное» слово. На каждом шаге она выдаёт распределение вероятностей на всех токенах словаря, а потом «бросает кубик». Чтобы понимать, что происходит при генерации, обучении и оценке моделей, нужен язык вероятностей.
Вероятность в LLM повсюду:
- генерация — это сэмплирование из распределения модели;
- loss — это среднее по случайным батчам, то есть математическое ожидание;
- оценка — случайна: модель решает задачу «в 7 случаях из 10», и надо понимать, насколько верить этому числу;
- обучение с подкреплением (GRPO у DeepSeek) генерирует группу случайных ответов и сравнивает их между собой.
В этом уроке пять идей: случайная величина, распределение (дискретное и непрерывное), матожидание и дисперсия, условная вероятность с формулой Байеса и, наконец, категориальное распределение — то, что выдаёт языковая модель.
Случайная величина и распределение
Заголовок раздела «Случайная величина и распределение»случайная величинаслучайная величинаEN random variableЧисло (или токен), значение которого определяется случаем. Обозначают заглавной буквой — X, Y. — это число (или токен), которое определяется случаем. Её обозначают заглавной буквой: , . Примеры:
- — что выпало на кубике: 1, 2, …, 6;
- — верен ли ответ модели на задачу: 1 (верно) или 0 (неверно);
- — длина ответа модели в токенах;
- — номер следующего токена в словаре из 151 936 токенов Qwen.
распределение вероятностейраспределение вероятностейEN probability distributionВсе значения случайной величины с их вероятностями (или плотностью). Сумма вероятностей равна 1. — полный список: какие значения может принять величина и с какой вероятностью. Запись читается «вероятность того, что равно 3, — одна шестая». Короче пишут .
У любого распределения два железных правила:
- каждая вероятность лежит от 0 до 1: ;
- сумма по всем значениям равна 1: — что-то обязательно произойдёт.
Откуда берутся вероятности? Самый практичный взгляд — частотный: если повторять опыт много раз, доля исходов приближается к . В уроке 0.3.3 вы видели это на нечестной монете: при бросков частота орлов отличалась от 0.7 меньше чем на 0.001. Это закон больших чиселзакон больших чиселEN law of large numbersПри большом числе независимых повторений среднее (и частота) приближается к матожиданию (и вероятности)., и на нём держится вся статистика ML: мы никогда не знаем «истинных» вероятностей, но можем оценить их по большой выборке.
Дискретные распределения
Заголовок раздела «Дискретные распределения»Дискретная величина принимает отдельные значения, которые можно перечислить: грани кубика, токены словаря, число верных ответов. Четыре распределения покрывают почти все дискретные случаи в курсе.
| Распределение | Значения | Параметры | Где в LLM |
|---|---|---|---|
| Бернуллираспределение БернуллиEN Bernoulli distributionВеличина принимает 1 с вероятностью p и 0 с вероятностью 1 − p. Пример — награда «верно/неверно». | 0 или 1 | — вероятность единицы | награда «верно/неверно» в RL |
| Равномерное дискретное | свежая модель «не знает ничего» | ||
| Биномиальноебиномиальное распределениеEN binomial distributionЧисло успехов в n независимых испытаниях Бернулли; P(k) = C(n, k)·pᵏ·(1 − p)ⁿ⁻ᵏ. | попыток, | сколько из ответов верны | |
| Категориальноекатегориальное распределениеEN categorical distributionРаспределение на K исходах с вероятностями p₁…p_K. Выход softmax в LLM — категориальное распределение на словаре. Не путать с мультиномиальным (multinomial) — это число исходов каждого типа за n бросков. | следующий токен |
Бернулли: одна монета
Заголовок раздела «Бернулли: одна монета»Модель решает задачу верно с вероятностью . Награда равна 1 при верном ответе и 0 при неверном: , . Это распределение Бернулли — самое простое из всех. Именно такие награды использовала DeepSeek-R1 при обучении рассуждениям: ответ на математическую задачу либо сошёлся с эталоном, либо нет.
Биномиальное: n монет подряд
Заголовок раздела «Биномиальное: n монет подряд»Пусть модель делает независимых попыток с . Сколько из них окажутся верными? Вероятность ровно верных попыток:
Читаем: («цэ из эн по ка», число сочетаний из урока 1.0.5) — сколькими способами можно выбрать, какие именно попыток удались;
— все они удались; — все остальные провалились. Для и способов десять: удачными
могут быть попытки 1 и 2, 1 и 3, …, 4 и 5. Формула , а в Python —
math.comb(5, 2). Итого .
Полезный частный случай — «хотя бы одна попытка верна». Проще посчитать обратное событие «все неверны»: . На этом построена метрика pass@k из бенчмарков по коду (бенчмарк — стандартный набор задач для сравнения моделей, ступень 7): даже слабая модель с при пяти попытках решает задачу в 83% случаев.
Категориальное: кубик с K гранями
Заголовок раздела «Категориальное: кубик с K гранями»Обобщение Бернулли на исходов. Именно его выдаёт языковая модель: логиты проходят через softmax (урок 1.3.2), и получается категориальное распределение на всём словаре. Для контекста «Карп прыгает через…» оно может выглядеть так:
| Токен | врата | реку | волну | камень | небо |
|---|---|---|---|---|---|
| 0.71 | 0.12 | 0.08 | 0.05 | 0.04 |
На самом деле токенов не пять, а около 150 тысяч, и у большинства вероятность крошечная. Как выбрать из такого распределения один токен — в последнем разделе урока.
Непрерывные распределения и плотность
Заголовок раздела «Непрерывные распределения и плотность»Вес нейросети, время ответа сервера, рост человека — непрерывные величины: между любыми двумя значениями есть бесконечно много промежуточных. Здесь возникает парадокс: вероятность того, что вес равен ровно 0.5000000…, равна нулю. Значений бесконечно много, и на каждое отдельное не достаётся ничего.
Поэтому для непрерывных величин говорят о вероятности попасть в интервал. Её задаёт плотность вероятностиплотность вероятностиEN probability density function (PDF)Для непрерывных величин — «вероятность на единицу длины». Вероятность интервала — площадь под кривой; сама плотность может быть больше 1. — кривая, площадь под которой на отрезке и есть . Вся площадь под кривой равна 1. Это та же гистограмма из урока 0.3.3, только со всё более узкими столбиками и нормировкой на площадь.
Плотность — не вероятность, это «вероятность на единицу длины». Поэтому она может быть больше 1: если вся вероятность сосредоточена на отрезке длиной 0.1, плотность там равна 10.
Два главных непрерывных распределения
Заголовок раздела «Два главных непрерывных распределения»равномерное распределениеравномерное распределениеEN uniform distributionВсе значения на отрезке (или все K исходов) равновероятны. U[0, 1) — то, что возвращает random(). : плотность равна 1 на отрезке от 0 до 1 и 0 вне его.
— просто длина отрезка. Это то, что возвращает rng.random(), и, как вы увидите ниже,
из него можно получить сэмпл любого другого распределения.
нормальное (гауссовское) распределениенормальное (гауссовское) распределениеEN normal (Gaussian) distribution«Колокол» N(μ, σ²). Правило 68–95–99.7 — доля значений в пределах 1, 2 и 3 σ от среднего. — знаменитый «колокол»:
Читаем: («мю») — центр колокола, («сигма») — его ширина. Запись — та же экспонента (урок 1.0.2), так пишут, когда показатель длинный. Экспонента от минус квадрата расстояния быстро гасит всё, что далеко от центра: в точке показатель равен 0 и , а уже при он равен и . Множитель перед экспонентой нормирует площадь на 1. Запоминать формулу не нужно. Нужно правило 68–95–99.7: в пределах лежит 68% значений, — 95%, — 99.7%.
Пример из практики: в GPT-2 и nanoGPT веса линейных слоёв инициализируют — задают перед обучением случайными числами — из , то есть с и . Значит, 95% весов лежат в . Пик плотности при этом равен — наглядное доказательство того, что плотность бывает больше единицы. Чем уже колокол, тем он выше: площадь обязана остаться равной 1.
xychart-beta title "Плотность нормального распределения: σ = 1 и σ = 0.25" x-axis "x" -3 --> 3 y-axis "плотность p(x)" 0 --> 1.7 line [0, 0.01, 0.01, 0.01, 0.02, 0.02, 0.03, 0.04, 0.05, 0.07, 0.09, 0.11, 0.13, 0.16, 0.18, 0.21, 0.24, 0.27, 0.3, 0.33, 0.35, 0.37, 0.39, 0.4, 0.4, 0.4, 0.39, 0.37, 0.35, 0.33, 0.3, 0.27, 0.24, 0.21, 0.18, 0.16, 0.13, 0.11, 0.09, 0.07, 0.05, 0.04, 0.03, 0.02, 0.02, 0.01, 0.01, 0.01, 0] line [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0.07, 0.22, 0.52, 0.97, 1.41, 1.6, 1.41, 0.97, 0.52, 0.22, 0.07, 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
| Дискретная величина | Непрерывная величина | |
|---|---|---|
| Значения | можно перечислить | любые на отрезке |
| Описание | вероятности | плотность |
| Нормировка | площадь под кривой | |
| может быть больше 0 | всегда 0 | |
| Примеры в LLM | токены, награды 0/1 | веса, шум, эмбеддинги |
Матожидание: среднее «в долгую»
Заголовок раздела «Матожидание: среднее «в долгую»»Сколько в среднем выпадает на кубике? Повторите бросок миллион раз и усредните — получится около 3.5. Это число называется математическое ожиданиематематическое ожидание (матожидание)EN expected value (expectation)E[X] = Σ x·p(x) — среднее значение «в долгую», центр тяжести распределения. и считается без экспериментов, как взвешенная сумма:
Читаем: «каждое значение умножаем на его вероятность и складываем». Для кубика . Обратите внимание: на кубике 3.5 не выпадает никогда. Матожидание — это не «самое вероятное значение», а центр тяжести распределения.
Пример с LLM. Модель отвечает коротко (100 токенов) с вероятностью 0.5, средне (200) — с вероятностью 0.3 и длинно, с рассуждениями (1000), — с вероятностью 0.2. Средняя длина ответа:
Редкие длинные ответы дают почти две трети средней длины. Именно так инженеры прикидывают стоимость инференса.
Для непрерывных величин сумма превращается в интеграл: . Значок — вытянутая буква S от слова «сумма»: интеграл — это сумма по бесконечно тонким столбикам гистограммы, то есть площадь под кривой. Считать интегралы в курсе не придётся, достаточно читать их как «взвешенную сумму по всем значениям». У нормального распределения .
Линейность — главное свойство
Заголовок раздела «Линейность — главное свойство»Второе равенство верно всегда, даже если и зависят друг от друга. Это сильно упрощает выкладки: средняя длина диалога из двух ответов — сумма средних длин ответов.
Loss — это матожидание
Заголовок раздела «Loss — это матожидание»В уроке 1.0.3 вы встречали запись . Теперь её можно прочитать полностью: «матожидание функции потерь , когда пример выбирается из распределения данных ». Настоящая цель обучения — средняя ошибка по всем возможным текстам. Посчитать её нельзя, поэтому её оценивают средним по батчу:
Закон больших чисел обещает, что при большом батче оценка близка к истине. На этой идее стоит стохастический градиентный спуск (урок 1.4.1).
Дисперсия: насколько разбросаны значения
Заголовок раздела «Дисперсия: насколько разбросаны значения»Две модели дают ответы средней длины 310 токенов. Но первая всегда пишет примерно 310, а вторая — то 100, то 1000. Разницу измеряет дисперсиядисперсияEN varianceVar[X] = E[(X − E[X])²] — средний квадрат отклонения от матожидания. — средний квадрат отклонения от матожидания:
Читаем первую форму: «отклонение от среднего, в квадрате, усреднённое по распределению» — та же дисперсия, что в уроке 1.0.3, только вместо деления на каждое значение взвешено своей вероятностью. Вторая форма, «среднее квадрата минус квадрат среднего», — та же величина после раскрытия скобок; ей удобнее считать руками.
У дисперсии неудобные единицы — «токены в квадрате». Поэтому чаще смотрят на стандартное отклонениестандартное отклонениеEN standard deviationКорень из дисперсии; измеряется в тех же единицах, что и сама величина. : оно в тех же единицах, что и сама величина.
Для примера с длинами: , , токенов. Разброс больше самого среднего — типичная картина для моделей, которые иногда «задумываются».
Для Бернулли с параметром : . Значения 0 и 1 в квадрате не меняются, поэтому и , а по второй форме . При дисперсия равна . Максимум — при : монета 50 на 50 самая непредсказуемая.
Два свойства, которые объясняют батчи
Заголовок раздела «Два свойства, которые объясняют батчи»- — масштаб входит в квадрате.
- Если и независимынезависимость (случайных событий и величин)EN statistical independenceP(A ∩ B) = P(A)·P(B) — знание одного не меняет вероятность другого. Токены в тексте зависимы. (значение одной ничего не говорит о другой, как два броска монеты; точное определение — в разделе «Независимость» ниже), то .
Из этого следует важный факт. Среднее независимых величин с дисперсией имеет дисперсию и стандартное отклонение . Откуда: сумма величин имеет дисперсию (второе свойство), а деление на уменьшает её в раз (первое свойство с ): . Числа: у награды с стандартное отклонение , а у средней награды по 100 попыткам — . Отсюда формула из урока 0.3.3. Отсюда же правило для обучения: увеличили батч в 4 раза — шум оценки градиента уменьшился в 2 раза, а не в 4.
Проверим всё в NumPy — теорию и симуляцию:
import numpy as np
lengths = np.array([100, 200, 1000]) # длина ответа в токенахp = np.array([0.5, 0.3, 0.2]) # вероятности
mean = np.sum(lengths * p) # E[X]var = np.sum((lengths - mean) ** 2 * p) # Var[X] = E[(X − E[X])²]print(mean, var, np.sqrt(var))
rng = np.random.default_rng(42)sample = rng.choice(lengths, size=100_000, p=p) # 100 000 «ответов»print(sample.mean(), sample.var(), sample.std())310.0 120900.0 347.7067730142742309.609 120441.76711900001 347.0472116571462Симуляция на 100 000 сэмплах почти совпала с формулами.
Условная вероятность
Заголовок раздела «Условная вероятность»Вероятность меняется, когда мы что-то узнаём. Вероятность слова «врата» в случайном месте текста ничтожна, а после «Карп прыгает через» — велика. Это условная вероятностьусловная вероятностьEN conditional probabilityP(A | B) = P(A ∩ B) / P(B) — вероятность A, если известно, что B произошло. В общем случае P(A | B) ≠ P(B | A).: читается «вероятность при условии » — та самая вертикальная черта из урока 1.0.3.
Здесь — совместная вероятностьсовместная вероятностьEN joint probabilityP(A ∩ B) или P(A, B) — вероятность того, что произошли оба события., вероятность того, что произошли оба события. Смысл формулы: узнав , мы оставляем только те исходы, где случилось, и смотрим, какую долю среди них занимает .
Пример. В корпусе 1000 документов:
| с кодом | без кода | всего | |
|---|---|---|---|
| русский | 60 | 540 | 600 |
| китайский | 80 | 320 | 400 |
| всего | 140 | 860 | 1000 |
- ;
- — среди китайских документов код встречается чаще;
- .
Последние два числа разные: в общем случае . Путать их — самая частая ошибка в теории вероятностей.
От условной вероятности к языковой модели
Заголовок раздела «От условной вероятности к языковой модели»Перепишем определение: . Применив это правило несколько раз подряд, получаем цепное правило вероятностицепное правило вероятностиEN chain rule of probabilityP(x₁, …, x_T) = ∏ P(x_t | x₁, …, x_{t−1}). Точное тождество, а не приближение. — главную формулу языкового моделирования:
Вероятность текста — произведение вероятностей каждого токена при условии всех предыдущих. Если , и , то продолжение «прыгает через врата» после слова «Карп» имеет вероятность . Языковая модель (ступень 4) учится выдавать именно эти условные вероятности.
Независимость
Заголовок раздела «Независимость»События независимы, если знание одного не меняет вероятность другого: , или, что то же самое, . Броски монеты независимы. Токены в тексте — нет: иначе контекст был бы бесполезен и языковые модели не работали бы. В примере с корпусом язык и наличие кода зависимы, потому что .
Формула Байеса: переворачиваем условие
Заголовок раздела «Формула Байеса: переворачиваем условие»Часто известно , а нужно наоборот. Переворачивает условие формула (теорема) Байесаформула (теорема) БайесаEN Bayes' theoremP(H | E) = P(E | H)·P(H) / P(E) — переворачивает условие. Апостериорная ∝ правдоподобие × априорная.:
У каждой части есть имя:
- — априорная вероятностьаприорная вероятность (prior)EN prior probabilityВероятность гипотезы до наблюдения данных.: во что мы верили до наблюдения;
- — правдоподобие (likelihood): насколько ожидаемо наблюдение, если гипотеза верна. Это то же слово, что в методе максимального правдоподобия из урока 1.3.2;
- — апостериорная вероятностьапостериорная вероятность (posterior)EN posterior probabilityВероятность гипотезы после наблюдения данных — результат формулы Байеса.: во что стоит верить после наблюдения;
- — полная вероятность наблюдения; знак читается «не ».
Пример: детектор ИИ-текста. В университете 1% эссе написаны нейросетью. Детектор ловит 99% таких эссе и ошибочно помечает 5% честных. Детектор сработал. Какова вероятность, что эссе действительно написал ИИ?
Интуиция кричит «99%». Посчитаем на естественных частотах — представим 10 000 эссе:
- ИИ-эссе: от 10 000 = 100. Детектор пометит 99 из них.
- Честных эссе: 9 900. Детектор по ошибке пометит = 495.
- Всего пометок: , из них настоящих — 99.
Только 17%: пять срабатываний из шести — ложные. Виновата маленькая априорная вероятность: честных эссе так много, что даже 5% ложных тревог от них перевешивают все настоящие находки. Та же логика работает при фильтрации данных для претрейна (урок 5.1.2): если «плохих» документов мало, классификатор качества будет часто выбрасывать хорошие. В уроке 2.2.3 вы узнаете, что — это метрика precision.
Категориальное распределение: как LLM «бросает кубик»
Заголовок раздела «Категориальное распределение: как LLM «бросает кубик»»Соберём всё вместе. На каждом шаге генерации модель делает одно и то же:
flowchart LR A["Контекст"] --> B["Модель"] B --> C["Логиты"] C --> D["softmax"] D --> E["Категориальное<br/>распределение"] E --> F["Сэмпл u ~ U[0,1)<br/>→ токен"] F -->|"добавить к контексту"| A
Как выбрать токен по вероятностям, если в компьютере есть только равномерное random()? Работает
метод обратной функции распределения:
- Выложите вероятности в ряд на отрезке : «врата» занимают , «реку» — , «волну» — и так далее. Длина каждого кусочка равна вероятности токена.
- Концы кусочков — это накопленные суммы . Вместе они образуют функцию распределенияфункция распределения (CDF)EN cumulative distribution function (CDF)F(x) = P(X ≤ x); для дискретной величины — накопленные суммы вероятностей. Через неё сэмплируют методом обратной функции.: .
- Бросьте из и найдите кусочек, куда оно попало, — это первый , у которого .
При первая сумма больше 0.85 — это 0.91, то есть токен «волну». Чем длиннее кусочек, тем чаще в него
попадает , поэтому токены выпадают ровно с нужными частотами. Именно так устроен rng.choice(..., p=p),
обещанный в уроке 0.3.3:
import numpy as np
tokens = ["врата", "реку", "волну", "камень", "небо"]p = np.array([0.71, 0.12, 0.08, 0.05, 0.04])
cdf = np.cumsum(p) # накопленные суммы: [p1, p1+p2, p1+p2+p3, …]print(cdf)u = 0.85 # «бросок»: равномерное число из [0, 1)# searchsorted ищет в отсортированном массиве место для u; side="right" даёт первый индекс, где cdf > ui = np.searchsorted(cdf, u, side="right")print(i, tokens[i])
rng = np.random.default_rng(0)u = rng.random(100_000) # сразу 100 000 бросковidx = np.searchsorted(cdf, u, side="right") # 100 000 номеров токенов# bincount считает, сколько раз встретился каждый номер 0, 1, 2, …; делим на число бросков — получаем частотыprint(np.bincount(idx, minlength=5) / len(idx))[0.71 0.83 0.91 0.96 1. ]2 волну[0.71084 0.12096 0.07939 0.04906 0.03975]В PyTorch то же самое делается в одну строку. torch.distributions.Categorical принимает логиты прямо с выхода модели:
import torch
torch.manual_seed(0)logits = torch.tensor([3.2, 1.6, 1.1, 0.3, -0.4]) # выход модели для 5 токенов (логиты, урок 1.0.3)probs = torch.softmax(logits, dim=-1) # категориальное распределение; dim=-1 — по последней осиprint(probs)
dist = torch.distributions.Categorical(logits=logits) # «кубик» с этими вероятностямиsamples = dist.sample((10_000,)) # 10 000 «следующих токенов» (номера от 0 до 4)print(samples[:10]) # первые 10 бросковprint(torch.bincount(samples, minlength=5) / 10_000) # частоты, как np.bincount вышеtensor([0.7109, 0.1435, 0.0871, 0.0391, 0.0194])tensor([3, 0, 0, 2, 0, 1, 0, 0, 0, 0])tensor([0.7080, 0.1395, 0.0911, 0.0411, 0.0203])Конкретные сэмплы могут отличаться в другой версии PyTorch, но частоты всегда будут близки к вероятностям. Если вместо сэмпла всегда брать самый вероятный токен (argmax), получится «жадная» генерация — детерминированная, но склонная к повторам. Распределение перед броском можно «подкрутить»: температуру разберём в уроке 1.3.3, а фильтры top-k и top-p — в уроке 4.1.3.
Практика
Заголовок раздела «Практика»Реализуйте сэмплирование из категориального распределения на чистом Python — без NumPy, через накопленные суммы. Заодно напишите матожидание и дисперсию. Тесты проверят границы отрезков, токены с нулевой вероятностью, защиту от ошибок округления и то, что частоты сходятся к вероятностям.
import random
# Распределение модели после контекста «Карп прыгает через…»
TOKENS = ["врата", "реку", "волну", "камень", "небо"]
PROBS = [0.71, 0.12, 0.08, 0.05, 0.04]
def cumulative(probs):
"""Накопленные суммы: [0.5, 0.3, 0.2] → [0.5, 0.8, 1.0].
Элемент номер i — сумма probs[0] + ... + probs[i].
"""
# TODO: ваш код
...
def sample_index(probs, u):
"""Номер токена для «броска» u из [0, 1) — метод обратной функции распределения.
Верните первый индекс i, у которого накопленная сумма СТРОГО больше u.
Если такого нет (сумма probs из-за округления чуть меньше 1), верните последний индекс.
"""
# TODO: ваш код
...
def sample(probs, n, seed=0):
"""n независимых сэмплов (список индексов).
Создайте генератор rng = random.Random(seed) и n раз вызовите sample_index(probs, rng.random()).
"""
# TODO: ваш код
...
def mean_var(values, probs):
"""Матожидание и дисперсия дискретной случайной величины: (E[X], Var[X]).
E[X] = Σ x·p, Var[X] = Σ (x − E[X])²·p
"""
# TODO: ваш код
...
# Проверьте себя кнопкой «Запустить»:
print(cumulative(PROBS)) # ≈ [0.71, 0.83, 0.91, 0.96, 1.0]
print(sample_index(PROBS, 0.85)) # 2 — это TOKENS[2] = «волну»
s = sample(PROBS, 10_000, seed=1)
if s: # частоты покажутся, когда sample заработает
print([round(s.count(i) / len(s), 3) for i in range(len(PROBS))]) # близко к PROBS
print(mean_var([1, 2, 3, 4, 5, 6], [1 / 6] * 6)) # (3.5, 2.9166…)
Проверь себя
Заголовок раздела «Проверь себя»- Распределение — все значения случайной величины с их вероятностями: каждая от 0 до 1, сумма равна 1. У непрерывных величин вместо вероятностей — плотность, и единице равна площадь под ней.
- Матожидание — центр тяжести распределения, дисперсия — средний квадрат отклонения от него. Loss — это матожидание, а среднее по батчу — его оценка с шумом .
- Условная вероятность . Формула Байеса переворачивает условие, и при маленькой априорной вероятности даже точный детектор чаще ошибается, чем попадает.
- Выход LLM — категориальное распределение; генерация — сэмплирование через накопленные суммы и равномерный бросок.
Дальше: откуда берутся эти вероятности — softmax, метод максимального правдоподобия и cross-entropy (урок 1.3.2).