Статистика

Вариационный байесовский вывод

Байесовский вывод - идеал, но вычислительно неприступен. Jordan и соавторы ввели вариационные методы в 1999. MCMC работает, но на больших данных часами. Вариационный вывод превращает интегрирование в оптимизацию - и масштабируется до миллионов параметров. Это основа VAE, диффузионных моделей и современного байесовского ML.

  • VAE (Variational Autoencoder): генеративные модели изображений - ELBO + reparameterization trick
  • Тематическое моделирование (LDA): CAVI для вывода тем из миллионов документов
  • Байесовские нейронные сети: вариационный вывод для неопределённости весов

Предварительные знания

  • Causal Inference

Вариационный вывод и ELBO

В 2013 году Kingma и Welling представили VAE: архитектуру с 784-мерным скрытым пространством, обученную через вариационный вывод на 60000 изображений MNIST. **Байесовский вывод** требует вычисления P(θ|X) = P(X|θ)P(θ)/P(X), где знаменатель P(X) = ∫P(X|θ)P(θ)dθ вычислительно неприступен. **Вариационный вывод:** аппроксимируем истинный posteriori q(θ) ≈ P(θ|X), минимизируя KL(q||P) - расстояние Кульбака-Лейблера. Эквивалентно максимизации **ELBO** (Evidence Lower BOund): log P(X) ≥ ELBO(q) = E_q[log P(X,θ)] − E_q[log q(θ)]. ELBO = log P(X) − KL(q||P(θ|X)).

**ELBO vs log P(X):** ELBO(q) = log P(X) − KL(q||P(θ|X)). Поскольку KL ≥ 0, ELBO ≤ log P(X) - это и есть нижняя граница логправдоподобия. При q = P(θ|X): KL=0, ELBO = log P(X). Поэтому максимизация ELBO ↔ минимизация KL(q||posteriori). Чем выше ELBO, тем ближе q к истинному posteriori.

ELBO(q) = log P(X) − KL(q||P(θ|X)). Алгоритм достиг ELBO = −45.3, а log P(X) = −42.1. Чему равно KL(q||P(θ|X))?

Mean-field аппроксимация и CAVI

**Mean-field аппроксимация:** q(θ) = ∏ᵢ qᵢ(θᵢ) - полное факторизованное приближение. Игнорирует зависимости между параметрами. **CAVI** (Coordinate Ascent Variational Inference): обновляет каждый фактор по очереди, удерживая остальные фиксированными. Оптимальное обновление: log q*ⱼ(θⱼ) = E_{q_{-j}}[log P(X, θ)] + const. Для экспоненциального семейства это имеет замкнутую форму.

**Дилемма вариационного вывода:** mean-field VI быстро сходится (O(n) per iteration), но занижает неопределённость из-за mode-seeking поведения KL(q||p). Альтернативы: 1. structured VI - сохраняет некоторые зависимости 2. normalizing flows - выразительные q(θ) 3. MCMC (HMC/NUTS) - асимптотически точен, но медленнее в 10 - 100 раз. Для большинства задач VI достаточно точен при большом n.

В CAVI после обновления всех факторов q_j ELBO уменьшился. Что это означает?

ADVI и автоматическое дифференцирование

**ADVI** (Automatic Differentiation Variational Inference) автоматизирует вариационный вывод: преобразует параметры к ℝ (reparam. trick), использует градиенты ELBO через автодифференцирование. **Reparameterization trick:** вместо θ ~ q(θ|φ) пишем θ = g(φ, ε), ε ~ N(0,I) - позволяет взять градиент ∇_φ ELBO через θ. Реализации: Stan ADVI, Pyro (PyTorch), NumPyro (JAX), TensorFlow Probability.

**Выбор инструмента:** Stan - зрелый, лучший NUTS-MCMC, ADVI есть; медленнее на GPU. Pyro/NumPyro - лучший для нейросетевых моделей и GPU. TFP - интеграция с TensorFlow. PyMC - Python-friendly, отличная документация. Для production VI: NumPyro на JAX - самый быстрый. Для exploratory analysis: PyMC или Stan - самый читаемый синтаксис.

Reparameterization trick: мы пишем θ = μ + σ·ε, ε ~ N(0,1) вместо θ ~ N(μ,σ²). Зачем это нужно?

Ключевые идеи

  • ELBO = E_q[log P(X,θ)] − E_q[log q(θ)] = log P(X) − KL(q||P(θ|X))
  • Максимизация ELBO ↔ минимизация KL(q||posteriori)
  • Mean-field: q(θ) = ∏qᵢ(θᵢ); теряет корреляции, но быстро сходится
  • CAVI: итеративное обновление каждого фактора, ELBO монотонно растёт
  • Reparameterization: θ = g(φ,ε), ε ~ p(ε) - делает backprop сквозь семплирование

Вариационный вывод и курс

VI объединяет байесовскую статистику и оптимизацию. ELBO - тот же объектив, что и в EM-алгоритме. VAE - VI с нейросетевыми q и P. Связь с информационной теорией через KL-дивергенцию.

  • Байесовская статистика — VI - масштабируемый алгоритм для вычисления байесовского posteriori
  • Факторный анализ и PCA — Вероятностный PCA - частный случай VI с линейным decoder и нормальным q

Вопросы для размышления

  • ELBO = E_q[log P(X|θ)] − KL(q||P(θ)). Первый член - подгонка к данным, второй - регуляризация приором. Как это связано с L2-регуляризацией в MLE? При каком приоре VI сводится к ridge regression?
  • Mean-field VI недооценивает неопределённость при скоррелированных параметрах. Как это влияет на практические решения, принятые на основе такого posteriori? Придумайте конкретный пример из ML.
  • VAE использует ELBO: ELBO = E_q[log P(X|z)] − KL(q(z|X)||P(z)). Объясните каждый член геометрически: что оптимизирует первый член, что второй, и почему VAE генерирует непрерывное латентное пространство, а автоэнкодер - нет?

Связанные уроки

  • ml-32-autoencoders
Вариационный байесовский вывод

0

1

Войти