Подробнее про перечисленные методы в Information Theory, Inference, and Learning Algorithms автора Sir David MacKay

TL;DR: все перечисленные методы — это способы избежать полного перебора скрытых возможностей. Маккей строит из них иерархию: сначала пробуем точно суммировать / интегрировать ненужные переменные; если структура цепная — используем trellis / dynamic programming; если структура графовая — message passing / belief propagation; если точность невозможна — приближаем posterior через Gaussian около пика; если хотим честно учитывать форму posterior — Monte Carlo; если обычный Monte Carlo слишком медленный — HMC, slice, annealing, overrelaxation; если нужна скорость — variational / mean-field; а graphical models и latent variable models дают язык, в котором все эти задачи формулируются.

1. Главная задача: не найти “лучший ответ”, а просуммировать все возможности

Вся эта часть книги Маккея вращается вокруг одной боли:

У нас есть наблюдаемые данные D, скрытые переменные z, параметры θ, модель H. Нужно делать вывод:

P(θ, z | D, H).

Наивно можно было бы перебрать все варианты θ и z, оценить их вероятность и нормализовать. Но это почти сразу становится экспоненциально дорого. Маккей прямо ставит вопрос: как избежать экспоненциальной стоимости полного перебора гипотез, прежде чем переходить к приближённым методам? Он разделяет точную маргинализацию на интегрирование непрерывных “nuisance parameters” и суммирование дискретных переменных через message passing. (Internet Archive)

Ключевая мысль: байесовский вывод обычно требует не максимизации, а маргинализации.

То есть не:

найди θ, который лучше всего объясняет данные

а:

учти все θ, пропорционально тому, насколько они правдоподобны после данных.

Например, предсказание для нового наблюдения должно быть:

P(x_new | D) = ∫ P(x_new | θ) P(θ | D) dθ.

Это не “вставить лучший θ”. Это усреднить по posterior.

И вот дальше начинается арсенал методов.

2. Exact marginalization: точное избавление от ненужных переменных

Exact marginalization — это операция “просуммировать” или “проинтегрировать” переменные, которые нужны для модели, но не нужны в окончательном ответе.

Допустим, у нас есть совместное распределение:

P(x, z),

где x — наблюдаемое, z — скрытое. Тогда вероятность наблюдения:

P(x) = Σ_z P(x, z).

Если z непрерывная:

P(x) = ∫ P(x, z) dz.

Это и есть маргинализация.

Почему это важно? Потому что многие ошибки в машинном обучении возникают из-за подмены маргинализации оптимизацией. Например, вместо:

P(x) = ∫ P(x | θ) P(θ) dθ

люди часто делают:

P(x | θ_best).

Маккей хочет показать, что это разные вещи. Оптимизация выбирает одну историю; маргинализация учитывает все истории.

Простой пример: у тебя есть данные из Gaussian distribution, но неизвестны mean μ и variance σ². Можно найти best-fit μ и σ, а можно проинтегрировать по их posterior. Маккей в главе 24 показывает точную маргинализацию на примере вывода среднего и дисперсии Gaussian distribution и подчёркивает роль conjugate priors, потому что они позволяют получать удобные аналитические формы posterior. (Internet Archive)

Главный инсайт:

точная маргинализация — золотой стандарт Bayesian inference, но она возможна только если математика или структура модели достаточно дружелюбны.

Она работает хорошо, когда:

  • есть conjugate priors;
  • размерность мала;
  • структура факторизуется;
  • можно использовать алгебру распределений.

Она ломается, когда:

  • слишком много скрытых переменных;
  • posterior multimodal;
  • интегралы неберущиеся;
  • граф зависимостей слишком плотный.

3. Trellises и dynamic programming: точный вывод в цепочках

Trellis — это граф состояний, разложенный по времени. Представь сетку: слева направо идут временные шаги, в каждом шаге есть возможные состояния, а пути через trellis соответствуют возможным последовательностям.

У Маккея trellis сначала появляется в контексте кодов: путь через trellis задаёт codeword, а символы считываются с рёбер этого пути. Он определяет trellis как граф с nodes/states, сгруппированными во временные срезы; рёбра соединяют соседние времена, а путь слева направо порождает кодовое слово. (Internet Archive)

Но идея гораздо шире. Trellis — это форма записи любой цепной скрытой модели:

  • hidden Markov model;
  • convolutional code;
  • последовательная модель речи;
  • динамическая Bayesian network;
  • задача выравнивания последовательностей;
  • декодирование сообщения через шумный канал.

Почему trellis полезен? Потому что он позволяет заменить полный перебор всех путей на dynamic programming.

Если длина последовательности T, а в каждом шаге S состояний, полный перебор всех траекторий стоит примерно:

S^T.

Dynamic programming использует повторяющиеся подзадачи и считает forward-сообщения:

α_t(s) = Σ_{s'} α_{t-1}(s') ψ_t(s', s).

То есть вероятность прийти в состояние s в момент t — это сумма вероятностей всех предыдущих состояний s', умноженная на вес перехода.

Если нужны posterior marginals по состояниям, добавляют backward-сообщения:

β_t(s).

Тогда:

P(state_t = s | observations) ∝ α_t(s) β_t(s).

Это forward-backward algorithm.

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

δ_t(s) = max_{s'} δ_{t-1}(s') ψ_t(s', s).

Это Viterbi algorithm.

Маккей прямо связывает forward-backward с sum-product, а min-sum / max-product — с Viterbi; в его изложении это не разные “алгоритмы из разных областей”, а разные варианты одной вычислительной идеи. (Internet Archive)

Главный инсайт:

dynamic programming работает тогда, когда будущее зависит от прошлого через компактное состояние.

Если всё прошлое можно “сжать” в состояние s_t, то не нужно помнить всю историю. Это ровно информационно-теоретический мотив Маккея: хорошее состояние — это достаточное сжатие прошлого для будущего.

4. Belief propagation и message passing: локальные сообщения вместо глобального перебора

Теперь trellis обобщается до графа.

Допустим, у нас есть некая ненормированная вероятность:

P*(x) = ∏_m f_m(x_m),

где каждый фактор f_m зависит только от небольшой группы переменных x_m.

Это можно нарисовать как factor graph:

  • кружки — переменные;
  • квадраты — факторы;
  • ребро соединяет переменную и фактор, если фактор от неё зависит.

Маккей определяет factor graph именно так: функция факторизованного вида изображается графом, где variable nodes и factor nodes соединяются, если фактор зависит от переменной. Он также подчёркивает, что даже при малых факторах точные маргиналы в общем случае экспоненциально дороги, но иногда факторизация позволяет считать их эффективно. (Internet Archive)

Message passing — это идея: вместо того чтобы собирать весь joint distribution целиком, узлы графа обмениваются локальными функциями-сообщениями.

В sum-product algorithm есть два типа сообщений.

От переменной к фактору:

q_{n→m}(x_n) = ∏_{m' ∈ N(n)\m} r_{m'→n}(x_n).

То есть переменная говорит фактору: “всё, что я знаю от остальных факторов, вот так распределено по моим значениям”.

От фактора к переменной:

r_{m→n}(x_n) = Σ_{x_m \ x_n} f_m(x_m) ∏_{n' ≠ n} q_{n'→m}(x_{n'}).

То есть фактор говорит переменной: “если учесть моё локальное ограничение и сообщения остальных переменных, вот что я сообщаю о тебе”.

Маккей даёт эти два правила как основу sum-product algorithm. После прохождения сообщений marginal у переменной получается как произведение входящих сообщений, а нормализующий constant можно получить суммированием marginal function. (Internet Archive)

На деревьях belief propagation точен. На графах с циклами он уже не гарантирует правильные marginal distributions и может не сойтись, но всё равно оказывается чрезвычайно важным на практике, особенно в декодировании sparse-graph codes. Маккей прямо пишет, что на циклических графах sum-product не обязательно сходится и в общем случае не считает правильные marginals, но имеет огромное практическое значение. (Internet Archive)

Отдельно это подтверждает классическая статья Kschischang, Frey и Loeliger о factor graphs: sum-product algorithm работает на factor graph и вычисляет marginal functions, точно или приблизительно; как частные случаи туда входят forward/backward, Viterbi, turbo decoding, Pearl belief propagation и Kalman filter. (vision.unipv.it)

Главный инсайт:

belief propagation — это distributed inference: глобальный вывод возникает из локальных сообщений.

Это один из самых красивых мостов книги: декодирование кода, hidden Markov model, Bayesian network, Kalman filtering и многие графические модели оказываются одной и той же идеей, если смотреть на них как на факторизованные вероятностные объекты.

5. Laplace approximation: “posterior похож на Gaussian около пика”

Когда exact inference невозможен, один из первых приближённых ходов — Laplace approximation.

Идея простая:

  1. Найти пик posterior, то есть MAP estimate: θ₀ = argmax P*(θ).
  2. Разложить log P*(θ) в ряд Тейлора около пика до второго порядка.
  3. Получить Gaussian approximation: Q(θ) ≈ Normal(θ₀, A^{-1}), где A — Hessian отрицательного log posterior в точке θ₀.

Маккей формулирует это именно так: берём ненормированную плотность P*(x), интересуемся её normalizing constant, предполагаем пик в x₀, Taylor-expand log density около пика и аппроксимируем P* ненормированным Gaussian. В многомерном случае нормировочная константа выражается через determinant матрицы вторых производных. (Internet Archive)

Зачем это нужно?

Во-первых, для приближённого posterior:

P(θ | D) ≈ Gaussian around MAP.

Во-вторых, для приближённого evidence:

P(D | H) = ∫ P(D | θ, H) P(θ | H) dθ.

Laplace approximation даёт не просто “лучший θ”, а приблизительный интеграл вокруг области хороших θ. Поэтому она естественно связана с Occam factor: узкий пик получает меньший объём posterior mass, широкий пик — больший.

Но есть слабость: метод видит только локальную геометрию около одного пика.

Он хорош, когда posterior:

  • unimodal;
  • гладкий;
  • примерно эллиптический;
  • достаточно хорошо описывается Gaussian.

Он плох, когда posterior:

  • multimodal;
  • skewed;
  • heavy-tailed;
  • имеет сильные нелинейные “бананы”;
  • содержит дискретные симметрии, например перестановки кластеров.

Маккей прямо мотивирует Monte Carlo тем, что Gaussian approximation не всегда адекватна; например, в clustering likelihood может быть multimodal и иметь неприятные пики, поэтому maximizing posterior и fitting Gaussian не всегда работают. (Internet Archive)

Главный инсайт:

Laplace approximation — это способ превратить сложный posterior в локальную Gaussian-картину, но она может перепутать “самую высокую точку” с “наиболее важной областью вероятностной массы”.

6. Monte Carlo methods: считать интегралы выборками

Monte Carlo — это другой подход: вместо того чтобы упрощать posterior до Gaussian, мы пытаемся брать samples из настоящего распределения и оценивать интересующие величины средними по samples.

Если нужно:

E_P[φ(x)] = ∫ P(x) φ(x) dx,

то берём samples:

x¹, x², ..., xᴿ ~ P(x)

и оцениваем:

E_P[φ(x)] ≈ (1/R) Σ_r φ(xʳ).

Маккей определяет цели Monte Carlo так: сгенерировать samples из заданного probability distribution P(x) и оценить expectations функций под этим распределением. Он также подчёркивает важное свойство: variance Monte Carlo estimate уменьшается как σ²/R; сама формула ошибки не содержит размерность пространства, хотя получить независимые samples в высокой размерности часто трудно. (Internet Archive)

Это мощно: мы можем приблизительно отвечать почти на любые вопросы о posterior, если можем сэмплировать из него.

Основные варианты:

Importance sampling. Берём samples из более удобного Q(x), а потом перевзвешиваем их отношением P*(x)/Q*(x). Работает, если Q хорошо покрывает важные области P. Плохо работает, если Q пропускает хвосты или моды.

Rejection sampling. Берём proposals из Q, принимаем с вероятностью, пропорциональной отношению target/proposal. Теоретически чисто, но в высокой размерности часто чудовищно неэффективно.

Metropolis-Hastings / MCMC. Строим Markov chain, которая в пределе имеет нужное stationary distribution. Новый sample зависит от предыдущего. Маккей подчёркивает, что Metropolis method — пример MCMC; в отличие от rejection sampling, последовательные samples зависимы, поэтому цепь может требовать долгого времени, чтобы дать effectively independent samples. (Internet Archive)

Gibbs sampling. Обновляем переменные по очереди из conditional distributions: P(x_i | x_{-i}). Очень удобен, если conditional distributions легко сэмплировать.

Slice sampling. Вводит вспомогательную вертикальную переменную и сэмплирует из области под кривой P*(x). Маккей отмечает, что slice sampling применим там, где применим Metropolis, и более устойчив к выбору параметров вроде step size. (Internet Archive)

Главный инсайт:

Monte Carlo заменяет невозможный интеграл случайным экспериментом. Но цена — корреляции, burn-in, диагностика сходимости и риск не посетить важные моды.

7. Efficient Monte Carlo: как не блуждать случайной походкой

Обычный random-walk Metropolis часто плохо масштабируется. В высокой размерности большой шаг почти всегда уходит в область низкой вероятности и отклоняется; маленький шаг принимается, но цепь движется медленно.

Efficient Monte Carlo methods — это попытка уменьшить random walk behaviour.

Главные методы у Маккея:

Hamiltonian Monte Carlo

Hamiltonian Monte Carlo добавляет искусственные momentum variables p и использует gradient log probability, чтобы двигаться вдоль траекторий, а не случайно дёргаться.

Маккей описывает HMC как Metropolis method для continuous state spaces, который использует gradient information, чтобы уменьшить random walk behaviour. Он прямо пишет: если можно вычислить не только P(x), но и gradient по x, расточительно использовать simple random-walk Metropolis, потому что gradient показывает направление к более вероятным состояниям. (Internet Archive)

Интуитивно:

  • Random-walk Metropolis похож на пьяного человека в тумане.
  • HMC похож на шарик, катящийся по энергетическому ландшафту с инерцией.

Поэтому HMC может проходить большие расстояния в posterior, сохраняя высокую acceptance probability.

Overrelaxation

Overrelaxation уменьшает случайное блуждание в Gibbs sampling. Вместо того чтобы каждый раз брать полностью случайное новое значение из conditional distribution, метод старается сделать более “направленное” обновление, особенно при коррелированных переменных. Маккей описывает overrelaxation как метод reducing random walk behaviour in Gibbs sampling; для correlated variables это может значительно уменьшать время до независимых samples. (Internet Archive)

Simulated annealing / tempering

Идея: временно “разогреть” распределение, чтобы легче перескакивать между модами.

Если target:

P(x) ∝ exp(-E(x)),

то при температуре T:

P_T(x) ∝ exp(-E(x)/T).

При большом T распределение более плоское; цепи легче выйти из локальных островов. Потом температуру постепенно снижают. Маккей описывает simulated annealing именно как введение temperature parameter, который при больших значениях разрешает переходы, маловероятные при T=1, а затем постепенно снижается. (Internet Archive)

Главный инсайт:

efficient Monte Carlo не меняет цель — сэмплировать posterior, — но меняет физику движения по posterior.

Плохой sampler тратит вычисления на коррелированные почти одинаковые точки. Хороший sampler быстрее производит effectively independent information о распределении.

8. Variational methods: inference как optimization

Variational inference делает радикальный обмен:

Вместо того чтобы сэмплировать из сложного posterior, выберем семейство простых распределений Q и найдём лучшее приближение к posterior внутри этого семейства.

То есть вместо:

P(z, θ | D),

берём:

Q(z, θ; λ),

где λ — variational parameters, и оптимизируем их.

Современная формулировка:

log P(D) = ELBO(Q) + KL(Q || P(z, θ | D)).

Так как KL ≥ 0, максимизация ELBO приближает Q к posterior.

ELBO:

ELBO(Q) = E_Q[log P(D, z, θ)] - E_Q[log Q(z, θ)].

Или:

ELBO = expected log joint + entropy of Q.

Blei, Kucukelbir и McAuliffe в обзоре формулируют variational inference как метод, который approximates difficult-to-compute probability densities through optimization: сначала задаётся family of densities, затем ищется член семейства, близкий к target; близость измеряется KL divergence. (arXiv)

У Маккея variational methods появляются как техника приближения сложных probability distributions с применениями в statistical physics, data modelling и neural networks. (Internet Archive)

Преимущество:

  • быстрее MCMC;
  • deterministic;
  • хорошо масштабируется;
  • часто удобно для больших моделей;
  • превращает inference в optimization problem.

Недостаток:

  • результат зависит от выбранного семейства Q;
  • можно получить красивое, но самоуверенное приближение;
  • multimodal posterior часто сжимается в одну моду;
  • uncertainty может быть занижена.

Маккей отдельно показывает, что variational approximation может быть “more compact than the true distribution”; это важно, потому что такое приближение как sampler может быть плохим: оно может недопокрывать хвосты и давать большую variance в importance sampling. (Internet Archive)

Главный инсайт:

Variational inference — это не “случайный sampling”, а “геометрическое сжатие posterior в удобную форму”.

Это очень в духе Маккея: опять появляется связь inference и compression.

9. Mean-field approximation: “предположим, что всё независимо”

Mean-field — самый знаменитый variational approximation.

Мы берём сложный posterior:

P(z₁, z₂, ..., z_n | D)

и аппроксимируем его факторизованным распределением:

Q(z₁, ..., z_n) = ∏_i Q_i(z_i).

То есть делаем вид, что скрытые переменные независимы под приближённым posterior.

Это, конечно, ложь. Но полезная ложь.

Дальше оптимизируем каждый фактор Q_i по очереди. Типичное обновление:

log Q_i(z_i) = E_{Q_{-i}}[log P(D, z)] + const.

Интуиция:

Обнови belief о переменной z_i, глядя на среднее поле, создаваемое всеми остальными переменными.

Отсюда название mean-field: вместо реальных зависимостей между всеми частицами / переменными каждая видит среднее воздействие остальных.

Jordan, Ghahramani, Jaakkola и Saul описывают variational methods for graphical models как способ заменить исходную сложную graphical model на упрощённую, где inference эффективен, а результат даёт bounds on probabilities of interest. В их статье прямо рассматриваются Bayesian networks, Markov random fields, Boltzmann machines и variants of hidden Markov models, где exact inference infeasible. (Springer)

Mean-field хорош, когда:

  • нужна скорость;
  • число переменных огромное;
  • зависимости слабые или можно терпеть их потерю;
  • нужно получить грубую, но масштабируемую posterior-картину.

Mean-field плох, когда:

  • переменные сильно коррелированы;
  • posterior имеет несколько мод;
  • uncertainty критична;
  • важны зависимости между скрытыми причинами.

Главный инсайт:

mean-field — это управляемая потеря зависимости ради вычислимости.

В терминах Маккея: мы заменяем реальный сложный posterior более коротким описанием. Это сжатие, но с потерями.

10. Graphical models: карта условных зависимостей

Graphical model — это вероятностная модель, где переменные являются узлами графа, а рёбра показывают зависимости или локальные взаимодействия.

Маккей даёт короткое определение: graphical model — это probabilistic model, в котором dependencies и independencies переменных представлены edges in a graph, whose nodes are variables. (Internet Archive)

Есть три основных типа:

Bayesian networks — directed acyclic graphs. Они факторизуют joint distribution как:

P(x₁, ..., x_n) = ∏_i P(x_i | parents(x_i)).

Пример: болезнь → симптом, землетрясение → сигнализация → звонок соседа.

Markov random fields — undirected graphs. Они задают joint через potential functions на кликах:

P(x) ∝ ∏_c ψ_c(x_c).

Пример: Ising model, image denoising, spatial models.

Factor graphs — bipartite graphs между variables и factors. Они явно показывают факторизацию:

P*(x) = ∏_m f_m(x_m).

Factor graphs особенно удобны для message passing. Kschischang, Frey и Loeliger подчёркивают, что factor graph визуализирует факторизацию глобальной функции как product of local functions, а sum-product использует эту структуру для marginalization. (vision.unipv.it)

Почему graphical models важны для всех методов выше?

Потому что форма графа говорит, какой inference возможен:

  • цепочка → forward-backward;
  • trellis → Viterbi / BCJR / dynamic programming;
  • дерево → exact belief propagation;
  • graph with small treewidth → junction tree;
  • loopy sparse graph → loopy belief propagation;
  • плотный сложный graph → Monte Carlo или variational inference;
  • огромная модель → mean-field / structured variational methods.

Главный инсайт:

graphical model — это не картинка для красоты; это вычислительная схема inference.

Граф показывает, где можно разорвать задачу на локальные части, а где придётся приближать.

11. Latent variable models: скрытые причины наблюдаемых данных

Latent variable model — это generative model, где наблюдаемые данные объясняются скрытыми переменными.

Общая форма:

z ~ P(z) x ~ P(x | z).

Или с параметрами:

P(x, z, θ) = P(θ) P(z | θ) P(x | z, θ).

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

Маккей пишет, что многие statistical models являются generative models, задающими full probability density по всем переменным и использующими latent variables для описания observables. Примеры у него: mixture models, где latent variables — unknown class labels; hidden Markov models; factor analysis; а также decoding error-correcting codes как latent variable model. (Internet Archive)

Примеры:

Mixture model. Данные пришли из нескольких кластеров. Скрытая переменная z_n говорит, из какого кластера пришла точка x_n.

Hidden Markov model. Есть скрытое состояние z_t, которое развивается во времени, и наблюдение x_t, зависящее от состояния.

Factor analysis / PCA-like models. Высокоразмерные данные объясняются низкоразмерными скрытыми факторами.

Independent component analysis. Наблюдаемые сигналы — смеси независимых скрытых источников. Маккей описывает ICA как простой latent variable model с continuous latent variables: наблюдение x — linear mixture скрытых source signals s, то есть x = Gs, причём mixing matrix неизвестна. (Internet Archive)

Error-correcting codes. Скрытое исходное сообщение породило наблюдаемую шумную последовательность. Декодирование — это inference о скрытых source bits.

Главный вопрос latent variable model:

Какие скрытые причины z могли породить наблюдаемые данные x?

А главный computational challenge:

Нужно одновременно infer latent variables z и learn parameters θ.

Именно здесь появляются почти все методы из твоего списка:

  • exact marginalization: суммировать по z;
  • trellis dynamic programming: если z_t образует цепочку;
  • belief propagation: если z и x образуют sparse graph;
  • Laplace: приблизить posterior по параметрам;
  • Monte Carlo: сэмплировать z и θ;
  • variational methods: заменить сложный posterior P(z, θ | x) на простой Q;
  • mean-field: предположить Q(z, θ) = Q(θ) ∏_n Q(z_n).

Главный инсайт:

latent variables — это способ сказать: данные выглядят сложными, потому что мы не видим простую скрытую структуру, которая их породила.

12. Как все методы связаны в одну карту

Маккей не даёт эти методы как разрозненный каталог. У него есть единая логика.

Сначала есть идеальный Bayesian answer:

posterior ∝ likelihood × prior.

Потом возникают нужные quantities:

  • marginal posterior;
  • predictive distribution;
  • evidence;
  • expectations;
  • most probable explanation;
  • uncertainty.

Чтобы их получить, нужно суммировать / интегрировать.

Если можно сделать точно — делаем exact marginalization.

Если модель цепная — используем trellis + dynamic programming.

Если модель факторизована как дерево — используем belief propagation / sum-product.

Если есть циклы, но treewidth мал — можно использовать junction tree, хотя сложность растёт экспоненциально с размером объединённых переменных. Маккей прямо пишет, что junction tree — распространённый точный метод для графов с циклами, но complexity растёт экспоненциально с числом agglomerated variables. (Internet Archive)

Если posterior гладкий и одномодальный — Laplace approximation.

Если нужно более честно учитывать форму posterior — Monte Carlo.

Если Monte Carlo блуждает слишком медленно — efficient Monte Carlo, например HMC, slice sampling, overrelaxation, annealing.

Если нужна скорость и масштабируемость — variational inference.

Если нужна очень простая variational family — mean-field.

А graphical models и latent variable models — это язык, на котором мы вообще формулируем задачу.

13. Самая короткая формула различий

Exact marginalization спрашивает: “Могу ли я точно просуммировать скрытые варианты?”

Trellis / dynamic programming спрашивает: “Можно ли сжать историю в состояние и переиспользовать частичные суммы?”

Belief propagation спрашивает: “Можно ли вычислить marginals через локальные сообщения в графе?”

Laplace approximation спрашивает: “Похож ли posterior около своего пика на Gaussian?”

Monte Carlo спрашивает: “Могу ли я заменить интеграл samples?”

Efficient Monte Carlo спрашивает: “Как брать samples так, чтобы они не были почти одинаковыми?”

Variational methods спрашивают: “Какое простое распределение Q лучше всего заменяет сложный posterior?”

Mean-field спрашивает: “Что будет, если Q полностью факторизовать?”

Graphical models спрашивают: “Какие зависимости в модели локальны, и как это использовать вычислительно?”

Latent variable models спрашивают: “Какие скрытые причины породили наблюдаемые данные?”

14. Главный маккеевский инсайт

Все эти методы — это разные компромиссы между тремя вещами:

точность, вычислительная стоимость, структура модели.

Маккей хочет, чтобы читатель перестал думать об алгоритмах как о наборе рецептов. Вместо этого он учит видеть одну общую задачу:

У нас есть сложное распределение вероятностей. Мы хотим извлечь из него marginals, predictions, evidence и decisions. Если структура позволяет — считаем точно. Если нет — приближаем, но осознанно понимаем, что именно потеряли.

В этом и сила этой части книги: она превращает машинное обучение из “подгонки параметров” в искусство вычисления и приближения вероятностного вывода.