Noise Schedule
noise schedule — соответствие времени процесса и уровня шума
Noise schedule задаёт, какой уровень сигнала и шума соответствует каждому моменту диффузионного процесса. При генерации сэмплер идёт по выбранным точкам этой шкалы, но правило перехода и само расписание — не одно и то же.
Коротко
Noise schedule — это шкала уровней шума во времени. Она связывает момент
tс тем, сколько исходного сигнала и случайного шума содержит состояние модели. При генерации выбирается последовательность точек на этой шкале, а сэмплер определяет, как переходить между ними.
У термина есть два близких контекста. В обучении расписание описывает, как зашумляются данные. В генерации им могут называть последовательность t или sigma, по которой идёт обратный процесс. Эти последовательности связаны, но не всегда совпадают буквально: генерация часто использует меньше точек и другую дискретизацию.
Что задаёт расписание при обучении
В классическом DDPM прямой процесс понемногу добавляет к изображению гауссов шум. На шаге t величина β_t задаёт дисперсию новой порции шума:
x_t = sqrt(1 - β_t) · x_(t-1) + sqrt(β_t) · ε
Здесь ε — случайный гауссов шум. Удобно ввести:
α_t = 1 - β_t
ᾱ_t = α_1 · α_2 · ... · α_t
Тогда состояние в любой момент можно получить сразу из чистого примера x_0:
x_t = sqrt(ᾱ_t) · x_0 + sqrt(1 - ᾱ_t) · ε
Первая часть сохраняет сигнал, вторая добавляет шум. Последовательность β_t, а значит и ᾱ_t, определяет, как быстро изображение теряет информацию. Эту конструкцию описывает работа DDPM.
Это не обязательно видимый «снег» на пикселях. Многие модели работают в латентном пространстве, и шум добавляется к скрытому представлению. Фотопластины на инфографике — лишь понятная метафора изменения отношения сигнал/шум.
Beta, sigma и SNR говорят об одной шкале с разных сторон
Расписание можно записать несколькими способами:
β_t— сколько новой дисперсии добавляется на дискретном шаге;ᾱ_t— квадрат коэффициента при исходном сигнале в формуле выше;σ_t— масштаб шума в выбранной параметризации;SNR_t— отношение мощности сигнала к мощности шума;logSNR_t— логарифмическая форма того же отношения.
Поэтому noise schedule не всегда является «списком sigma». Два кода могут описывать близкий процесс разными переменными и нумерацией времени. Сравнивать отдельные числа без формулы преобразования рискованно.
Высокий SNR означает, что состояние ещё хорошо хранит исходный сигнал. Низкий SNR — что преобладает шум. В некоторых соглашениях большое значение t соответствует большему шуму, в других непрерывное время или sigma ориентированы иначе. Направление массива лучше проверять по документации, а не угадывать по индексу.
Schedule, steps и sampler — разные части
Инфографика разделяет их на три короткие строки:
| Понятие | На какой вопрос отвечает |
|---|---|
| Schedule | Какие уровни шума существуют и где они находятся во времени? |
| Steps | Сколько переходов по выбранной сетке делает алгоритм? |
| Sampler / solver | По какому численному правилу перейти между соседними выбранными точками? |
Допустим, модель обучалась на большой дискретной шкале времени. Для генерации не обязательно посещать каждую её точку. Scheduler может выбрать более короткую последовательность, а solver — оценивать переходы по прогнозам модели.
Для N переходов в списке уровней может быть N + 1 точка с учётом конечной. При этом число steps не всегда равно числу обращений к нейросети. Одному алгоритму достаточно одного прогноза на переход, другому нужны дополнительные оценки. Для скорости и стоимости точнее смотреть на число вычислений модели — NFE, если инструмент его показывает.
Почему слова schedule и scheduler путаются
Единого бытового словаря нет. В одной программе scheduler означает весь объект, который хранит временную сетку и вычисляет следующее состояние. В другой schedule — отдельный список sigma, а sampler выбирается отдельно. Третья программа объединяет оба названия в один пресет.
Поэтому название из выпадающего списка не всегда переносится в другой интерфейс один к одному. Важно выяснить, что скрывается внутри:
- только последовательность уровней;
- только правило численного решения;
- сочетание обоих компонентов;
- дополнительные настройки: размещение точек, тип предсказания модели или добавочный шум.
Именно из-за этого две программы с одинаковыми словами «sampler» и «steps» могут дать разные результаты при одном seed.
Формы расписаний
У расписания нет единственного обязательного вида. На практике встречаются, например:
- линейное изменение
β_t; - кривая, заданная через cosine-профиль
ᾱ_t; - равномерные точки по времени;
- равномерные точки по sigma или logSNR;
- нелинейные дискретизации, которые плотнее размещают точки в выбранной части шкалы.
Cosine schedule было подробно исследовано в Improved Denoising Diffusion Probabilistic Models: авторы показали, что форма убывания сигнала влияет на то, сколько полезной информации остаётся на разных шагах обучения.
Названия вроде linear, cosine или Karras описывают математическую идею или способ расстановки точек, а не готовый рейтинг качества. Одинаковое имя в двух реализациях тоже не гарантирует одинаковые границы, количество точек и преобразование времени.
Расписание обучения и сетка генерации должны понимать друг друга
Модель учится делать прогноз при определённых уровнях шума и в определённой параметризации цели. Это может быть прогноз шума, чистого образца, специальной величины v, связанной с сигналом и шумом, или другой величины. В моделях переноса потока прогноз скорости имеет своё определение; одинаковое слово не делает формулы взаимозаменяемыми. Scheduler при генерации должен правильно интерпретировать этот прогноз.
Для совместимости важны:
- шкала времени и её конечные точки;
- тип прогнозируемой величины;
- преобразование между
t,sigma,alphaи SNR; - начальный уровень шума;
- порядок и размещение выбранных точек;
- правило solver и его предположения о процессе.
Простая замена schedule иногда работает, потому что библиотека корректно преобразует конфигурацию. Иногда она создаёт несогласованный процесс. Поэтому конфигурация scheduler — часть описания модели, а не просто название в списке.
Отдельный пример — отношение сигнал/шум в конечной точке. В работе Common Diffusion Noise Schedules and Sample Steps are Flawed показано, что ненулевой остаточный сигнал в конечной точке и начало генерации не с последней точки обучающей шкалы создают рассогласование между обучением и генерацией. Это не означает, что одну универсальную галочку можно безопасно включить для любой готовой модели: предложенные изменения связаны также с типом предсказания модели и способом генерации.
Что ещё влияет на обучение на разных уровнях шума
Одна кривая не описывает всю тренировку. Важны ещё как минимум две вещи:
- Выбор моментов времени при обучении. Одни уровни могут выбираться чаще других.
- Вес функции потерь. Ошибки на разных SNR могут иметь разный вклад в итоговый градиент.
Два обучения с одинаковым расписанием шума, но разной частотой выбора уровней или разными весами потерь уделяют этим уровням разное внимание. Поэтому вывод «эта модель обучалась на cosine, значит любой cosine scheduler будет лучшим» слишком сильный.
Почему один seed даёт другую картинку
Seed воспроизводит начальную случайность при совпадающем вычислительном пути. Если изменить временную сетку, модель получает запросы на других уровнях шума, а solver проходит по другой траектории. При стохастическом сэмплере может измениться и то, где добавляется новая случайность.
Поэтому тот же seed после смены schedule не обязан сохранять композицию. Это не ошибка воспроизводимости: изменился сам алгоритм генерации.
Для сравнения расписаний полезна небольшая сетка из нескольких seed и разных сюжетов. Один кадр легко оказывается удачным случайно. Модель, промпт, сэмплер и число вычислений при таком сравнении остаются одинаковыми — насколько это позволяет интерфейс.
С чем часто путают
- Noise schedule и сила изменения исходной картинки. Расписание описывает путь по уровням шума. Параметр denoise strength обычно выбирает, с какого участка этого пути начать работу с изображением.
- Schedule и sampler. Первый задаёт уровни, второй — правило перехода.
- Steps и training timesteps. Короткая генерация может использовать небольшое подмножество большой обучающей шкалы.
- Sigma и номер шага. Sigma — уровень в выбранной параметризации; индекс — лишь позиция в массиве.
- Scheduler config и веса модели. Конфигурация обычно не является обученными весами, но должна соответствовать тому, как веса учились делать прогноз.
- Noise schedule и learning-rate schedule. Первое относится к уровню шума в данных, второе — к размеру обновления параметров при обучении.
Частые вопросы
Какое расписание лучше?
Универсального ответа нет. Результат зависит от обучения модели, типа предсказания, алгоритма перехода, числа вычислений и задачи. Практичной отправной точкой служит конфигурация, опубликованная вместе с моделью.
Чем schedule отличается от sigmas?
Sigmas — один из способов представить или дискретизировать уровни шума. В конкретном инструменте список sigmas может и быть sampling schedule. Но в теории расписание также задают через beta, alpha, SNR или непрерывное время.
Больше steps исправляет плохое расписание?
Не обязательно. Дополнительные точки уменьшают шаг численного решения, но не исправляют неверные конечные условия, несовместимый тип предсказания или ошибочное преобразование времени.
Schedule влияет на скорость?
При одинаковом числе обращений к модели сама форма списка обычно почти не меняет стоимость. Но два пресета могут скрывать разные алгоритмы перехода, дополнительные оценки или другое число фактических вычислений, поэтому сравнивать лучше по NFE и времени всего запуска.
Можно ли нарисовать своё расписание?
Да, если инструмент принимает пользовательские моменты времени или уровни шума и выбранный алгоритм совместим с ними. Произвольный монотонный список не гарантирует корректный результат: важны границы, направление, параметризация и обучение модели.
Главное
Noise schedule связывает время диффузионного процесса с уровнем сигнала и шума. В обучении оно задаёт зашумление примеров; при генерации scheduler выбирает совместимую последовательность уровней, а sampler или solver выполняет переходы.
Кривая, число шагов и правило перехода — три разных настройки. Их полезно оценивать вместе с конфигурацией обучения, потому что совместимость важнее названия «лучшего» schedule.