Диффузия и потоки

Шумоподавление — это и есть score

Одно тождество, из-за которого диффузия обучается простым MSE

Шаг 95 из 117 · ~30 мин

Тождество

Урок 040 закончился тупиком: обучать score можно, но след якобиана стоит dd проходов. Выход такой — если зашумление известно, score условного распределения выписывается явно.

Из урока 010: xt=αˉx0+1αˉεx_t = \sqrt{\bar\alpha}\,x_0 + \sqrt{1-\bar\alpha}\,\varepsilon, то есть q(xtx0)=N(αˉx0, (1αˉ)I)q(x_t\mid x_0) = \mathcal{N}(\sqrt{\bar\alpha}x_0,\ (1-\bar\alpha)I). Score гауссианы известен:

xtlogq(xtx0)=xtαˉx01αˉ=ε1αˉ\nabla_{x_t}\log q(x_t \mid x_0) = -\frac{x_t - \sqrt{\bar\alpha}x_0}{1-\bar\alpha} = -\frac{\htmlData{k=eps}{\varepsilon}}{\sqrt{1-\bar\alpha}}

Второе равенство — подстановка определения xtx_t. Проверено численно: при αˉ=0.6\bar\alpha = 0.6, x0=1.3x_0 = 1.3, ε=0.7\varepsilon = 0.7 обе стороны дают 1.1067971811-1.1067971811, разность в точности нуль.

Смысл в том, что справа стоит величина, которую мы знаем. Мы сами взяли ε\varepsilon, когда готовили обучающий пример. Значит регрессия «предскажи ε\varepsilon по xtx_t» — это регрессия на score, только со сдвинутым масштабом.

Почему условный score годится вместо безусловного

Здесь легко пропустить главное. Нам нужен logq(xt)\nabla\log q(x_t) — score маргинального распределения, а известен logq(xtx0)\nabla\log q(x_t\mid x_0) — условного. Это разные вещи.

Тождество Винсента говорит, что минимизация по обеим целям даёт одно и то же решение:

Extsθ(xt)logq(xt)2=Ex0,xtsθ(xt)logq(xtx0)2+const\mathbb{E}_{x_t}\big\|s_\theta(x_t) - \nabla\log q(x_t)\big\|^2 = \mathbb{E}_{x_0, x_t}\big\|s_\theta(x_t) - \nabla\log q(x_t\mid x_0)\big\|^2 + \text{const}

Причина, если убрать выкладки: оптимум квадратичной регрессии — условное среднее (блок 3, урок 050). Обучаясь предсказывать условный score, сеть в оптимуме выдаёт его среднее по всем x0x_0, совместимым с данным xtx_t, — а это и есть маргинальный score.

Формулировка, которую стоит запомнить: сеть учится на величине, которую нельзя знать в момент генерации, и в оптимуме выдаёт величину, которую знать можно. Тот же приём, что в блоке 4 с ELBO, и он же — причина, по которой обучение диффузии выглядит подозрительно просто.

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

Собираем всё вместе:

L=Ex0,t,ε[εθ(αˉtx0+1αˉtε, t)ε2]\mathcal{L} = \mathbb{E}_{x_0,\, t,\, \varepsilon}\Big[\big\|\varepsilon_\theta\big(\sqrt{\bar\alpha_t}x_0 + \sqrt{1-\bar\alpha_t}\varepsilon,\ t\big) - \varepsilon\big\|^2\Big]

Обычный MSE. Ни KL, ни следа якобиана, ни нормировочной константы, ни цепи — одна выборка tt, один ε\varepsilon, один прогон сети. Именно эта простота, а не какая-то особая архитектура, объясняет, почему диффузия вытеснила предшественников.

Стоит отметить, что L\mathcal{L} — не совсем ELBO. Точная вариационная нижняя граница содержит веса, зависящие от tt; DDPM их выбросил, и получившаяся «упрощённая» цель работает лучше. Интерпретация: веса ELBO переоценивают шаги с малым шумом, где задача проста и почти нечему учиться.

Три эквивалентные параметризации

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

предсказываемобозначениесвязь
шумεθ\varepsilon_\thetaбазовая
чистые данныеx0,θx_{0,\theta}x0=xt1αˉεαˉx_0 = \dfrac{x_t - \sqrt{1-\bar\alpha}\,\varepsilon}{\sqrt{\bar\alpha}}
scoresθs_\thetas=ε1αˉs = -\dfrac{\varepsilon}{\sqrt{1-\bar\alpha}}

Математически это одно и то же; численно — нет, и разница практическая:

  • при αˉ1\bar\alpha \to 1 (мало шума) деление на 1αˉ\sqrt{1-\bar\alpha} взрывается, и ε\varepsilon-параметризация численно неудобна;
  • при αˉ0\bar\alpha \to 0 (много шума) деление на αˉ\sqrt{\bar\alpha} взрывается у x0x_0-параметризации;
  • отсюда vv-параметризация (v=αˉε1αˉx0v = \sqrt{\bar\alpha}\varepsilon - \sqrt{1-\bar\alpha}x_0), которая ведёт себя прилично на обоих концах.

Поставьте время близко к нулю и к единице и посмотрите на αˉ\sqrt{\bar\alpha} и 1αˉ\sqrt{1-\bar\alpha} — видно, какое из делений опасно на каком конце.

данные при t

сигнал/шум, log-шкала

время t 0.5
0.4938
√ᾱ
0.7027
√(1−ᾱ)
0.7114
сигнал/шум
0.976
равенство при t
0.496
Сдвиньте t к нулю: √(1−ᾱ) стремится к нулю, и переход от ε к score делит на почти нуль. Сдвиньте к единице: к нулю стремится √ᾱ, и взрывается уже переход к x₀. Отсюда v-параметризация, устойчивая на обоих концах.

Шум преобладает. В этом режиме предсказание x₀ численно ненадёжно: делить приходится на малое √ᾱ.

Формула Tweedie

Ещё одна запись того же факта, полезная тем, что переводит всё на язык статистики:

E[x0xt]=xt+(1αˉ)logq(xt)αˉ\mathbb{E}[x_0 \mid x_t] = \frac{x_t + (1-\bar\alpha)\nabla\log q(x_t)}{\sqrt{\bar\alpha}}

Проверено: при αˉ=0.6\bar\alpha = 0.6, x0=1.3x_0 = 1.3, ε=0.7\varepsilon = 0.7 подстановка score даёт ровно 1.30000000001.3000000000.

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

Итог

  • logq(xtx0)=ε/1αˉ\nabla\log q(x_t\mid x_0) = -\varepsilon/\sqrt{1-\bar\alpha} — score условного распределения известен точно, потому что зашумление задали мы.
  • Минимизация по условному score даёт в оптимуме маргинальный (тождество Винсента), потому что оптимум MSE — условное среднее.
  • Цель обучения — обычный MSE по предсказанию ε\varepsilon: без следа, без цепи, без ZZ.
  • Три параметризации (ε\varepsilon, x0x_0, score) эквивалентны алгебраически и различаются численной устойчивостью на концах диапазона.
  • Формула Tweedie говорит то же самое иначе: оптимальный шумоподавитель и score — один объект.

Источники

Проверки

0 из 2
  1. Почему MSE по шуму — это score matching

    Отметьте все верные утверждения о связи шумоподавления и score.

  2. Три параметризации одного объекта

    Реализуйте denoising_forms(alpha_bar, x0, eps). Пусть xt=αˉx0+1αˉεx_t = \sqrt{\bar\alpha}\,x_0 + \sqrt{1-\bar\alpha}\,\varepsilon. Верните [x_t, score, x0_recovered, v]:

    • x_t — зашумлённое состояние по формуле выше;
    • score = ε1αˉ-\dfrac{\varepsilon}{\sqrt{1-\bar\alpha}} — score условного распределения q(xtx0)q(x_t \mid x_0);
    • x0_recovered = xt+(1αˉ)scoreαˉ\dfrac{x_t + (1-\bar\alpha)\cdot \texttt{score}}{\sqrt{\bar\alpha}} — формула Tweedie. Она обязана вернуть исходное x0x_0 точно;
    • v = αˉε1αˉx0\sqrt{\bar\alpha}\,\varepsilon - \sqrt{1-\bar\alpha}\,x_0 — величина vv-параметризации.

    Третье число — проверка всей конструкции: если оно не совпадает с переданным x0, ошибка в одном из двух предыдущих.

    функция denoising_forms

    Загрузка редактора…

    Ctrl/⌘ + Enter