Вероятность

MAP и байесовский взгляд

Prior, likelihood, posterior, evidence — и почему L2-регуляризация это гауссов prior

Шаг 46 из 117 · ~34 мин

Четыре имени в одной формуле

Правило Байеса из урока про условную вероятность, записанное для параметра, — это весь байесовский вывод целиком.

p(θD)=p(Dθ) p(θ)p(D)\htmlData{k=post}{p(\theta \mid \mathcal{D})} = \frac{\htmlData{k=lik}{p(\mathcal{D} \mid \theta)}\ \htmlData{k=prior}{p(\theta)}}{\htmlData{k=ev}{p(\mathcal{D})}}

Четыре объекта, и у каждого своя роль:

  • говорит, какие значения параметра вы считали правдоподобными до данных;
  • — то самое, что MLE максимизирует в одиночку;
  • — распределение над θ\theta, а не точка. Это то, что байесовский вывод считает ответом;
  • от θ\theta не зависит и на положение максимума не влияет — но именно он делает posterior распределением, и он же нужен для сравнения моделей.

MAP — это posterior, сжатый до точки

Считать интеграл в знаменателе дорого, а часто и невозможно. MAP отказывается от всего posterior и берёт только его максимум:

θ^MAP=arg maxθ[logp(Dθ)+logp(θ)]\hat{\theta}_{\text{MAP}} = \argmax_\theta \big[\log p(\mathcal{D} \mid \theta) + \log p(\theta)\big]

Evidence исчез, потому что от θ\theta не зависит. Осталось log-правдоподобие плюс одно слагаемое — и это слагаемое есть регуляризатор.

Переключите prior в виджете. При десяти наблюдениях MLE и MAP стоят заметно врозь; поднимите ss и ff к сотне — метки сходятся. Регуляризация не «делает оценку лучше», она добавляет фиксированное число псевдонаблюдений, и их вес падает по мере роста выборки.

L(θ)·p(θ), нормировано на пик

log L(θ) + log p(θ)

успехов s 7
неудач f 3
MLE
0.7
значение в пике
-6.11

Для Бернулли с prior Beta(α,β)\text{Beta}(\alpha, \beta) MAP считается в закрытой форме:

θ^MAP=s+α1n+α+β2\hat{\theta}_{\text{MAP}} = \frac{s + \alpha - 1}{n + \alpha + \beta - 2}

Две подстановки стоит проделать самому. При α=β=1\alpha = \beta = 1 дробь становится s/ns/n — плоский prior не меняет ничего, потому что добавляет ноль псевдонаблюдений. При α=β=2\alpha = \beta = 2 получается s+1n+2\frac{s+1}{n+2} — то самое сглаживание Лапласа из урока про непрерывные распределения, только теперь понятно, откуда оно берётся.

L2-регуляризация — это гауссов prior

Возьмите регрессию y=wx+εy = w^\top x + \varepsilon с εN(0,σ2)\varepsilon \sim \mathcal{N}(0, \sigma^2) и prior wN(0,τ2I)w \sim \mathcal{N}(0, \tau^2 I). Логарифм posterior:

logp(wD)=12σ2i(yiwxi)212τ2w2+const\log p(w \mid \mathcal{D}) = -\frac{1}{2\sigma^2}\sum_i (y_i - w^\top x_i)^2 - \frac{1}{2\tau^2}\|w\|^2 + \text{const}

Умножьте на 2σ2-2\sigma^2 и посмотрите, что получилось:

minw i(yiwxi)2+σ2τ2w2\min_w \ \sum_i (y_i - w^\top x_i)^2 + \frac{\sigma^2}{\tau^2}\|w\|^2

Это ridge-регрессия, буква в букву, с

λ=σ2τ2\lambda = \frac{\sigma^2}{\tau^2}

Отсюда сразу читаются три вещи, которые иначе приходится запоминать:

  • что означает λ\lambda. Отношение дисперсии шума к дисперсии prior. Большая λ\lambda — это либо «данные шумные», либо «я уверен, что веса малы»;
  • почему λ0\lambda \to 0 даёт MLE. Широкий prior (τ\tau \to \infty) ничего не утверждает, и слагаемое исчезает;
  • что L1 — тоже prior. Замените гауссов prior на Лапласа p(w)ew/bp(w) \propto e^{-|w|/b}, и вместо w2\|w\|^2 появится w1\|w\|_1. Разреженность Lasso — следствие того, что у Лапласа пик в нуле острый, а не гладкий.

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

Байесовский вывод против точечной оценки

MAP — это ещё не байесовский вывод, а компромисс: одна точка вместо распределения. Разница видна в трёх местах.

MLEMAPполный Байес
ответточкаточкараспределение
priorнетестьесть
evidenceне нуженне нуженнужен
неопределённость оценкинетнетесть
предсказаниеp(yθ^)p(y \mid \hat{\theta})p(yθ^)p(y \mid \hat{\theta})p(yθ)p(θD)dθ\int p(y \mid \theta)p(\theta \mid \mathcal{D})\,d\theta

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

Есть и неприятная особенность MAP, о которой обычно не говорят: аргмаксимум плотности зависит от параметризации. Перепараметризуйте θlogθ\theta \to \log\theta — и максимум плотности переедет, потому что плотность перевешивается на якобиан (это ровно урок про замену переменных). Среднее posterior так себя не ведёт. MLE от параметризации не зависит, потому что правдоподобие — не плотность по θ\theta.

Когда prior важен

Не всегда. Правило простое: вес prior измеряется в наблюдениях, и он проигрывает данным линейно по nn.

  • мало данных — prior определяет ответ. Ноль успехов из трёх: MLE говорит «невозможно», MAP с Beta(2,2)\text{Beta}(2,2) говорит 1/51/5;
  • много данных — posterior концентрируется вокруг MLE, prior не важен (пока он не назначил истинному значению нулевую вероятность — тогда никакое количество данных не поможет);
  • много параметров — prior важен снова, потому что данных на параметр мало. Weight decay в сети с миллиардом весов — это именно этот случай.

Последний пункт объясняет, почему регуляризация в глубоком обучении не факультативна: отношение числа наблюдений к числу параметров там такое, что чистый MLE переобучается всегда.

Источники

Проверки

0 из 2
  1. Регуляризатор как prior

    Отметьте все верные утверждения о MAP, prior и регуляризации.

  2. Ridge как MAP

    Одномерная регрессия через начало координат: y=wx+εy = wx + \varepsilon с εN(0,σ2)\varepsilon \sim \mathcal{N}(0, \sigma^2) и prior wN(0,τ2)w \sim \mathcal{N}(0, \tau^2).

    Реализуйте ridge_map(xs, ys, noise_var, prior_var) — верните список [w_mle, w_map, lam, shrink], где

    λ=σ2τ2,w^MLE=ixiyiixi2,w^MAP=ixiyiixi2+λ\lambda = \frac{\sigma^2}{\tau^2}, \qquad \hat{w}_{\text{MLE}} = \frac{\sum_i x_i y_i}{\sum_i x_i^2}, \qquad \hat{w}_{\text{MAP}} = \frac{\sum_i x_i y_i}{\sum_i x_i^2 + \lambda}

    а shrink — коэффициент сжатия ixi2ixi2+λ\dfrac{\sum_i x_i^2}{\sum_i x_i^2 + \lambda}.

    Формулу MAP выводить не нужно, но стоит понимать, откуда взялось +λ+\lambda в знаменателе: это производная слагаемого 12τ2w2\frac{1}{2\tau^2}w^2 из логарифма prior.

    функция ridge_map

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

    Ctrl/⌘ + Enter