|
|
| Строка 1: |
Строка 1: |
| - | {{well|Статья написана с использованием LLM '''DeepSeek''' и проверена участником [[Участник:Kirill_Savitskii|К.А.Савицкий]] {{CURRENTTIME}}, {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} (UTC)}}
| + | #REDIRECT [[Вариационный автокодировщик]] |
| - | | + | |
| - | '''Вариацио́нный автоэнко́дер''' (Variational autoencoder, ''VAE'') — [[генеративная модель]], основанная на [[глубокое обучение|глубоких нейронных сетях]] и [[байесовский вывод|байесовском выводе]], которая обучается представлять данные в латентном пространстве меньшей размерности и генерировать новые правдоподобные примеры из этого пространства. В отличие от обычного [[автоэнкодер|автоэнкодера]], VAE не просто сжимает и восстанавливает данные, а строит вероятностное распределение над латентными представлениями, что позволяет осуществлять направленную генерацию, интерполяцию и редактирование атрибутов.
| + | |
| - | | + | |
| - | Модель относится к классу [[глубокие генеративные модели|глубоких генеративных моделей]] с латентными переменными и обучается методом [[стохастический градиентный спуск|стохастического градиентного спуска]] путём максимизации вариационной нижней границы правдоподобия ([[ELBO]]). Ключевой вклад оригинальной работы (Kingma & Welling, 2013) — переформулировка [[вариационный вывод|вариационного вывода]] таким образом, чтобы он был совместим с градиентной оптимизацией через трюк [[репараметризация|репараметризации]].
| + | |
| - | | + | |
| - | == Интуиция ==
| + | |
| - | Классический [[автоэнкодер]] учится отображать входной объект <tex>x</tex> в вектор скрытого кода <tex>z</tex> и восстанавливать по нему <tex>\hat{x}</tex>. Однако полученное латентное пространство часто оказывается нерегулярным — маленькие смещения в <tex>z</tex> могут приводить к бессмысленным декодированным образам, а случайный выбор <tex>z</tex> не гарантирует порождения реалистичного примера.
| + | |
| - | | + | |
| - | VAE решает эту проблему, моделируя латентное представление не как точку, а как [[вероятностное распределение]]. Энкодер выдаёт параметры [[нормальное распределение|нормального распределения]] (среднее <tex>\mu</tex> и дисперсию <tex>\sigma^2</tex>), из которого затем сэмплируется конкретный код <tex>z</tex>. Декодер, в свою очередь, задаёт распределение <tex>p(x|z)</tex>. Обучение максимизирует правдоподобие восстановленных данных, одновременно удерживая латентное распределение каждого примера близким к стандартному нормальному [[априорное распределение|априорному распределению]] <tex>\mathcal{N}(0, I)</tex>. Это обеспечивает непрерывность и гладкость латентного пространства: два близких в смысле метрики кода порождают похожие декодированные объекты.
| + | |
| - | | + | |
| - | == История развития ==
| + | |
| - | Идея объединения нейросетевых автоэнкодеров и вариационного вывода восходит к началу 2010-х годов. Первые формулировки глубоких латентных гауссовских моделей и стохастического вариационного вывода с обратным распространением ошибки появились в неопубликованных заметках 2012 года. Каноническими считаются две одновременные работы 2013–2014 годов:
| + | |
| - | | + | |
| - | * '''Auto-Encoding Variational Bayes''' (Kingma & Welling, 2013) — представила VAE в современном виде, ввела трюк репараметризации для обучения через [[стохастический градиентный спуск|SGD]], сформулировала [[ELBO]] и показала применимость к изображениям MNIST и Frey Faces.<ref>Kingma,Welling(2014) </ref>
| + | |
| - | * '''Stochastic Backpropagation and Approximate Inference in Deep Generative Models''' (Rezende, Mohamed, Wierstra, 2014) — независимо развила схожий подход, акцентировав связь с [[вариационный вывод|вариационным байесовским выводом]], и предложила нормализующие потоки для более богатых апостериорных приближений.<ref>Rezende D., Mohamed S., Wierstra D. (2014). ...</ref>
| + | |
| - | | + | |
| - | После этого последовали многочисленные расширения: Conditional VAE (Sohn et al., 2015), [[β-VAE]] (Higgins et al., 2017) для разложенных (disentangled) представлений, [[VQ-VAE]] (van den Oord et al., 2017) с дискретными латентными кодами, иерархические VAE, а также гибриды с [[нормализующий поток|нормализующими потоками]], [[диффузионная модель|диффузионными моделями]] и [[Генеративная состязательная сеть|генеративно-состязательными сетями]].
| + | |
| - | | + | |
| - | == Математические основы ==
| + | |
| - | VAE — это вероятностная модель данных <tex>x</tex> со скрытыми переменными <tex>z</tex>. Полное правдоподобие задаётся как:
| + | |
| - | | + | |
| - | <tex>p_\theta(x) = \int p_\theta(x|z) p(z) dz,</tex>
| + | |
| - | | + | |
| - | где <tex>p(z) = \mathcal{N}(z; 0, I)</tex> — [[априорное распределение]], а <tex>p_\theta(x|z)</tex> — функция правдоподобия, параметризованная декодером (обычно [[распределение Бернулли|бернуллиевское]] для бинарных данных или [[нормальное распределение|гауссовское]] с фиксированной дисперсией для непрерывных).
| + | |
| - | | + | |
| - | Прямое вычисление интеграла или максимизация <tex>\log p_\theta(x)</tex> через [[EM-алгоритм]] невозможны из-за сложности истинного [[апостериорное распределение|апостериорного распределения]] <tex>p_\theta(z|x)</tex>. Вместо этого вводится аппроксимирующее распределение (энкодер) <tex>q_\phi(z|x)</tex>, которое обучается вместе с декодером в рамках [[вариационный вывод|вариационного вывода]].
| + | |
| - | | + | |
| - | === Вариационная нижняя граница (ELBO) ===
| + | |
| - | Логарифм правдоподобия отдельного примера можно разложить как:
| + | |
| - | | + | |
| - | <tex>\log p_\theta(x) = D_{KL}\big(q_\phi(z|x) \parallel p_\theta(z|x)\big) + \mathcal{L}(\theta, \phi; x),</tex>
| + | |
| - | | + | |
| - | где <tex>D_{KL}</tex> — [[расстояние Кульбака — Лейблера]], а <tex>\mathcal{L}</tex> — вариационная нижняя граница (Evidence Lower BOund, ELBO):
| + | |
| - | | + | |
| - | <tex>\mathcal{L}(\theta, \phi; x) = \mathbb{E}_{z \sim q_\phi(z|x)} \big[ \log p_\theta(x|z) \big] - D_{KL}\big( q_\phi(z|x) \parallel p(z) \big).</tex>
| + | |
| - | | + | |
| - | Поскольку <tex>D_{KL} \ge 0</tex>, ELBO является нижней оценкой маргинального правдоподобия. Максимизация ELBO одновременно увеличивает ожидаемое правдоподобие восстановления и регуляризует апостериорное распределение энкодера, приближая его к априорному <tex>p(z)</tex>.
| + | |
| - | | + | |
| - | === Трюк репараметризации ===
| + | |
| - | Градиент ELBO по параметрам <tex>\phi</tex> энкодера содержит операцию сэмплирования <tex>z \sim q_\phi(z|x)</tex>, которая блокирует [[обратное распространение ошибки]]. Трюк репараметризации переписывает сэмплирование как детерминированную функцию от вспомогательной случайной величины <tex>\epsilon</tex>:
| + | |
| - | | + | |
| - | <tex>z = \mu_\phi(x) + \sigma_\phi(x) \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I),</tex>
| + | |
| - | | + | |
| - | где <tex>\odot</tex> — поэлементное умножение. Это позволяет градиентам свободно проходить через <tex>\mu_\phi</tex> и <tex>\sigma_\phi</tex>, и оптимизация выполняется обычным [[стохастический градиентный спуск|SGD]].
| + | |
| - | | + | |
| - | == Архитектура модели ==
| + | |
| - | Классический VAE состоит из двух нейронных сетей:
| + | |
| - | * '''Энкодер''' (вариационная аппроксимация) <tex>q_\phi(z|x)</tex> — получает на вход данные <tex>x</tex> и выдаёт параметры латентного распределения: вектор средних <tex>\mu_\phi(x)</tex> и вектор логарифмов дисперсий <tex>\log \sigma^2_\phi(x)</tex> (для численной устойчивости). Обычно это [[свёрточная нейронная сеть|свёрточная]] (для изображений) или [[полносвязная нейронная сеть|полносвязная]] архитектура.
| + | |
| - | * '''Декодер''' (генеративная модель) <tex>p_\theta(x|z)</tex> — принимает латентный вектор <tex>z</tex> и параметризует распределение данных. Для изображений часто используется [[транспонированная свёртка|транспонированная]] свёрточная сеть, выдающая параметры [[распределение Бернулли|Бернулли]] (пиксели 0/1) или среднее [[нормальное распределение|гауссовского распределения]].
| + | |
| - | | + | |
| - | На этапе обучения сначала кодируется вход, затем с помощью репараметризации получают <tex>z</tex>, после чего декодер восстанавливает <tex>\hat{x}</tex>. На этапе [[генерация данных|генерации]] новые примеры порождаются путём сэмплирования <tex>z \sim \mathcal{N}(0, I)</tex> и пропускания его через декодер.
| + | |
| - | | + | |
| - | == Латентное пространство ==
| + | |
| - | Благодаря регуляризации через KL-дивергенцию апостериорное распределение каждого примера «стягивается» к стандартному нормальному, а латентное пространство приобретает следующие свойства:
| + | |
| - | * '''Непрерывность''': близкие точки <tex>z</tex> декодируются в семантически похожие объекты.
| + | |
| - | * '''Полнота''': случайная точка, сэмплированная из <tex>p(z)</tex>, с высокой вероятностью порождает осмысленный пример.
| + | |
| - | * '''Гладкая интерполяция''': линейный переход между двумя латентными кодами даёт плавное морфирование объектов.
| + | |
| - | | + | |
| - | Эти качества делают VAE удобным для задач генерации, редактирования атрибутов (например, «добавить улыбку») и [[обучение представлений|обучения интерпретируемых представлений]].
| + | |
| - | | + | |
| - | == Обучение модели ==
| + | |
| - | Функция потерь для одного объекта <tex>x</tex> — отрицательная ELBO:
| + | |
| - | | + | |
| - | <tex>\mathcal{L}(\theta, \phi; x) = - \mathbb{E}_{z \sim q_\phi(z|x)} \big[ \log p_\theta(x|z) \big] + D_{KL}\big( q_\phi(z|x) \parallel p(z) \big).</tex>
| + | |
| - | | + | |
| - | Первый член — ошибка восстановления. Для непрерывных данных он пропорционален среднеквадратичному отклонению <tex>\|x - \hat{x}\|^2</tex>, для бинарных — перекрёстной энтропии. Второй член — [[регуляризация]], которая в гауссовском случае имеет аналитический вид:
| + | |
| - | | + | |
| - | <tex>D_{KL}\big( \mathcal{N}(\mu, \sigma^2) \parallel \mathcal{N}(0, 1) \big) = \frac{1}{2} \sum_{j=1}^{d} \big( \mu_j^2 + \sigma_j^2 - \log \sigma_j^2 - 1 \big),</tex>
| + | |
| - | | + | |
| - | где <tex>d</tex> — размерность латентного пространства. На практике часто используют весовой коэффициент <tex>\beta</tex> перед KL-слагаемым (см. [[#β-VAE|β-VAE]]), чтобы управлять балансом между качеством восстановления и регулярностью латентного пространства.
| + | |
| - | | + | |
| - | Обучение ведётся мини-батчами с помощью [[Adam|оптимизатора Adam]] или [[RMSProp]]. Поскольку ELBO — оценка правдоподобия, модель также позволяет вычислять [[перплексия|перплексию]] и сравнивать различные конфигурации.
| + | |
| - | | + | |
| - | == Основные разновидности ==
| + | |
| - | === Conditional VAE (CVAE) ===
| + | |
| - | Добавляет условие <tex>c</tex> (метка класса, атрибуты) на вход энкодеру <tex>q_\phi(z|x,c)</tex> и декодеру <tex>p_\theta(x|z,c)</tex>. Позволяет контролировать свойства генерируемых объектов.<ref>Sohn,Lee,Yan(2015)</ref>
| + | |
| - | | + | |
| - | === β-VAE ===
| + | |
| - | Вводит множитель <tex>\beta > 1</tex> перед KL-членом: <tex>\mathcal{L} = \mathbb{E}[\log p_\theta(x|z)] - \beta \, D_{KL}(q_\phi(z|x) \parallel p(z))</tex>. Более сильная регуляризация способствует выделению независимых факторов вариации в латентных размерностях (disentanglement), что улучшает интерпретируемость.<ref>Higgins,Matthey,Pal(2017)</ref>
| + | |
| - | | + | |
| - | === VQ-VAE (Vector Quantized VAE) ===
| + | |
| - | Использует дискретные латентные коды <tex>z</tex> из обучаемого словаря векторов. Априорное распределение моделируется авторегрессионно ([[PixelCNN]]). Сочетает высокое качество сжатия и генерации, активно применяется в синтезе речи и изображений.<ref>van den Oord,Vinyals,Kavukcuoglu(2017) </ref>
| + | |
| - | | + | |
| - | === Иерархические VAE ===
| + | |
| - | Вводят несколько уровней стохастических латентных переменных <tex>z_1, z_2, \dots</tex>, что позволяет улавливать глобальные и локальные структуры данных. Тренируются с использованием [[лестничные сети|лестничных сетей]] или [[нормализующие потоки|нормализующих потоков]].
| + | |
| - | | + | |
| - | === VAE-GAN гибриды ===
| + | |
| - | Совмещают декодер VAE с [[дискриминатор]]ом [[Генеративно-состязательная сеть|GAN]], где потери от GAN улучшают визуальное качество генерируемых изображений, а VAE-регуляризация стабилизирует обучение.
| + | |
| - | | + | |
| - | == Преимущества ==
| + | |
| - | * '''Принципиальная вероятностная основа''': модель явно оптимизирует оценку правдоподобия, что даёт теоретически обоснованный критерий качества и возможность байесовского вывода.
| + | |
| - | * '''Структурированное латентное пространство''': непрерывность и гладкость позволяют выполнять осмысленную интерполяцию, семантическую арифметику и направленную генерацию.
| + | |
| - | * '''Стабильное обучение''': в отличие от [[Генеративно-состязательная сеть|GAN]], VAE оптимизирует одну чёткую функцию потерь без минимаксных игр, что упрощает тренировку и снижает риск расходимости.
| + | |
| - | * '''Интерпретируемость''': модификации типа [[β-VAE]] способствуют разложению факторов вариации, что ценно для научных приложений и [[обучение представлений|обучения представлений]].
| + | |
| - | | + | |
| - | == Ограничения ==
| + | |
| - | * '''Размытость генерации''': стандартный VAE с поэлементной независимой функцией правдоподобия (MSE или кросс-энтропия) часто порождает усреднённые, размытые изображения. Это связано с тем, что модель оптимизирует пиксельное правдоподобие, а не перцептивное качество.
| + | |
| - | * '''Постериорный коллапс''': в мощных декодерах (особенно авторегрессионных) KL-член может «схлопнуться», и энкодер начнёт игнорировать вход, выдавая априорное распределение; модель превращается в обычный генератор без осмысленного латентного кода.
| + | |
| - | * '''Предположение о факторизованном апостериорном''': диагональное гауссовское приближение <tex>q_\phi(z|x)</tex> может быть недостаточно выразительным для сложных данных, что ограничивает точность приближения.
| + | |
| - | * '''Трудности с дискретными данными''': хотя VAE справляется с бинарными изображениями, моделирование текста и других дискретных последовательностей требует дополнительных приёмов ([[Gumbel-Softmax]], дискретные латентные переменные).
| + | |
| - | | + | |
| - | == Современные применения ==
| + | |
| - | * '''Генерация изображений и видео''': VAE используются как компоненты [[диффузионная модель|диффузионных моделей]] (Latent Diffusion Models, Stable Diffusion) для сжатия в латентное пространство перед диффузией.
| + | |
| - | * '''Синтез речи и музыки''': [[VQ-VAE]] и его варианты ([[WaveNet]], [[Jukebox]]) преобразуют аудиосигналы в дискретные коды и обратно, обеспечивая высококачественный нейронный синтез.
| + | |
| - | * '''Обучение разложенных представлений (disentanglement)''': [[β-VAE]] и FactorVAE применяются для выделения независимых факторов (освещение, поза, цвет) без учителя, что важно для интерпретируемого [[искусственный интеллект|ИИ]].
| + | |
| - | * '''Реконструкция и восстановление данных''': VAE используются для [[inpainting|заполнения пропущенных участков]], [[шумоподавление|шумоподавления]] и сжатия данных с контролируемым качеством.
| + | |
| - | * '''Молекулярный дизайн и биоинформатика''': генеративные VAE генерируют молекулярные структуры с заданными свойствами, в том числе в [[SMILES]]-представлениях.
| + | |
| - | | + | |
| - | == См. также ==
| + | |
| - | * [[Автоэнкодер]]
| + | |
| - | * [[Генеративно-состязательная сеть]] (GAN)
| + | |
| - | * [[Диффузионная модель]]
| + | |
| - | * [[Нормализующие потоки]]
| + | |
| - | * [[Вариационный вывод]]
| + | |
| - | * [[ELBO]]
| + | |
| - | * [[β-VAE]]
| + | |
| - | * [[VQ-VAE]]
| + | |
| - | | + | |
| - | == Примечания ==
| + | |
| - | {{примечания}}
| + | |
| - | | + | |
| - | == Литература ==
| + | |
| - | * {{статья
| + | |
| - | |автор=Kingma, D. P., Welling, M.
| + | |
| - | |заглавие=Auto-Encoding Variational Bayes
| + | |
| - | |издание=Proceedings of the International Conference on Learning Representations (ICLR)
| + | |
| - | |год=2014
| + | |
| - | |arxiv=1312.6114
| + | |
| - | |ref=Kingma
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор=Rezende, D. J., Mohamed, S., Wierstra, D.
| + | |
| - | |заглавие=Stochastic Backpropagation and Approximate Inference in Deep Generative Models
| + | |
| - | |издание=Proceedings of the 31st International Conference on Machine Learning (ICML)
| + | |
| - | |год=2014
| + | |
| - | |страницы=1278–1286
| + | |
| - | |arxiv=1401.4082
| + | |
| - | |ref=Rezende
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор=Sohn, K., Lee, H., Yan, X.
| + | |
| - | |заглавие=Learning Structured Output Representation using Deep Conditional Generative Models
| + | |
| - | |издание=Advances in Neural Information Processing Systems (NeurIPS)
| + | |
| - | |год=2015
| + | |
| - | |страницы=3483–3491
| + | |
| - | |ref=Sohn
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор=Higgins, I., Matthey, L., Pal, A. et al.
| + | |
| - | |заглавие=beta-VAE: Learning Basic Visual Concepts with a Constrained Variational Framework
| + | |
| - | |издание=Proceedings of the International Conference on Learning Representations (ICLR)
| + | |
| - | |год=2017
| + | |
| - | |ref=Higgins
| + | |
| - | }}
| + | |
| - | * {{статья
| + | |
| - | |автор=van den Oord, A., Vinyals, O., Kavukcuoglu, K.
| + | |
| - | |заглавие=Neural Discrete Representation Learning
| + | |
| - | |издание=Advances in Neural Information Processing Systems (NeurIPS)
| + | |
| - | |год=2017
| + | |
| - | |страницы=6309–6318
| + | |
| - | |arxiv=1711.00937
| + | |
| - | |ref=van_den_Oord
| + | |
| - | }}
| + | |
| - | * {{книга
| + | |
| - | |автор=Goodfellow, I., Bengio, Y., Courville, A.
| + | |
| - | |заглавие=Deep Learning
| + | |
| - | |издательство=MIT Press
| + | |
| - | |год=2016
| + | |
| - | |isbn=978-0262035613
| + | |
| - | |ref=Goodfellow
| + | |
| - | }} (Глава 20. «Deep Generative Models»).
| + | |
| - | | + | |
| - | [[Категория:Генеративные модели]]
| + | |
| - | [[Категория:Глубокое обучение]]
| + | |
| - | [[Категория:Нейронные сети]]
| + | |
| - | [[Категория:Байесовские методы]]
| + | |
| - | [[Категория:Машинное обучение]]
| + | |
| - | [[Категория:Автоэнкодеры]]
| + | |