newsmode
search
Меню
arrow_back Назад

Autoencoders and Diffusers: A Brief Comparison

auto_awesomeКраткое саммари

Юджин Ян сравнивает автоэнкодеры и диффузионные модели, показывая их сходства и ключевое различие. Автоэнкодеры — это нейросети, обученные воспроизводить вход на выходе через узкое горлышко (bottleneck), при этом существуют варианты: вариационные (VAE с распределением через reparameterization trick) и шумоподавляющие (denoising). Оба класса моделей учат низкоразмерное многообразие данных и используют похожие архитектуры — U-Net можно рассматривать как автоэнкодер с residual-связями. Главное отличие диффузионных моделей — обусловленность шагом времени (t), что позволяет одному набору параметров обрабатывать разные уровни шума: генерировать размытые изображения при высоком t и резко их детализировать при низком. Современные диффузионные модели также обусловлены текстом, что даёт возможность генерации по текстовым подсказкам.

Autoencoders and Diffusers: A Brief Comparison

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

[ deeplearning ] · 3 min read

[ deeplearning ] · 3 мин чтения

In a previous post, we discussed diffusers and the process of diffusion, where we gradually add noise to data and then learn how to remove the noise. If you’re familiar with autoencoders, this may seem similar to the denoising variant. Let’s take a look at how they compare. But first, a brief overview of autoencoders.

В предыдущем посте мы обсуждали диффузионные модели и сам процесс диффузии, в котором мы постепенно добавляем шум к данным, а затем учимся его убирать. Если вы знакомы с автоэнкодерами, это может показаться похожим на их denoising-вариант. Давайте посмотрим, как они соотносятся. Но сначала — краткий обзор автоэнкодеров.

Autoencoders are neural networks trained to predict their input: Given an input, reproduce it as the output. This is meaningless unless we constrain the network in some way. The typical constraint is a bottleneck layer that limits the amount of information that can pass through. For example, a hidden layer—between the encoder and decoder—that has a much lower dimension relative to the input. With this constraint, the network learns which information to pass through the bottleneck so that it can reproduce the output.

Автоэнкодеры — это нейронные сети, обученные предсказывать свой же вход: дан вход — воспроизведи его на выходе. Само по себе это бессмысленно, если не наложить на сеть какое-либо ограничение. Типичное ограничение — слой-«бутылочное горлышко» (bottleneck), который ограничивает объём информации, способный через него пройти. Например, скрытый слой между энкодером и декодером, имеющий заметно меньшую размерность по сравнению со входом. С таким ограничением сеть учится тому, какую информацию пропускать через bottleneck, чтобы суметь воспроизвести выход.

Autoencoder architecture with the bottleneck layer (source)

Архитектура автоэнкодера со слоем-bottleneck (источник)

A variation of the autoencoder is the variational autoencoder. Instead of mapping the input to a fixed vector (via the bottleneck layer), it maps it to a distribution. In the case of a Gaussian distribution, the mean (\(\mu\)) and variance (\(\sigma\)) of the distribution can be learned via the reparameterization trick. (Also see the informal and formal explanations for the reparameterization trick).

Один из вариантов автоэнкодера — вариационный автоэнкодер (VAE). Вместо того чтобы отображать вход в фиксированный вектор (через слой-bottleneck), он отображает его в распределение. В случае гауссовского распределения его среднее (\(\mu\)) и дисперсию (\(\sigma\)) можно выучить с помощью reparameterization trick. (См. также неформальное и формальное объяснения reparameterization trick.)

Variational autoencoder with multivariate Gaussian assumption (source)

Вариационный автоэнкодер с предположением о многомерном гауссовском распределении (источник)

Another variant is the denoising autoencoder, where the input is partially corrupted by adding noise or masking values randomly. The model is then trained to return the original input without the noise. To denoise the noisy input, the autoencoder has to learn the relationship between input values, such as image pixels, to infer the missing pieces. As a result, the autoencoder is more robust and can generalize better. (Adding noise was motivated by humans being able to recognize an object even if it’s partially occluded.)

Ещё один вариант — denoising-автоэнкодер, в котором вход частично искажается путём добавления шума или случайного маскирования значений. Затем модель обучается возвращать исходный вход без шума. Чтобы очистить зашумлённый вход, автоэнкодер должен выучить взаимосвязи между входными значениями — например, между пикселями изображения, — чтобы достроить недостающие фрагменты. В результате автоэнкодер становится более устойчивым и лучше обобщает. (Идея добавления шума была вдохновлена тем, что люди способны узнавать объект, даже если он частично закрыт.)

Denoising autoencoder with the corrupted input (source)

Denoising-автоэнкодер с искажённым входом (источник)

Put another way, autoencoders learn to map the input data in a lower-dimensional manifold of the naturally occurring data (more on manifold learning). In the case of denoising autoencoders, by mapping the noisy input to the manifold region and then decoding it, they are able to reconstruct the input without the noise.

Иначе говоря, автоэнкодеры учатся отображать входные данные в низкоразмерное многообразие естественно встречающихся данных (подробнее о manifold learning). В случае denoising-автоэнкодеров, отображая зашумлённый вход в область этого многообразия и затем декодируя его, они могут восстановить вход без шума.

I think autoencoders and diffusers are similar in some ways. Both have a similar learning paradigm: Given some data as input, reproduce it as output (and learn the data manifold in the process). In addition, both have similar architectures that use bottleneck layers, where we can view U-Nets as autoencoders with residual connections to improve gradient flow. Also, in the case of the denoising autoencoder, the approach of corrupting the input and learning to denoise it. Taken together, both models are similar in learning a lower-dimensional manifold of the data.

Мне кажется, автоэнкодеры и диффузионные модели в чём-то похожи. У обоих похожая парадигма обучения: дан некоторый набор данных в качестве входа — воспроизведи его как выход (и попутно выучи многообразие данных). Кроме того, у обоих похожие архитектуры со слоями-bottleneck: U-Net можно рассматривать как автоэнкодер с остаточными (residual) связями для улучшения распространения градиента. Также — в случае denoising-автоэнкодера — обоих сближает подход искажения входа и обучения его очищать. В совокупности обе модели похожи в том, что учат низкоразмерное многообразие данных.

The key difference lies in diffusion models conditioning on the timestep (\(t\)) as input. This allows a single diffusion model—and a single set of parameters—to handle different noise levels. As a result, a single diffusion model can generate (blurry) images from noise at high \(t\) and then sharpen them at lower \(t\). Current diffusion models also condition on text, such as image captions, letting them generate images based on text prompts.

Ключевое же различие в том, что диффузионные модели обусловлены шагом времени (\(t\)) как входом. Это позволяет одной диффузионной модели — с одним набором параметров — обрабатывать разные уровни шума. В результате одна и та же диффузионная модель может генерировать (размытые) изображения из шума при больших \(t\), а затем доводить их до резкости при меньших \(t\). Современные диффузионные модели также обусловлены текстом, например подписями к изображениям, что позволяет им генерировать изображения по текстовым подсказкам.

• • •

• • •

That’s all in this brief overview of autoencoders and how they compare with diffusion models. Did I miss anything? Please reach out!

Вот и весь краткий обзор автоэнкодеров и их сравнения с диффузионными моделями. Я что-то упустил? Пожалуйста, напишите мне!

If you found this useful, please cite this write-up as:

Если этот материал оказался полезным, пожалуйста, цитируйте его так:

Yan, Ziyou. (Dec 2022). Autoencoders and Diffusers: A Brief Comparison. eugeneyan.com. https://eugeneyan.com/writing/autoencoders-vs-diffusers/.

Yan, Ziyou. (Dec 2022). Autoencoders and Diffusers: A Brief Comparison. eugeneyan.com. https://eugeneyan.com/writing/autoencoders-vs-diffusers/.

or

или

@article{yan2022autoencoder, title = {Autoencoders and Diffusers: A Brief Comparison}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2022}, month = {Dec}, url = {https://eugeneyan.com/writing/autoencoders-vs-diffusers/} }

@article{yan2022autoencoder, title = {Autoencoders and Diffusers: A Brief Comparison}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2022}, month = {Dec}, url = {https://eugeneyan.com/writing/autoencoders-vs-diffusers/} }



Join 11,800+ readers getting updates on machine learning, RecSys, LLMs, and engineering.

К нам присоединились уже 11 800+ читателей, получающих обновления о machine learning, RecSys, LLM и инженерии.