Модели и платформы ИИ

Понимание моделей диффузии: глубокое погружение в генеративный ИИ

mm
Добавьте Unite.AI в избранные источники в Google

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

Введение в модели диффузии

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

Этот подход был вдохновлен термодинамикой неравновесных систем – в частности, процессом обращения диффузии для восстановления структуры. В контексте машинного обучения мы можем рассматривать это как обучение обращению постепенного добавления шума к данным.

Некоторые ключевые преимущества моделей диффузии включают:

  • Качество изображений на уровне состояния, превосходящее GAN в многих случаях
  • Стабильное обучение без противостоящих динамик
  • Высокая параллелизация
  • Гибкая архитектура – любая модель, которая сопоставляет входы с выходами одинаковой размерности, может быть использована
  • Сильная теоретическая основа

Давайте глубже рассмотрим, как работают модели диффузии.

Источник: Song et al.

Источник: Song et al.

Стохастические дифференциальные уравнения управляют прямым и обратным процессами в моделях диффузии. Прямое СДУ добавляет шум к данным, постепенно превращая их в распределение шума. Обратное СДУ, управляемое обученной функцией оценки, постепенно удаляет шум, что приводит к генерации реалистичных изображений из случайного шума. Этот подход является ключевым для достижения высококачественной генеративной производительности в непрерывных пространствах состояний.

Прямой процесс диффузии

Прямой процесс диффузии начинается с точки данных x₀, выбранной из реального распределения данных, и постепенно добавляет гауссовский шум за T временных шагов, чтобы произвести все более шумные версии x₁, x₂, …, xT.

На каждом временном шаге t мы добавляем небольшое количество шума в соответствии с:

x_t = √(1 - β_t) * x_{t-1} + √(β_t) * ε

Где:

  • β_t является графиком дисперсии, который управляет тем, сколько шума добавляется на каждом шаге
  • ε является случайным гауссовским шумом

Этот процесс продолжается до тех пор, пока xT не станет почти чистым гауссовским шумом.

Математически мы можем описать это как цепь Маркова:

q(x_t | x_{t-1}) = N(x_t; √(1 - β_t) * x_{t-1}, β_t * I)

Где N обозначает гауссовское распределение.

График β_t обычно выбирается так, чтобы быть небольшим для ранних t и увеличиваться с течением времени. Обычными выборами являются линейный, косинусный или сигмоидный графики.

Обратный процесс диффузии

Цель модели диффузии заключается в том, чтобы научиться обратному этому процессу – начать с чистого шума xT и постепенно очищать его, чтобы восстановить чистый образец x₀.

Мы моделируем этот обратный процесс как:

p_θ(x_{t-1} | x_t) = N(x_{t-1}; μ_θ(x_t, t), σ_θ^2(x_t, t))

Где μ_θ и σ_θ^2 являются обученными функциями (обычно нейронными сетями) с параметрами θ.

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

В частности, мы можем показать, что оптимальное среднее обратного процесса μ* является:

μ* = 1/√(1 - β_t) * (x_t - β_t/√(1 - α_t) * ε_θ(x_t, t))

Где:

  • α_t = 1 – β_t
  • ε_θ является обученной сетью прогнозирования шума

Это дает нам простую цель – обучить нейронную сеть ε_θ для прогнозирования шума, добавленного на каждом шаге.

Цель обучения

Цель обучения для моделей диффузии может быть получена из вариационного вывода. После некоторых упрощений мы приходим к простой функции потерь L2:

L = E_t,x₀,ε [ ||ε - ε_θ(x_t, t)||² ]

Где:

  • t выбирается равномерно из 1 до T
  • x₀ выбирается из обучающих данных
  • ε выбирается как гауссовский шум
  • x_t строится путем добавления шума к x₀ в соответствии с прямым процессом

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

Архитектура модели

Источник: Ronneberger et al.

Источник: Ronneberger et al.

Архитектура U-Net является центральной для шага денойзинга в модели диффузии. Она имеет структуру кодировщика-декодировщика со скип-соединениями, которые помогают сохранять мелкомасштабные детали во время процесса восстановления. Кодировщик прогрессивно снижает размер входного изображения, захватывая при этом высокоуровневые особенности, а декодировщик увеличивает размер закодированных особенностей для восстановления изображения. Эта архитектура особенно эффективна в задачах, требующих точной локализации, таких как сегментация изображений.

Сеть прогнозирования шума ε_θ может использовать любую архитектуру, которая сопоставляет входы с выходами одинаковой размерности. Архитектуры типа U-Net являются популярным выбором, особенно для задач генерации изображений.

Типичная архитектура может выглядеть следующим образом:


<p>class DiffusionUNet(nn.Module):
def __init__(self):
super().__init__()</p>

<p># Downsampling
self.down1 = UNetBlock(3, 64)
self.down2 = UNetBlock(64, 128)
self.down3 = UNetBlock(128, 256)</p>

<p># Bottleneck
self.bottleneck = UNetBlock(256, 512)</p>

<p># Upsampling
self.up3 = UNetBlock(512, 256)
self.up2 = UNetBlock(256, 128)
self.up1 = UNetBlock(128, 64)</p>

# Output
self.out = nn.Conv2d(64, 3, 1)

<p>def forward(self, x, t):
# Embed timestep
t_emb = self.time_embedding(t)</p>

<p># Downsample
d1 = self.down1(x, t_emb)
d2 = self.down2(d1, t_emb)
d3 = self.down3(d2, t_emb)</p>

<p># Bottleneck
bottleneck = self.bottleneck(d3, t_emb)</p>

<p># Upsample
u3 = self.up3(torch.cat([bottleneck, d3], dim=1), t_emb)
u2 = self.up2(torch.cat([u3, d2], dim=1), t_emb)
u1 = self.up1(torch.cat([u2, d1], dim=1), t_emb)</p>

# Output
return self.out(u1)

Ключевые компоненты являются:

  • Архитектура типа U-Net со скип-соединениями
  • Временная вложенность для условного формирования на временном шаге
  • Гибкая глубина и ширина

Алгоритм выборки

Как только мы обучили нашу сеть прогнозирования шума ε_θ, мы можем использовать ее для генерации новых образцов. Базовый алгоритм выборки следующий:

  1. Начните с чистого гауссовского шума xT
  2. Для t = T до 1:
    • Прогнозируйте шум: ε_θ(x_t, t)
    • Вычислите среднее: μ = 1/√(1-β_t) * (x_t - β_t/√(1-α_t) * ε_θ(x_t, t))
    • Выберите образец: x_{t-1} ~ N(μ, σ_t^2 * I)
  3. Верните x₀

Этот процесс постепенно очищает образец, управляемый нашей обученной сетью прогнозирования шума.

На практике существуют различные техники выборки, которые могут улучшить качество или скорость:

  • DDIM выборка: детерминированная вариация, которая позволяет использовать меньше шагов выборки
  • Происхождение выборки: включает в себя обученную дисперсию σ_θ^2
  • Обрезанная выборка: останавливается раньше для более быстрой генерации

Вот базовая реализация алгоритма выборки:


<p>def sample(model, n_samples, device):
# Начните с чистого шума
x = torch.randn(n_samples, 3, 32, 32).to(device)</p>

<p>for t in reversed(range(1000)):
# Добавьте шум, чтобы создать x_t
t_batch = torch.full((n_samples,), t, device=device)
noise = torch.randn_like(x)
x_t = add_noise(x, noise, t)</p>

<p># Прогнозируйте и удалите шум
pred_noise = model(x_t, t_batch)
x = remove_noise(x_t, pred_noise, t)</p>

<p># Добавьте шум для следующего шага (кроме t=0)
if t &gt; 0:
noise = torch.randn_like(x)
x = add_noise(x, noise, t-1)</p>

return x

Математика за моделями диффузии

Чтобы по-настоящему понять модели диффузии, важно глубже погрузиться в математику, лежащую в их основе. Давайте исследуем некоторые ключевые понятия более подробно:

Цепь Маркова и стохастические дифференциальные уравнения

Прямой процесс диффузии в моделях диффузии можно рассматривать как цепь Маркова или, в непрерывном пределе, как стохастическое дифференциальное уравнение (СДУ). Формулировка СДУ предоставляет мощную теоретическую основу для анализа и расширения моделей диффузии.

Прямое СДУ можно записать как:

dx = f(x,t)dt + g(t)dw

Где:

  • f(x,t) является членом дрейфа
  • g(t) является коэффициентом диффузии
  • dw является винеровским процессом (бровновское движение)

Разные выборы f и g приводят к различным типам процессов диффузии. Например:

  • Взрывающаяся дисперсия (VE) SDE: dx = √(d/dt σ²(t)) dw
  • Сохраняющая дисперсию (VP) SDE: dx = -0.5 β(t)xdt + √(β(t)) dw

Понимание этих СДУ позволяет нам вывести оптимальные стратегии выборки и расширить модели диффузии до новых областей.

Совпадение оценок и денойзинговое совпадение оценок

Связь между моделями диффузии и совпадением оценок предоставляет еще одну ценную перспективу. Функция оценки определяется как градиент логарифмического вероятностного распределения:

s(x) = ∇x log p(x)

Денойзинговое совпадение оценок направлено на оценку этой функции оценки, обучая модель денойзингу слегка измененных данных. Эта цель оказывается эквивалентной цели обучения модели диффузии в непрерывном пределе.

Эта связь позволяет нам использовать методы из оценочного генеративного моделирования, такие как аннигиляция Ланжевена для выборки.

Передовые методы обучения

Импортанс-сэмплинг

Стандартная модель диффузии выбирает временные шаги равномерно. Однако не все временные шаги одинаково важны для обучения. Методы импортанс-сэмплинга могут быть использованы для фокусировки обучения на наиболее информативных временных шагах.

Один из подходов заключается в использовании неуниформального распределения по временным шагам, взвешенного ожидаемой нормой L2 оценки:

p(t) ∝ E[||s(x_t, t)||²]

Это может привести к более быстрому обучению и улучшению качества образцов.

Прогрессивная дистилляция

Прогрессивная дистилляция – это метод создания более быстрых моделей выборки без ущерба для качества. Процесс работает следующим образом:

  1. Обучите базовую модель диффузии с большим количеством временных шагов (например, 1000)
  2. Создайте модель-студента с меньшим количеством временных шагов (например, 100)
  3. Обучите модель-студента соответствовать процессу денойзинга базовой модели
  4. Повторите шаги 2-3, прогрессивно уменьшая количество временных шагов

Это позволяет генерировать высококачественные образцы с значительно меньшим количеством шагов денойзинга.

Архитектурные инновации

Модели диффузии на основе трансформеров

Хотя архитектуры типа U-Net были популярны для моделей диффузии изображений, недавние работы исследовали использование архитектур трансформеров. Трансформеры предлагают несколько потенциальных преимуществ:

  • Лучшее обработка длинных зависимостей
  • Более гибкие механизмы условного формирования
  • Легче масштабировать до более крупных размеров моделей

Модели, такие как DiT (Diffusion Transformers), показали перспективные результаты, потенциально предлагая путь к еще более высокому качеству генерации.

Иерархические модели диффузии

Иерархические модели диффузии генерируют данные на нескольких масштабах, позволяя как глобально, так и локально детализировать. Процесс обычно включает:

  1. Генерация низкокачественного выхода
  2. Прогрессивное увеличение и уточнение

Этот подход может быть особенно эффективным для генерации высококачественных изображений или длинных последовательностей.

Передовые темы

Классификаторное руководство

Классификаторное руководство – это метод улучшения качества образцов и управляемости. Ключевая идея заключается в том, чтобы обучить две модели диффузии:

  1. Безусловную модель p(x_t)
  2. Условную модель p(x_t | y), где y – некоторая условная информация (например, текстовый промпт)

Во время выборки мы интерполируем между этими моделями:

ε_θ = (1 + w) * ε_θ(x_t | y) - w * ε_θ(x_t)

Где w > 0 – это масштаб руководства, который управляет тем, насколько сильно подчеркивать условную модель.

Это позволяет более сильно условить модель без необходимости ее переобучения. Это было важно для успеха текст-изображение моделей, таких как DALL-E 2 и Stable Diffusion.

Латентная диффузия

Источник: Rombach et al.

Источник: Rombach et al.

Латентная модель диффузии (LDM) включает в себя кодирование входных данных в латентное пространство, где происходит процесс диффузии. Модель постепенно добавляет шум к латентному представлению изображения, что приводит к генерации шумного варианта, который затем денойзится с помощью архитектуры U-Net. U-Net, управляемый механизмами кросс-аттенции, интегрирует информацию из различных источников условного формирования, таких как семантические карты, текст и представления изображений, в конечном итоге реконструируя изображение в пространстве пикселей. Этот процесс является важным для генерации высококачественных изображений с контролируемой структурой и желаемыми атрибутами.

Это предлагает несколько преимуществ:

  • Быстрое обучение и выборка
  • Лучшее обработка высококачественных изображений
  • Легче включать условное формирование

Процесс работает следующим образом:

  1. Обучите автоэнкодер для сжатия изображений в латентное пространство
  2. Обучите модель диффузии в этом латентном пространстве
  3. Для генерации, выберите образец в латентном пространстве и декодируйте его в пиксели

Этот подход был очень успешным, питая модели, такие как Stable Diffusion.

Модели согласованности

Модели согласованности – это недавнее инновационное решение, направленное на улучшение скорости и качества моделей диффузии. Ключевая идея заключается в том, чтобы обучить одну модель, которая может отображать из любого уровня шума непосредственно на конечный выход, не требуя итеративного денойзинга.

Это достигается с помощью тщательно разработанной функции потерь, которая обеспечивает согласованность между прогнозами на разных уровнях шума. Результатом является модель, которая может генерировать высококачественные образцы в одном прямом проходе, что значительно ускоряет вывод.

Практические советы для обучения моделей диффузии

Обучение высококачественных моделей диффузии может быть сложным. Вот некоторые практические советы для улучшения стабильности обучения и результатов:

  1. Обрезка градиентов: используйте обрезку градиентов, чтобы предотвратить взрыв градиентов, особенно на ранних этапах обучения.
  2. EMA весов модели: сохраняйте экспоненциально сглаженное среднее весов модели для выборки, что может привести к более стабильной и высококачественной генерации.
  3. Аугментация данных: для моделей изображений простые аугментации, такие как случайные горизонтальные отражения, могут улучшить обобщаемость.
  4. График шума: экспериментируйте с разными графиками шума (линейными, косинусными, сигмоидальными), чтобы найти то, что лучше всего работает для ваших данных.
  5. Смешанная точность обучения: используйте смешанную точность обучения, чтобы уменьшить использование памяти и ускорить обучение, особенно для крупных моделей.
  6. Условная генерация: даже если ваш конечная цель – неусловная генерация, обучение с условным формированием (например, на классах изображений) может улучшить общее качество образцов.

Оценка моделей диффузии

Правильная оценка генеративных моделей имеет решающее значение, но является сложной задачей. Вот некоторые распространенные метрики и подходы:

Расстояние Фрэчета-Инсепшн (FID)

FID – это широко используемая метрика для оценки качества и разнообразия сгенерированных изображений. Она сравнивает статистику сгенерированных образцов с реальными данными в пространстве особенностей предварительно обученного классификатора (обычно InceptionV3).

Меньшие значения FID указывают на лучшее качество и более реалистичные распределения. Однако FID имеет ограничения и не должен быть единственной используемой метрикой.

Оценка Инсепшн (IS)

Оценка Инсепшн измеряет как качество, так и разнообразие сгенерированных изображений. Она использует предварительно обученную сеть Инсепшн для вычисления:

IS = exp(E[KL(p(y|x) || p(y))])

Где p(y|x) – условное распределение класса для сгенерированного изображения x.

Более высокие значения IS указывают на лучшее качество и разнообразие, но она имеет известные ограничения, особенно для наборов данных, сильно отличающихся от ImageNet.

Отрицательное логарифмическое предсказательное плотность (NLL)

Для моделей диффузии мы можем вычислить отрицательное логарифмическое предсказательное плотность для задержанных данных. Это предоставляет прямую меру того, насколько хорошо модель подходит к истинному распределению данных.

Однако NLL может быть вычислительно дорогим для точной оценки для высокоразмерных данных.

Оценка человека

Для многих приложений, особенно творческих, оценка человека остается важной. Это может включать:

  • Сравнения бок о бок с другими моделями
  • Оценки в стиле теста Тьюринга
  • Задачи-специфические оценки (например, подписывание изображений для моделей текст-изображение)

Хотя субъективна, оценка человека может уловить аспекты качества, которые автоматические метрики пропускают.

Модели диффузии в производстве

Развертывание моделей диффузии в производственных средах представляет уникальные проблемы. Вот некоторые соображения и лучшие практики:

Оптимизация для вывода

  1. Экспорт ONNX: конвертируйте модели в формат ONNX для более быстрого вывода на разных аппаратных средствах.
  2. Квантование: используйте методы, такие как INT8 квантование, чтобы уменьшить размер модели и улучшить скорость вывода.
  3. Кэширование: для условных моделей кэшируйте промежуточные результаты для безусловной модели, чтобы ускорить классификаторное руководство.
  4. Пакетная обработка: используйте пакетную обработку, чтобы эффективно использовать ресурсы GPU.

Масштабирование

  1. Распределенный вывод: для высокопроизводительных приложений реализуйте распределенный вывод на нескольких GPU или машинах.
  2. Адаптивная выборка: динамически регулируйте количество шагов выборки на основе желаемого баланса между качеством и скоростью.
  3. Прогрессивная генерация: для крупных выходов (например, высококачественных изображений) генерируйте прогрессивно от низкого к высокому разрешению, чтобы обеспечить более быстрое первоначальное представление.

Безопасность и фильтрация

  1. Фильтрация контента: реализуйте надежные системы фильтрации контента, чтобы предотвратить генерацию вредного или неуместного контента.
  2. Водяные знаки: рассмотрите возможность включения невидимых водяных знаков в сгенерированный контент для отслеживания.

Применения

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

Генерация изображений

Генерация изображений – это область, где модели диффузии первоначально получили известность. Некоторые заметные примеры включают:

  • DALL-E 3: модель текст-изображение от OpenAI, объединяющая текстовый кодировщик CLIP с декодировщиком изображения диффузии
  • Stable Diffusion: открытая латентная модель диффузии для генерации текст-изображение
  • Imagen: модель текст-изображение от Google (GOOGL )

Эти модели могут генерировать высокореалистичные и творческие изображения из текстовых описаний, превосходя предыдущие подходы на основе GAN.

Генерация видео

Модели диффузии также были применены к генерации видео:

  • Модели диффузии видео: генерация видео путем рассмотрения времени как дополнительного измерения в процессе диффузии
  • Make-A-Video: модель текст-видео диффузии от Meta
  • Imagen Video: модель текст-видео диффузии от Google

Эти модели могут генерировать короткие видеоклипы из текстовых описаний, открывая новые возможности для создания контента.

3D генерация

Недавние работы расширили модели диффузии до 3D генерации:

  • DreamFusion: генерация текст-3D, используя 2D модели диффузии
  • Point-E: модель диффузии облака точек от OpenAI для генерации 3D объектов

Эти подходы позволяют создавать 3D активы из текстовых описаний, с применением в играх, VR/AR и дизайне продуктов.

Проблемы и будущие направления

Хотя модели диффузии показали замечательный успех, есть еще несколько проблем и областей для будущих исследований:

Вычислительная эффективность

Итеративный процесс выборки моделей диффузии может быть медленным, особенно для высококачественных выходов. Подходы, такие как латентная диффузия и модели согласованности, направлены на решение этой проблемы, но дальнейшие улучшения эффективности являются активной областью исследований.

Управляемость

Хотя методы, такие как классификаторное руководство, улучшили управляемость, еще много работы предстоит для обеспечения более тонкого контроля над сгенерированными выходами. Это особенно важно для творческих приложений.

Мультимодальная генерация

Текущие модели диффузии превосходно справляются с генерацией в одном модусе (например, изображения или аудио). Разработка真正х мультимодальных моделей диффузии, которые могут без проблем генерировать в нескольких модусах, является захватывающим направлением для будущей работы.

Теоретическое понимание

Хотя модели диффузии имеют сильные эмпирические результаты, еще многое предстоит понять о том, почему они работают так хорошо. Более глубокое теоретическое понимание может привести к дальнейшим улучшениям и новым применениям.

Заключение

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

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

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