Информационная геометрия
Экспоненциальные семейства
Гауссово распределение, Бернулли, Пуассон, гамма - выглядят совсем по-разному. Но у всех одна формула: p(x|eta) = h(x) exp(eta*T(x) - A(eta)). Это не совпадение - это экспоненциальное семейство. И именно эта форма объясняет, почему KL в VAE вычисляется аналитически, почему логистическая регрессия выпукла, почему Adam неявно делает то же что natural gradient.
- **VAE / variational inference**: ELBO содержит KL(q(z|x) || p(z)). Для гауссовых q и p это аналитически - KL = (mu^2 + sigma^2 - log(sigma^2) - 1)/2. Работает потому что оба из экспоненциального семейства - KL есть Bregman дивергенция по log-partition A(eta). Без этого - Монте-Карло на каждом шаге обучения
- **Natural gradient (Amari)**: Fisher matrix экспоненциального семейства = A''(eta) = Var[T(x)]. Натуральный шаг: theta -= alpha * A''(eta)^{-1} * grad. Adam диагонально аппроксимирует ровно это. K-FAC строит блочное приближение. Оба работают лучше SGD - потому что учитывают геометрию exp-семейства
- **GLM (generalized linear models)**: логистическая регрессия, Poisson regression, gamma regression - все частные случаи одной архитектуры. Натуральный параметр eta = w^T x, link function = отображение из mean в eta. Выпуклость гарантирована именно экспоненциальной структурой
- **Thompson sampling / bandits**: conjugate pairs (Beta-Bernoulli, Gamma-Poisson) позволяют обновлять posterior одним сложением. PyTorch distributions: kl_divergence между объектами одного экспоненциального семейства имеет closed form - именно поэтому
Предварительные знания
Каноническая форма: одна формула для всех распределений
Гауссово распределение выглядит как exp(-(x-mu)^2/2sigma^2). Бернулли - как p^x(1-p)^(1-x). Пуассон - как lambda^x exp(-lambda)/x!. На первый взгляд - три разные формулы из трёх разных учебников. На второй взгляд - одна.
Logit в логистической регрессии - это не придуманная функция связи. Это натуральный параметр Бернулли. Когда пишут `sigmoid(w^T x)` - это перевод из eta-пространства в пространство вероятностей. PyTorch поэтому имеет `BCEWithLogitsLoss` вместо `BCELoss`: работать в eta-пространстве численно стабильнее.
**Зачем нужны натуральные параметры eta?** В eta-пространстве пространство параметров выпукло. Log-likelihood вогнута по eta. Это означает: MLE имеет ровно одно решение, без локальных минимумов. Именно поэтому GLM (generalized linear models) - логистическая регрессия, Poisson regression - оптимизируются без проблем с выпуклостью.
Гауссово распределение в канонической форме (полный разбор)
N(mu, sigma^2) - два натуральных параметра
p(x; mu, sigma^2) = (1/sqrt(2pi sigma^2)) exp(-(x-mu)^2 / 2sigma^2) Раскрываем: -(x-mu)^2 / 2sigma^2 = -x^2/(2sigma^2) + mu*x/sigma^2 - mu^2/(2sigma^2) Это eta^T T(x) - A(eta) с: eta1 = mu/sigma^2 <- натуральный параметр для среднего eta2 = -1/(2sigma^2) <- натуральный параметр для дисперсии T(x) = [x, x^2] <- вектор достаточных статистик A(eta) = -eta1^2/(4*eta2) + (1/2) log(-pi/eta2) h(x) = 1 Из eta обратно в (mu, sigma^2): sigma^2 = -1/(2*eta2) mu = -eta1/(2*eta2) VAE использует это: encoder предсказывает [mu, log_sigma] - это eta-параметризация гауссовского posterior q(z|x).
Натуральный параметр eta для Бернулли(p) равен log(p/(1-p)). Как называется обратная функция: p = sigma(eta)?
A(eta): функция, которая знает всё о распределении
Log-partition function A(eta) - это нормировочная константа. Скучное название для объекта с удивительным свойством: все моменты распределения прячутся в её производных.
**A''(eta) = Var[T(x)]** - это не теорема, это то же самое, что матрица Фишера. Точнее: Fisher matrix экспоненциального семейства есть в точности матрица вторых производных A(eta). Поэтому натуральный градиент в экспоненциальном семействе вычисляется аналитически - без обращения матрицы. Это то, что делает variational inference в VAE трактабельным.
**ELBO в VAE и экспоненциальное семейство**: когда encoder предсказывает q(z|x) = N(mu, sigma^2), KL(q||p) вычисляется аналитически: KL(N(mu, sigma^2) || N(0,1)) = (mu^2 + sigma^2 - log(sigma^2) - 1)/2. Это работает потому что оба - Гауссы (одно семейство), и KL между ними - разность log-partition functions по Bregman. Если бы q(z|x) не из экспоненциального семейства - ELBO потребовал бы численного Монте-Карло на каждом шаге.
Natural gradient в экспоненциальном семействе
Почему Amari natural gradient - это просто A''(eta)^{-1} grad
Стандартный градиентный спуск: eta <- eta - alpha * grad_eta L Проблема: шаг в eta-пространстве игнорирует кривизну. Натуральный градиент (Amari 1998): eta <- eta - alpha * I(eta)^{-1} * grad_eta L Для экспоненциального семейства: I(eta) = A''(eta) = Var[T(x)] <- Fisher = гессиан A Поэтому натуральный шаг: eta <- eta - alpha * Var[T(x)]^{-1} * grad L Это ровно то, что делает Adam в предположении диагональности: theta <- theta - alpha * diag(v)^{-1} * grad (где v ≈ E[g^2] ≈ диаг Fisher) K-FAC (Martens 2015) строит блочную аппроксимацию A''(eta) для нейросетей с exp-family выходами (softmax, sigmoid).
Для Пуассона dA/d(eta) = exp(eta) = lambda. Что даёт вторая производная d^2A/d(eta)^2?
Сопряжённые прайоры: почему beta-binomial и gamma-Poisson замкнуты
Байесовское обновление в общем случае - это численная интеграция. Взял prior p(theta), умножил на likelihood p(x|theta), нормировал - получил posterior. Для произвольных prior и likelihood нормировка неаналитична. Но для экспоненциального семейства существует класс priors, где всё замыкается в формулу.
Beta distribution - это тоже экспоненциальное семейство по параметру p. Conjugate prior является "самосогласованным" в смысле формы: prior и posterior одного класса. Это не математическое совпадение - это следствие того, что likelihood из экспоненциального семейства входит в posterior линейно через T(x).
Variational inference в большинстве probabilistic frameworks (Pyro, NumPyro, Stan) использует именно это. Когда пишут `q(z) = Normal(mu, sigma)` для gaussian prior - posterior обновляется аналитически. Edward2 (Google), Turing.jl - под капотом ищут conjugate пары, чтобы заменить MCMC аналитическими обновлениями. Это называется conjugate Bayes или collapsed inference.
| Likelihood | Conjugate prior | Параметр | Применение в ML |
|---|---|---|---|
| Bernoulli | Beta(alpha, beta) | p - вероятность успеха | Thompson sampling в bandits |
| Poisson | Gamma(a, b) | lambda - частота событий | Моделирование кликов, событий |
| Gaussian (mu) | Gaussian(mu0, tau) | mu - среднее | Gaussian process regression |
| Categorical | Dirichlet(alpha) | p - вектор вероятностей | LDA, topic models, prior в softmax |
| Gaussian (sigma^2) | Inverse-Gamma(a, b) | sigma^2 - дисперсия | Байесовская линейная регрессия |
**PyTorch distributions и ExponentialFamily**: `torch.distributions.Bernoulli`, `Poisson`, `Normal`, `Gamma` - все наследуют от `ExponentialFamily`. Метод `log_prob` использует `_natural_params` и `_log_normalizer` (то же что A(eta)). `torch.distributions.kl_divergence` имеет closed-form для пар из одного семейства - именно потому что KL = Bregman дивергенция по A(eta).
Conjugate priors - удобный математический трюк без глубокого смысла
Conjugate priors - следствие структуры экспоненциального семейства: prior имеет форму exp(eta*chi - nu*A(eta)), что при умножении на likelihood exp(eta*T(x) - A(eta)) даёт posterior той же формы
Понимание через exp-семейство объясняет ПОЧЕМУ conjugacy работает и позволяет выводить conjugate priors систематически, а не запоминать таблицу пар
Thompson sampling для multi-armed bandit с Bernoulli наградами использует Beta prior. После 10 наград из 30 попыток для руки k, posterior равен Beta(alpha + 10, beta + 20). Что это означает в контексте экспоненциального семейства?
Что унести из урока
- **Каноническая форма p(x|eta) = h(x) exp(eta*T(x) - A(eta))**: eta - натуральный параметр, T(x) - достаточная статистика, A(eta) - log-partition. Гаусс, Бернулли, Пуассон, Дирихле - всё это частные случаи
- **A'(eta) = E[T(x)], A''(eta) = Var[T(x)]**: log-partition кодирует все моменты. Первая производная - среднее, вторая - дисперсия. Fisher matrix = A''(eta). Natural gradient = A''(eta)^{-1} grad
- **Conjugate priors**: prior вида exp(eta*chi - nu*A(eta)) обновляется аналитически - posterior той же формы с chi += sum(T(x_i)), nu += n. Beta-Bernoulli, Gamma-Poisson, Dirichlet-Categorical - всё одна структура
- **Почему это важно для ML**: VAE - KL аналитически, GLM - выпуклость, Adam/K-FAC - аппроксимация A''(eta), Thompson sampling - posterior в одну строку. PyTorch `ExponentialFamily` - не случайный класс, а ключевой абстрактный тип
Куда дальше
Экспоненциальные семейства - мост между статистикой и геометрией. Следующий шаг - дивергенции и двойственная плоская структура.
- KL и Bregman дивергенции — KL между двумя распределениями из одного exp-семейства - это Bregman дивергенция по A(eta)
- Двойственно плоские многообразия — Exp-семейства - главный пример dually flat structure (e-flat и m-flat координаты)
- Натуральный градиент — Fisher = A''(eta) для exp-семейства - это делает natural gradient аналитическим
- MLE и достаточные статистики — MLE для exp-семейства - замкнутое уравнение через E[T(x)]: A'(eta_hat) = mean(T(x_i))
Вопросы для размышления
- PyTorch `torch.distributions` имеет класс `ExponentialFamily` с методами `_natural_params`, `_log_normalizer`, `_mean_carrier_measure`. Зная что A'(eta) = E[T(x)] и A''(eta) = Fisher, как должен работать метод `entropy()` для любого exp-семейства - без знания конкретного распределения?
- VAE использует гауссовый posterior q(z|x) = N(mu, sigma^2). Если заменить его на распределение Laplace (тоже из exp-семейства) - ELBO сохранит аналитическую форму? Что изменится в KL-терме?
- Natural gradient descent для логистической регрессии использует A''(eta) = p(1-p). При p -> 0 или p -> 1 этот множитель стремится к 0 - шаг натурального градиента растёт. Это баг или фича? Как это связано с тем, что Fisher information для Бернулли = 1/(p(1-p)) растёт у границ?
Связанные уроки
- ig-02-fisher-metric — Fisher metric экспоненциального семейства имеет особую простоту
- ig-07-natural-gradient — Натуральный градиент в exp-семействе вычисляется через A''(eta)
- ig-04-kl-bregman — KL для exp-семейства - это Bregman дивергенция по A(eta)
- stat-03-mle — MLE в exp-семействе - замкнутая формула через достаточные статистики
- stat-11-bayesian — Conjugate priors - частный случай exp-семейства, замкнутые обновления
- prob-09-discrete-dist — Гаусс, Бернулли, Пуассон - примеры одной формулы