https://arxiv.org/abs/2006.11239

Вклад

  1. Обратный процесс предсказывает ϵϵ\epsilon вместо ~μtμ~t\tilde\mu_t. Здесь автор нашел связь с NCSN.
  2. Перевзвешенный VLB (LsimpleLsimpleL_{simple})

DDPM — это модель со скрытой переменной со скрытой переменной TTT, т.е. =\int p_{\theta}(x_{0:T})dx_{1:T}. Хотя DDPM в основном представляет собой иерархическую VAE, есть несколько отличий, описанных ниже.

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

Переслать процесс

Прямой процесс определяется, как указано выше. βtβt\beta_t — заданная константа, линейно возрастающая от β1=10−4β1=10−4\beta_1=10^{-4} до βT=0,02βT=0,02\beta_T=0,02. Эти значения могут быть обучаемыми параметрами или константами, и автор обнаружил, что оба варианта работают хорошо. Например, если βt=0,01βt=0,01\beta_t=0,01, то мы можем перепараметрировать xtxtx_t как xt=√0,99xt−1+0,01ϵxt=0,99xt−1+0,01ϵx_t=\sqrt{0,99}x_{t-1} + 0,01\эпсилон. Поскольку прямой процесс представляет собой повторение такого искажения, xTxTx_T не имеет остаточного сигнала и следует гауссовскому распределению.

Целью масштабирования с помощью √1−βt1−βt\sqrt{1-\beta_t} является сохранение единичной дисперсии после добавления шума. Во-первых, дисперсия становится 1−βt1−βt1-\beta_t после умножения на √1−βt1−βt\sqrt{1-\beta_t}. Тогда дисперсия становится единицей после добавления шума, дисперсия которого равна βtβt\beta_t. Если масштабирование убрать, дисперсия увеличится на βtβt\beta_t. Поскольку мы используем одну модель для каждого временного шага, лучше ограничить значение xtxtx_t до определенной степени.

Для получения xtxtx_t похоже, что порча должна быть применена к x0x0x_0 ttt раз, но есть способ сделать это сразу. Если αt:=1−βtαt:=1−βt\alpha_t:=1-\beta_t и $\bar{\alpha}{t}:=\prod{s=1}^{t } \alpha_{s}$,

q(xt|x0)q(xt|x0)q(x_t|x_0), представленный выше. Хотя в статье нет подробного вывода, мы можем представить xtxtx_t с помощью xt-1xt-1x_{t-1} и шума, и снова xt-1xt-1x_{t-1} можно представить с помощью xt-2xt-2x_{t- 2} и шум. В конце концов, xtxtx_t можно представить с помощью x0x0x_0 и шума. Это представление приносит большую простоту. Раньше нам приходилось применять время искажения TTT для расчета потерь, как если бы ввод должен был проходить через все уровни кодировщика в VAE. Используя упрощение, мы можем напрямую получить xtxtx_t и рассчитать потери, где t выбирается из равномерного распределения.

Обратный процесс

Как если бы декодер генерирует xxx из скрытого вектора zTzTz_T в иерархическом VAE, гауссов шум xTxTx_T постепенно очищается от шума до x0x0x_0. Это называется обратным процессом.

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

Цель

Поскольку DDPM является разновидностью VAE, функция потерь идентична функции иерархического VAE (ELBO). LTLTL_T соответствует термину потерь в VAE, который заставляет апостериорную вероятность следовать гауссовской априорной. В отличие от VAE, прямой процесс DDPM является фиксированным процессом, который сопоставляет входные данные с гауссовским шумом. Следовательно, LTLTL_T — константа, близкая к нулю, поэтому мы можем ее игнорировать. Lt-1Lt-1L_{t-1} соответствует прогнозированию апостериорного прямого процесса. L0L0L_0 измеряет вероятность сгенерированного образца.

Чтобы минимизировать LtLtL_t, модель должна предсказать xt-1xt-1x_{t-1} при заданном xtxtx_t, что является нетривиальной задачей. Чтобы отличить шум и контент от данного изображения, требуется глубокое понимание всего распределения данных. Чтобы рассчитать KL-дивергенцию LtLtL_t, мы должны знать q(xt−1|xt,x0)q(xt−1|xt,x0)q(x_{t-1}|x_t,x_0), которое мы можем получить с помощью простого вычисления . Интуитивно легко немного убрать шум, если у нас есть неиспорченный сэмпл x0x0x_0. Конкретно, мы можем получить истинное апостериорное значение $q\left(\mathbf{x}{t-1} \mid \mathbf{x}{t}, \mathbf{x}{ 0}\right)=\mathcal{N}\left(\mathbf{x}{t-1} ; \tilde{\mu}\left(\mathbf{x}{t}, \mathbf{x}{0}\right), \tilde{\beta}_{t} \mathbf{I}\right)$следующим образом.

$$q\left(\mathbf{x}{t-1} \mid \mathbf{x}{t}, \mathbf{x}{0}\right)=q \left(\mathbf{x}{t} \mid \mathbf{x}{t-1}, \mathbf{x}{0}\right) \frac{q \left(\mathbf{x}{t-1} \mid \mathbf{x}{0}\right)}{q\left(\mathbf{x}{t} \mid \mathbf{x}{0}\right)}$$

Применив правило Байеса, мы можем получить q(xt|xt−1,x0)q(xt|xt−1,x0)q(x_t|x_{t-1},x_0), поскольку оно равно q(xt |xt−1)q(xt|xt−1)q(x_t|x_{t-1}), который уже есть в уравнении 2. Обратите внимание, что прямой процесс представляет собой цепь Маркова, поэтому мы можем безопасно удалить x0x0x_0, который условно независим от xtxtx_t. Поскольку мы уже получили q(xt-1|x0)q(xt-1|x0)q(x_{t-1}|x_0) и q(xt|x0)q(xt|x0)q(x_{t} |x_0) в уравнении 4, мы можем получить ~μμ~\tilde \mu и ~ββ~\tilde \beta следующим образом.

Поскольку ~βtβ~t\tilde \beta_t не содержит обучаемых параметров, мы можем зафиксировать ΣθΣθ\Sigma_\theta и обучить только μθμθ\mu_\theta. Теперь нам нужно рассчитать КЛД. KLD между двумя гауссианами можно вычислить в закрытой форме следующим образом.

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

Дискретная оценка правдоподобия

В этой статье мы предполагаем, что значения пикселей дискретны. Автор представляет технику для вычисления дискретной вероятности, как указано выше.

Наше наблюдение xi0x0ix_0^i фактически является результатом дискретизации действительных чисел в

(x0-1255,x0+1255)(x0-1255,x0+1255)(x_0-\frac{1}{255}, x_0+\frac{1}{255}). Следовательно, дискретное правдоподобие оценивается интегралом в пределах этого диапазона.

Прогнозирование шума

До сих пор мы видели базовую форму DDPM и процедуру обучения. Как видно из уравнения 8, обучение DDPM состоит в том, чтобы предсказать ~μtμ~t\tilde \mu_t в уравнении 7. Причина, по которой это сложно, заключается в том, что мы знаем значения всех констант, кроме x0x0x_0. Поскольку предсказание x0x0x_0 по зашумленному наблюдению xtxtx_t — нетривиальная задача, нам нужно разложить его в более удобную форму. Используя уравнение 4, мы можем выразить xtxtx_t, используя прием репараметризации следующим образом.

xt=√¯αtx0+√1−¯αtϵxt=α¯tx0+1−α¯tϵx_t = \sqrt{\bar \alpha_t}x_0 + \sqrt{1-\bar \alpha_t}\epsilon

x0x0x_0 представлен следующим образом.

x0=(xt—√1−¯αtϵ)/√¯αtx0=(xt — 1−α¯tϵ)/α¯tx_0 = (x_t — \sqrt{1-\bar \alpha_t}\epsilon)/\sqrt{ \бар \альфа _t}

Теперь мы разложим x0x0x_0, как указано выше, и единственное значение, которое нам нужно предсказать, это ϵϵ\epsilon. Используя это представление, уравнение 7 можно преобразовать следующим образом.

~μt=√¯αt−1βt1−¯αt1√¯αt(xt−√1−¯αtϵ)+√¯αt(1−¯αt−1)1−¯αtxt=(βt(1−¯αt)√αt+ √αt(1−¯αt−1)1−¯αt)xt—√1−¯αtβt(1−¯αt)√αtϵ=1√αt(xt—βt√1−¯αtϵ)μ~t=α¯ t−1βt1−α¯t1α¯t(xt−1−α¯tϵ)+α¯t(1−α¯t−1)1−α¯txt=(βt(1−α¯t)αt+αt( 1−α¯t−1)1−α¯t)xt — 1−α¯tβt(1−α¯t)αtϵ=1αt(xt — βt1−α¯tϵ)\тильда \mu_t=\frac{{\ sqrt {\ bar \ alpha_ {t-1}} \ beta_t}} {1- \ bar \ alpha_t} \ frac {1} {\ sqrt {\ bar \ alpha_t}} (x_t- \ sqrt {1- \ bar \ alpha_t}\epsilon)+\frac{\sqrt{\bar \alpha_t}(1-\bar \alpha_{t-1})}{1-\bar \alpha_t}x_t \\ = (\frac{\beta_t} {(1-\bar \alpha_t)\sqrt{\alpha_t}} + \frac{\sqrt{\alpha_t}(1-\bar \alpha_{t-1})}{1-\bar \alpha_t})x_t — \frac{\sqrt{1-\bar \alpha_t}\beta_t}{(1-\bar \alpha_t)\sqrt{\alpha_t}}\epsilon \\ = \frac{1}{\sqrt{\alpha_t} }(x_t — \frac{\beta_t}{\sqrt{1-\bar \alpha_t}}\epsilon)

Выводя приведенное выше уравнение, обратите внимание, что beta_t=1-\alpha_t по определению. μθμθ\mu_\theta можно преобразовать таким же образом.

μθ=1√αt(xt—βt√1−¯αtϵθ)μθ=1αt(xt — βt1−α¯tϵθ)\mu_\theta = \frac{1}{\sqrt{\alpha_t}}(x_t — \frac {\ beta_t} {\ sqrt {1- \ bar \ alpha_t}} \ epsilon _ {\ theta})

Уравнение 8 изменено с использованием ~μtμ~t\tilde \mu_t и μθμθ\mu_\theta следующим образом.

Теперь задача изменена на предсказание шума вместо среднего. Таким образом, мы сначала получаем xtxtx_t из x0x0x_0, используя ϵϵ\epsilon, и предсказываем ϵϵ\epsilon, учитывая xtxtx_t.

Автор недавно представил невзвешенную версию уравнения 12 и назвал ее перевзвешенной VLB. При прогнозировании ~μμ~\tilde \mu это приведет к ухудшению производительности, но при прогнозировании ϵϵ\epsilon можно улучшить производительность за счет использования упрощенной формы. Это эквивалентно терминам потери веса вниз, соответствующим малому ttt, так что модель может сосредоточиться на более сложных задачах шумоподавления при больших терминах ttt.

Резюме: Для прогнозирования ~μtμ~t\tilde \mu_t требуется прогнозирование x0x0x_0, а для прогнозирования x0x0x_0 требуется прогнозирование ϵϵ\epsilon. Поэтому автор разлагает ~μtμ~t\tilde \mu_t и пытается предсказать ϵϵ\epsilon. В новых представленных убытках удаление весового значения более эффективно (LsimpleLsimpleL_{simple}).

Подключение к NCSN

Автор обнаружил, что DDPM представляет собой тот же тип генеративной модели, что и NCSN, представленный Ян Сонгом.

Алгоритмы обучения и выборки DDPM такие же, как и выше. Для выборки требуется время предсказания TTT, что означает, что генерация происходит довольно медленно. Выборка в прямом апостериорном процессе представлена ​​в строке 4 алгоритма 2 выше. Обратите внимание, что применяется трюк с репараметризацией. Строка 4 очень похожа на отожженную динамику Ланжевена, представленную Ян Сонгом.

Как показано на рисунке выше, вычитание ϵϵ\epsilon из xtxtx_t эквивалентно наибольшему направлению к √¯αtx0α¯tx0\sqrt{\bar \alpha_t}x_0. Тогда x0x0x_0 можно получить делением на √¯αα¯\sqrt{\bar \alpha}. Следовательно, Алгоритм 2 можно интерпретировать как вариант отожженной динамики Ланжевена, а процедура обучения DDPM аналогична сопоставлению условной оценки шума.

Но между DDPM и NCSN есть следующие отличия.

  1. Алгоритм 2 не содержит внутреннего цикла, как отожженная динамика Ланжевена.
  2. В алгоритме 2 есть операция деления на √¯αα¯\sqrt{\bar \alpha} после вычитания шума, в отличие от динамики Ланжевена.
  3. Архитектура другая.
  4. ϵθϵθ\epsilon_{\theta} DDPM обучается с использованием повторно взвешенного VLB, чтобы сэмплер мог соответствовать распределению данных. С другой стороны, функция оценки NCSN обучается независимо, без учета динамики Ланжевена. Точно так же размеры шага αiαi\alpha_i в динамике Ланжевена устанавливаются вручную без учета цели сопоставления баллов. Следовательно, процедура обучения NCSN не гарантирует, что сэмплер Ланжевена соответствует распределению данных.

Архитектура

Автор использует архитектуру Unet, основанную на PixelCNN++. Они также используют блок самоконтроля от PixelSNAIL. Чтобы сделать модель обусловленной ttt, позиционное вложение ttt добавляется после каждого остаточного блока.