Вероятность

Словарь теории меры

Почти наверное, носитель, dP/dQ — что эти слова означают на практике и зачем их знать

Шаг 51 из 117 · ~26 мин

Зачем вообще

Теория меры нужна не для того, чтобы переписать вероятность строго. Она нужна, потому что без неё часть утверждений в статьях по машинному обучению просто не читается: «pp и qq имеют общий носитель», «сходится почти наверное», «logdPdQ\log \frac{dP}{dQ}». Это не украшения — в каждом случае за словом стоит условие, при нарушении которого формула перестаёт работать.

Цель урока скромная: не построить теорию, а перевести шесть выражений на язык, на котором с ними можно работать.

P(X=x)=0P(X = x) = 0 у непрерывной величины

Самый частый камень преткновения. Если XX непрерывна, то P(X=0.5)=0P(X = 0.5) = 0 — и это не значит «невозможно».

Разрешается противоречие тем, что «невозможно» и «имеет нулевую вероятность» — разные утверждения. Невозможное событие — пустое множество. А вот отрезок [0,1][0,1] содержит несчётно много точек, и если бы каждая имела вероятность ε>0\varepsilon > 0, сумма превысила бы единицу для любого ε\varepsilon. Значит, каждая обязана иметь ноль, хотя одна из них непременно случится.

Увидеть разницу можно на CDF: у дискретной величины она лестница, и высота скачка в точке равна P(X=k)P(X = k); у непрерывной — непрерывная кривая, и скачков нет вовсе. Переключайте семейства в виджете и следите за нижним графиком.

p 0.35

вероятности P(X = k)

F(x) = P(X ≤ x) — есть ли скачки?

отметка x 0.5
среднее
0.35
дисперсия
0.227
P(X ≤ x)
0.65
Два атома. CDF скачет ровно в двух точках, и высота каждого скачка равна вероятности этого исхода. Здесь P(X = 0) отлична от нуля и её видно глазами.

Практическое следствие, которое вылезает в коде: непрерывная модель никогда не выдаёт «вероятность наблюдения». Вопрос «какова вероятность, что моя модель предсказала именно y=3.7y = 3.7» некорректен; корректен вопрос о плотности в точке или о вероятности интервала. Отсюда и то, что log-likelihood непрерывной модели бывает положительным (мы это видели на MSE), тогда как у дискретной он всегда отрицателен.

Почти наверное

XnX п.н.    P({ω:Xn(ω)↛X(ω)})=0\htmlData{k=as}{X_n \to X \ \text{п.н.}} \iff P\big(\htmlData{k=zero}{\{\omega : X_n(\omega) \not\to X(\omega)\}}\big) = 0

(a.s., «почти всюду» для мер) значит: исключения возможны, но их совокупность имеет нулевую вероятность.

Три места, где это слово несёт смысл:

  • ЗБЧ: Xˉnμ\bar{X}_n \to \mu почти наверное. Существуют последовательности бросков, где среднее не сходится (например, все орлы) — их множество непусто, но его мера равна нулю;
  • функции равны п.в.: две плотности, различающиеся в одной точке, задают одно и то же распределение. Поэтому плотность определена не однозначно, а с точностью до множества нулевой меры;
  • ReLU дифференцируема п.в.: излом в нуле — одна точка, и вероятность попасть в неё ровно нулевая. Это и есть строгое оправдание того, что автоград назначает ReLU(0)\text{ReLU}'(0) произвольно и ничего не ломается.

Носитель

— множество, где плотность не равна нулю: supp(p)={x:p(x)>0}\text{supp}(p) = \{x : p(x) > 0\}.

Условие «носитель qq содержит носитель pp» встречается постоянно, и всегда по одной причине: если q(x)=0q(x) = 0 там, где p(x)>0p(x) > 0, то отношение p/qp/q там не определено, а KL(pq)=\text{KL}(p \| q) = \infty.

задачачто требуется
importance samplingsupp(q)supp(fp)\text{supp}(q) \supseteq \text{supp}(f \cdot p), иначе оценка смещена
KL(pq)\text{KL}(p \| q)supp(q)supp(p)\text{supp}(q) \supseteq \text{supp}(p), иначе бесконечность
off-policy RLπ(as)>0μ(as)>0\pi(a \mid s) > 0 \Rightarrow \mu(a \mid s) > 0, иначе отношение неопределено
нормализующие потокипреобразование обратимо на носителе

Отсюда сугубо практическое правило: предложение всегда шире цели. Гауссиана с запасом по σ\sigma, распределение с тяжёлыми хвостами, политика с ε\varepsilon-шумом — всё это способы обеспечить покрытие носителя, и все они стоят части эффективности. Обратная ошибка бесплатной не бывает.

Производная Радона–Никодима

dPdQ\frac{dP}{dQ} — это «отношение плотностей», записанное так, чтобы не выбирать базовую меру. Когда обе меры имеют плотности относительно одной и той же базовой (обычно Лебега или счётной), это буквально

dPdQ(x)=p(x)q(x)\frac{dP}{dQ}(x) = \frac{p(x)}{q(x)}

Существует эта производная тогда, когда PP абсолютно непрерывна относительно QQ (PQP \ll Q), то есть Q(A)=0P(A)=0Q(A) = 0 \Rightarrow P(A) = 0 — тот же самый разговор про носитель, произнесённый на языке мер.

Где вы это уже видели, не зная названия:

  • вес importance sampling w=p/qw = p/q — это dPdQ\frac{dP}{dQ};
  • KL(PQ)=EP ⁣[logdPdQ]\text{KL}(P \| Q) = \mathbb{E}_P\!\left[\log \frac{dP}{dQ}\right] — блок 4;
  • отношение вероятностей политик в PPO — тоже она;
  • логарифм этого отношения в normalizing flows складывается по слоям.

То есть одно понятие обслуживает четыре разных сюжета курса, и запись через dd означает лишь «отношение мер, без привязки к тому, чем мы их измеряем».

Измеримое множество и борелевские

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

σ\sigma-алгебра F\mathcal{F} — это набор подмножеств Ω\Omega, которому мы согласились приписывать вероятность: он содержит само Ω\Omega и замкнут относительно дополнения и счётного объединения. Элементы F\mathcal{F} и называются измеримыми множествами, они же события. Слово «счётного» здесь несёт всю нагрузку: именно оно позволяет говорить о пределах последовательностей событий — а без пределов нет ни ЗБЧ, ни сходимости почти наверное из этого урока.

Борелевская σ\sigma-алгебра на R\mathbb{R} — наименьшая σ\sigma-алгебра, содержащая все интервалы; её элементы и есть борелевские множества. Практически это значит: любой интервал, любое открытое и любое замкнутое множество, любое их счётное объединение или пересечение — борелевское. Придумать неборелевское множество, не привлекая аксиому выбора, нельзя, и это ровно то, что имеется в виду, когда теорему формулируют «для всякого борелевского BB»: оговорка есть, но исключить она может лишь то, что вы всё равно никогда не напишете.

Здесь же становится понятно, зачем в блоке 0 отдельно разбирался прообраз. Случайная величина — это функция X:ΩRX : \Omega \to \mathbb{R}, измеримая в том смысле, что

X1(B)={ω:X(ω)B}Fдля любого борелевского BX^{-1}(B) = \{\omega : X(\omega) \in B\} \in \mathcal{F} \quad \text{для любого борелевского } B

То есть требование ровно одно: у вопроса «попало ли XX в BB» обязана быть вероятность. Запись P(Xx)P(X \le x), с которой начинается CDF, законна именно поэтому — (,x](-\infty, x] борелевский, значит его прообраз измерим. Никакая функция, встречающаяся в машинном обучении, этого условия не нарушает.

Чего мы не делаем

Ради честности: построение меры Лебега, интеграл Лебега и доказательства теорем о сходимости здесь не понадобятся, и мы их пропускаем сознательно. Стоит знать только, зачем эта техника существует — чтобы «вероятность» была определена согласованно на бесконечных пространствах и чтобы не возникало множеств, которым нельзя приписать меру (парадокс Банаха–Тарского — про это). Ни одна конструкция машинного обучения не требует работать с этим напрямую; требуется ровно словарь этого урока.

Источники

Проверки

0 из 2
  1. Что означают эти слова

    Отметьте все верные утверждения.

  2. Носитель решает, определена ли KL

    Даны два распределения на одном конечном наборе исходов — списки p и q, каждый суммируется в единицу.

    Реализуйте kl_diagnostics(p, q) — верните [uncovered_pq, uncovered_qp, kl_pq, kl_qp]:

    • uncovered_pq — сколько исходов, где pi>0p_i > 0, но qi=0q_i = 0. Это в точности нарушение условия supp(q)supp(p)\text{supp}(q) \supseteq \text{supp}(p);
    • uncovered_qp — то же в обратную сторону;
    • kl_pq = ipilogpiqi\sum_i p_i \log \dfrac{p_i}{q_i}, где слагаемые с pi=0p_i = 0 пропускаются (соглашение 0log0=00\log 0 = 0). Если uncovered_pq больше нуля, верните -1.0;
    • kl_qp — то же с переставленными аргументами, и та же оговорка про -1.0.

    Сентинель -1.0 однозначен, потому что KL никогда не бывает отрицательной — это неравенство Гиббса, и оно же лучшая проверка вашей реализации.

    функция kl_diagnostics

    Загрузка редактора…

    Ctrl/⌘ + Enter