Диффузия и потоки
Марковские цепи и прямой процесс
Зашумление как цепь — и почему тысяча шагов складывается в одну формулу
Что мы собираемся построить
Генеративная модель должна уметь превращать шум в данные. Диффузия подходит к этому с неожиданной стороны: сначала строится процесс, который портит данные до шума, а затем обучается его обращение.
Прямой процесс задаётся руками, без обучения — и это его главное свойство. Он марковский:
Обратите внимание на выбор коэффициентов: множитель у сигнала — , у шума — , и сумма их квадратов равна единице. Значит если , то и . Такой процесс называют сохраняющим дисперсию, и это не косметика: без нормировки масштаб данных уезжал бы вместе с шумом, а сеть должна работать в одном диапазоне на всех шагах.
Тысяча шагов в одну формулу
Наивно, чтобы получить , нужно сделать сто шагов. Но композиция гауссиан — снова гауссиана, и произведение сворачивается.
Обозначим и . Тогда
Проверено численно: пять шагов с из по четырёхсот тысячам траекторий дают среднее и дисперсию ; замкнутая форма предсказывает и .
Это самое важное практическое следствие во всей теме. Обучение не требует прогона цепи: чтобы получить обучающий пример на шаге , достаточно взять , взять один и посчитать одно выражение. Без этого диффузия была бы неприменима — тысяча последовательных шагов на каждый пример в батче.
Заметьте, что полностью описывает состояние процесса. Ни , ни отдельные дальше не понадобятся — только одно число.
Что видит модель
Потяните время и посмотрите на облако и на отношение сигнал/шум.
данные при t
сигнал/шум, log-шкала
- ᾱ
- 0.3956
- √ᾱ
- 0.629
- √(1−ᾱ)
- 0.7774
- сигнал/шум
- 0.655
- равенство при t
- 0.259
Шум преобладает: структура данных в этом облаке уже почти не читается, и задача восстановления здесь ближе к угадыванию, чем к очистке.
Два наблюдения, которые пригодятся дальше:
- Облако сжимается к нулю и расширяется до единичной дисперсии. Множитель стягивает данные к началу координат, добавляет разброс. При остаётся независимо от того, чем были данные.
- Время входит только через . Поэтому «шаг 700 из 1000» — не информация; информация — это , и именно её (или эквивалентное ей число) подают в сеть.
Обратный процесс: почему он вообще существует
Прямой процесс задан. Нужен обратный: . Он существует по правилу Байеса, но не выражается в замкнутой форме — для этого нужна маргинальная , то есть распределение всех данных, которого мы не знаем.
Здесь и появляется ключевой факт, из которого работает весь метод:
При малом обратный шаг приближённо гауссов.
Это не тавтология. Прямой шаг гауссов по построению; обратный — вообще говоря нет. Но при малом шаге он становится гауссовым с точностью до , а значит его можно параметризовать сетью, предсказывающей всего два числа на компоненту: среднее и дисперсию.
Отсюда сразу видна цена и причина существования тысячи шагов. Приближение тем точнее, чем меньше ; меньше — больше шагов, чтобы дойти до шума. Тысяча шагов в DDPM — это не запас на всякий случай, а плата за гауссовость обратного ядра.
Обратное ядро при известном
Одна вещь всё-таки считается точно, и на ней стоит обучение. Если знать , то обратный шаг гауссов не приближённо, а ровно:
Формулы выглядят громоздко, а получаются механически: правило Байеса для гауссиан плюс приведение показателя к квадрату (блок 3, урок 090). Разбирать их наизусть не нужно; важно структурное наблюдение — среднее есть выпуклая комбинация и , то есть обратный шаг тянет текущее состояние в сторону чистых данных, и вес этой тяги задан расписанием.
Именно поэтому в обучении фигурирует (или, что то же самое, ): цель обучения — приблизить это точное ядро, а не угадывать неизвестную маргинальную плотность. Урок 060 покажет, что предсказывать , предсказывать и предсказывать score — три записи одной задачи.
Итог
- Прямой процесс задан руками, марковский, сохраняет дисперсию.
- Он сворачивается в одну формулу: , и без этого обучение было бы непрактично.
- Всё состояние процесса — одно число .
- Обратный шаг гауссов приближённо, с точностью , — отсюда требование малых шагов и их количество.
- Обратный шаг при известном гауссов точно, и на нём стоит обучение.
Источники
- Ho, Jain, Abbeel — Denoising Diffusion Probabilistic Models — Прямой процесс и его замкнутая форма, раздел 2
- Sohl-Dickstein и др. — Deep Unsupervised Learning using Nonequilibrium Thermodynamics — Первая работа с этой идеей
Проверки
0 из 2Прямой процесс и его свойства
Отметьте все верные утверждения о прямом процессе диффузии.
Замкнутая форма прямого процесса
Реализуйте
forward_state(betas, steps, x0, eps)— верните[alpha_bar, signal_scale, noise_scale, x_t, snr]:alpha_bar= — произведение по первымstepsэлементам списка (приsteps = 0это пустое произведение, то есть единица);signal_scale= ;noise_scale= ;x_t= — состояние послеstepsшагов при данном единственном ;snr= — отношение сигнала к шуму.
Проверить себя можно так: сумма квадратов
signal_scaleиnoise_scaleобязана равняться единице при любых . Это и есть то, что называют сохранением дисперсии.Загрузка редактора…
Ctrl/⌘ + Enter