25 / 33 · Модели, основанные на энергии
Модели, основанные на энергии
Любая сеть со скалярным выходом задаёт плотность с точностью до неизвестной нормировочной константы как экспоненту от её выхода, взятого со знаком минус: градиент правдоподобия с позитивной и негативной фазами, контрастивная дивергенция с короткими цепочками Ланжевена и буфером воспроизведения, почему энергии дрейфуют и как их удерживает штраф L2, почему обучение расходится, оценки без сэмплирования — NCE и score matching — и применения от обнаружения данных вне распределения до JEM и композиции энергий.
Метод максимального правдоподобия · Сэмплирование ненормированных плотностей: MALA, гамильтонов Монте-Карло и NUTS · Логистическая регрессия
На этой странице 20
Предыдущая заметка сэмплировала из плотности, известной лишь с точностью до константы, с помощью MALA, гамильтонова Монте-Карло и NUTS. Там целевое распределение было фиксированным. Модель, основанная на энергии (energy-based model, EBM), делает его обучаемым: нейронная сеть с одним скалярным выходом задаёт плотность , а обучение сдвигает , пока эта плотность не приблизит данные (LeCun et al., 2006). Архитектура ничем не ограничена: не нужны ни обратимость, как в потоках, ни порядок пикселей, как в авторегрессионных моделях, ни энкодер, как в VAE. Цена — нормировочная константа . Правдоподобие нельзя вычислить, для его градиента нужны сэмплы из модели, и поэтому каждый шаг обучения запускает марковскую цепь на той самой модели, которая обучается. В этой заметке мы выводим этот градиент, строим вокруг него стандартный рецепт (короткие цепочки Ланжевена, буфер воспроизведения, штраф на энергии), объясняем, почему обучение неустойчиво, приводим две оценки, которым не нужны сэмплы во время обучения, и заканчиваем тем, для чего энергии используются помимо генерации.
Обозначения. — точка данных, например изображение MNIST с значениями пикселей в . — распределение данных с плотностью . Энергия (energy) — сеть с параметрами , а плотность модели — со статистической суммой (partition function) . Сэмплы данных — позитивные примеры (positive examples); сэмплы , которые должны происходить из , — негативные примеры (negative examples). — градиент по параметрам, — по входу. Один шаг Ланжевена размера — это с , как в курсе теории вероятностей, а — число шагов цепочки. Второй аргумент — дисперсия.
Энергия задаёт плотность#
Низкая энергия означает высокую вероятность. Экспонента превращает любую вещественнозначную в положительную функцию, а деление на делает её интеграл равным единице. Это распределение Больцмана, или Гиббса, из статистической физики при температуре 1. Единственное условие — конечность : энергия должна достаточно быстро расти на бесконечности, или область должна быть ограниченной, как у изображений с пикселями в . Квадратичная энергия даёт и ; сеть может нарисовать любой ландшафт, с таким числом долин, сколько мод у данных.
Значение имеют только разности энергий:
Прибавление константы к энергии умножает на и не меняет . Эта свобода вернётся ниже как проблема сдвига.
Почему бы не вычислить ? Это интеграл по . Сетка всего из 10 точек на пиксель изображения MNIST содержит узлов. Поэтому всё дальнейшее устроено так, чтобы сокращалась или вообще не требовалась.
Для решений нормировка не нужна#
Многие применения энергии сравнивают её значения и никогда их не нормируют. Для энергии входа и ответа инференс — это : классификация, когда — метка, и восстановление, когда — зашумлённое изображение, а — чистое (LeCun et al., 2006, раздел 1.1 и рисунок 2). Важен только порядок энергий, поэтому не появляется. EBM для изображений делают то же самое динамикой Ланжевена: цепочка, начатая с испорченного тестового изображения, убирает импульсный шум («соль и перец», salt-and-pepper) или заполняет закрытую маской область (Du and Mordatch, 2019, раздел 4.2). Плотность, а с ней и , нужна, когда модель должна порождать сэмплы, сообщать правдоподобие или сочетаться с другими моделями в общей шкале.
Градиент правдоподобия: позитивная и негативная фазы#
Метод максимального правдоподобия минимизирует отрицательный логарифм правдоподобия, который с точностью до константы равен KL-дивергенции распределения данных относительно модели (заметка об энтропии). Для EBM , поэтому
Первое слагаемое — среднее по данным; его градиент равен . Вся трудность — во втором слагаемом. Три шага:
- Производная логарифма сложной функции: .
- Дифференцируем под знаком интеграла; это законно, когда дифференцируема по , а градиент подынтегральной функции ограничен интегрируемой функцией: .
- Делим на и узнаём плотность модели :
Вместе:
а градиент логарифма правдоподобия — то же выражение с противоположным знаком, . Шаг градиентного спуска понижает энергию в точках данных и повышает её в собственных сэмплах модели: негативная фаза поднимает энергию каждой точки пропорционально её вероятности в модели (LeCun et al., 2006, раздел 2.2.4). Обновление останавливается, когда два математических ожидания совпадают, : метод максимального правдоподобия приравнивает средние статистик по данным и по модели. Вывод верен для любой архитектуры (Song and Kingma, 2021, раздел 3).
Разобранный пример: три состояния. Пусть , а энергия задана таблицей, . Тогда и . Пусть данные — . Для таблицы равно 1 при и 0 иначе, поэтому две фазы равны и :
Шаг против этого градиента повышает , где модель помещает слишком много массы, и понижает и . С шагом 1 энергии становятся , а — ближе к . Неподвижная точка — , то есть . Три компоненты градиента в сумме дают ноль, поэтому средняя энергия остаётся равной 1: градиент никогда не сдвигает общий уровень энергий.
Зачем негативной фазе сэмплы из модели#
Позитивная фаза — среднее по обучающей выборке. Негативная фаза — среднее по : по распределению, которое обучается, меняется после каждого обновления и нормировочная константа которого неизвестна. Выборке по значимости (importance sampling) понадобилось бы предлагающее распределение, близкое к в измерениях, а найти его так же трудно, как решить исходную задачу. Остаются марковские методы Монте-Карло (Markov chain Monte Carlo, MCMC), которым нужен только
поскольку зависит от , но не от . Динамика Ланжевена (Langevin dynamics),
— обычный выбор для изображений: каждый шаг стоит одного градиента сети энергии по входу, то есть одного прямого и одного обратного прохода (Du and Mordatch, 2019, раздел 3). Распределение приближается к при и ; MALA и HMC из предыдущей заметки устраняют смещение, вызванное размером шага, ценой отношения плотностей, которое для EBM равно и тоже не содержит . В литературе по EBM сэмплер часто называют SGLD — по стохастической градиентной динамике Ланжевена (stochastic gradient Langevin dynamics) из работы Welling and Teh (2011), где шаги Ланжевена с градиентами по мини-батчам сэмплировали параметры модели из апостериорного распределения. Здесь градиент точный, а цепочка движется в пространстве данных.
Препятствие — стоимость. На мультимодальной энергии, например такой, которая описывает изображения, цепочки Ланжевена перемешиваются медленно: цепочки из разных стартов застревают в разных модах (Nijkamp et al., 2019, раздел 1.1). После каждого обновления параметров понадобилась бы длинная цепочка. Методы ниже укорачивают цепочки и платят за это смещением.
Контрастивная дивергенция: ранняя остановка цепочек#
Hinton (2002) предложил останавливать цепочки рано. Контрастивная дивергенция (contrastive divergence, CD-) запускает каждую цепочку из точки данных, делает лишь шагов (в исходной работе о произведениях экспертов — один полный шаг Гиббса) и использует конечные точки как негативные примеры. Она не следует градиенту правдоподобия. Обозначим через данные, через — распределение после одного шага цепи, а через — её равновесное распределение. CD-1 следует, если отбросить слагаемое, обычно малое, градиенту
Разность никогда не бывает отрицательной, потому что шаг марковской цепи не может увеличить KL-дивергенцию относительно её стационарного распределения. Для цепи, все переходы которой имеют положительную вероятность, она равна нулю, только когда , а это означает, что данные уже имеют равновесное распределение: модель идеальна (Hinton, 2002, раздел 3). Иными словами, CD требует, чтобы цепь не уходила от данных.
Современные EBM для изображений сохраняют короткие цепочки, но запускают их из шума: равномерного шума в диапазоне пикселей, за которым следуют шагов Ланжевена на текущей энергии, где — примерно от 10 до 100 (Du and Mordatch, 2019; Nijkamp et al., 2019). Оценка градиента та же, только — конечные точки цепочек. Поскольку конечные точки не являются сэмплами из , оценка смещена (Song and Kingma, 2021, раздел 3).
Чему учатся короткие цепочки#
У смещения есть определённое направление, и пример с одним параметром показывает его точно. Пусть данные — , а энергия — , так что и правильный ответ — . Поскольку , градиент CD равен
Обучение останавливается там, где второй момент негативных сэмплов равен второму моменту данных, , какое бы для этого ни потребовалось. Пусть негативные сэмплы получаются шагами Ланжевена из , дисперсия которого равна 3. Каждый шаг умножает на , где при , и добавляет независимый шум дисперсии , поэтому после шагов
При и цепочка едва успевает сжать шум, и довести дисперсию её выхода до 1 можно только крутой энергией: CD останавливается на , то есть на модели со стандартным отклонением 0.30 вместо 1. При она останавливается на . При — на , практически на предельном значении для нескорректированной динамики Ланжевена с этим размером шага; оно немного меньше 1 из-за смещения от дискретизации. Сэмплы короткой цепочки совпадают с данными по дисперсии — единственной статистике, которую видит эта энергия; плотность модели с данными не совпадает. Nijkamp et al. (2019) описывают тот же эффект для EBM изображений, обученных короткими цепочками из шума: получается плохая плотность, но хороший сэмплер — фиксированное число шагов Ланжевена, превращающее шум в реалистичные изображения.
Короткие цепочки учат неправильную плотность
Персистентные цепочки и буфер воспроизведения#
Цепочки, перезапускаемые на каждом шаге, выбрасывают работу предыдущего шага. Персистентная контрастивная дивергенция (persistent contrastive divergence; Tieleman, 2008) их сохраняет: каждый шаг обучения продолжает цепочки с того места, где остановился предыдущий. Параметры между шагами меняются мало, поэтому цепочка, близкая к равновесию для старой модели, остаётся близкой к нему и для новой, а эффективная длина цепочек растёт в ходе обучения. Буфер воспроизведения (replay buffer) обобщает это до пула прошлых сэмплов (Du and Mordatch, 2019, раздел 3.2). Цепочка начинается с сохранённого сэмпла с вероятностью 0.95 и с равномерного шума в остальных случаях, делает шагов Ланжевена, и её конечная точка возвращается в буфер. Сохранённые сэмплы позволяют продолжать уточнение от одного шага обучения к другому, так что хватает коротких цепочек. Свежий шум продолжает исследовать пространство и не даёт буферу схлопнуться на нескольких изображениях. Du и Mordatch сочли буфер необходимым: на непрерывном MNIST обучение с обычными персистентными цепочками вместо буфера дало заметно худшее правдоподобие, а к размеру буфера свыше примерно 10 000 сэмплов обучение было нечувствительно (приложения A.3 и A.4).
В гауссовском примере буфер делает возраст сэмпла геометрическим: сэмпл прошёл раундов по шагов с вероятностью , в среднем 20 раундов. Тогда CD останавливается на при вместо и на при вместо — синяя кривая на рисунке выше. Свежие 5% сохраняют смещение: они попадают в негативную фазу всего после шагов.
Один шаг обучения#
Конфигурация, которая обучает небольшую свёрточную энергию на MNIST (четыре свёртки с шагом 2 и активациями Swish и два линейных слоя, 76 993 параметра; пиксели в ), собирает эти части вместе. Рисунок показывает один шаг; номера пунктов ниже совпадают с номерами на рисунке.
Шаг обучения EBM: буфер, цепочки Ланжевена, две фазы
- Старты. 128 цепочек. Каждая начинается с сохранённого сэмпла с вероятностью 0.95 или с равномерного шума на с вероятностью 0.05 — примерно 6.4 свежих старта на батч. Буфер хранит до 8192 изображений.
- Шаги Ланжевена. 60 шагов при фиксированных параметрах сети. Каждый шаг добавляет гауссов шум со стандартным отклонением 0.005, ограничивает значения пикселей отрезком , сдвигает точку против градиента энергии с размером шага 10, предварительно обрезав каждую компоненту градиента до , и снова ограничивает значения пикселей. Градиентный шаг сдвигает пиксель не более чем на 0.3.
- Две фазы. Сеть вычисляет энергии батча из 128 изображений данных и 128 сэмплов .
- Функция потерь и обновление. с (этот штраф объяснён в следующем разделе); её минимизирует Adam с и шагом обучения .
- Запись обратно. Сэмплы помещаются в начало буфера; сверх 8192 изображений самые старые выбрасываются.
Настройки Du и Mordatch для CIFAR-10 близки: 60 шагов размера 10, компоненты градиента обрезаются до 0.01, шум со стандартным отклонением 0.005, буфер на 10 000 изображений, вес штрафа 1, Adam с , и шагом обучения , спектральная нормализация во всех слоях; изображения отмасштабированы в (Du and Mordatch, 2019, приложение A.11).
Генерация после обучения. Новые изображения получаются цепочками, которые начинаются с равномерного шума и работают дольше, чем при обучении, например 256 шагов вместо 60: генерация выполняется один раз, а не на каждом обновлении, и буфера, из которого можно было бы стартовать, у неё нет. Du и Mordatch, напротив, на этапе тестирования сэмплируют из буфера воспроизведения с несколько большим шумом, чем при обучении, потому что при слабом шуме цепочки оседают на немногих изображениях высокой вероятности (приложение A.2).
Проблема сдвига: почему энергии дрейфуют#
Функция потерь CD зависит только от разностей энергий. Если сдвинуть все энергии на одну и ту же константу, не изменится, как и . В примере с тремя состояниями компоненты градиента в сумме дают ноль; для сети, последний слой которой имеет смещение , каждая энергия зависит от с производной 1, поэтому точно. Ничто в функции потерь не удерживает общий уровень энергий, и остальные параметры свободно двигают его как побочный эффект своих обновлений. Масштаб тоже не удерживается: всякий раз, когда сэмплер отстаёт от модели, сеть может увеличить разрыв , увеличив все энергии по модулю. На практике разность между позитивными и негативными энергиями остаётся осмысленной, а сами значения дрейфуют к численно неустойчивым величинам (Du and Mordatch, 2019, раздел 3.3).
Штраф L2. Добавим малое кратное среднего квадрата энергии обоих батчей:
Он делает две вещи. Когда сэмплы похожи на данные, у обоих батчей одинаковое распределение энергий, слагаемое CD в среднем обращается в ноль, и штраф притягивает общий уровень к нулю, так что энергии данных оказываются около 0. Когда сэмплы не похожи на данные, штраф ограничивает разрыв.
Разобранный пример. Предположим, что сеть может задать одну энергию для всех данных и одну энергию для всех сэмплов. Она минимизировала бы . Приравнивание обеих производных к нулю даёт и , так что . При энергии останавливаются на , разрыв равен 10; при — на . Без штрафа минимума нет: функция потерь неограниченно убывает при и .
Штраф не входит в правдоподобие и немного сдвигает оптимум, поэтому держат малым: 0.1 подходит для конфигурации MNIST выше, а Du и Mordatch используют 1 на CIFAR-10. Они сочетают штраф со спектральной нормализацией всех слоёв, которая ограничивает константу Липшица энергии и не даёт её градиентам резко меняться (заметка о WGAN). Du и Mordatch также приписывают обоим приёмам сохранение интегрируемости (раздел 3.3).
Практические решения#
- Гладкие активации. Сэмплер следует . Для сети с ReLU энергия кусочно-линейна по , и её градиент по входу скачком меняется на границах линейных областей. Гладкие активации, такие как Swish, , сохраняют поле градиентов гладким; Du и Mordatch сообщают, что Swish заметно улучшает устойчивость (приложение A.12).
- Никаких слоёв нормализации. Du и Mordatch обнаружили, что батч-нормализация (batch normalization), групповая нормализация, нормализация слоя, попиксельная и другие нормализации, по-видимому, ухудшают сэмплирование, и предполагают, что они делают шаг Ланжевена зависимым от других точек данных (приложение A.12). Этот механизм подходит для батч-нормализации, статистики которой смешивают примеры батча. Групповая, послойная и попиксельная нормализации считают статистики внутри одного примера, такой зависимости не создают, и почему они вредят, не установлено.
- Без импульса. Негативные сэмплы на каждом шаге порождаются заново из текущей модели, поэтому поверхность функции потерь движется вместе с параметрами, а импульс (momentum) продолжает толкать в направлениях, вычисленных для прежней поверхности. Обычная настройка — Adam с (приложение A.11).
- Немного шума на данных. Сэмплы всегда несут шум сэмплера, а многие пиксели данных лежат точно на границе диапазона (чёрный фон MNIST). Добавление к данным сравнимого шума — со стандартным отклонением 0.005 в конфигурации MNIST и 0.03 в JEM (Grathwohl et al., 2019, приложение A) — не даёт энергии различать их по такому тривиальному признаку.
- Смотреть на сэмплы, а не на функцию потерь. Слагаемое CD и штраф рано устанавливаются около нуля и остаются там, потому что негативные сэмплы следуют за моделью. Прогресс виден в другом: в изображениях, которые каждые несколько эпох генерируются из шума, в содержимом буфера — это то, что модель сейчас считает негативными примерами, — и в средней энергии равномерного шума, которая должна продолжать расти.
Неустойчивость#
Обучение EBM легко расходится (Grathwohl et al., 2019, раздел 6 и приложение H.3). Типичный сбой начинается, когда на поверхности энергии появляется много острых локальных минимумов. Цепочки из шума падают в ближайший из них и остаются похожими на шум. Негативная фаза продолжает поднимать энергию там, где они находятся, а позитивная — понижать её на данных, так что разрыв растёт, а сэмплы перестают улучшаться. В итоге модель приписывает высокую вероятность обучающим данным, сэмплер выдаёт только шум, а поле градиентов становится бесполезным для сэмплирования. Тревожный признак — негативные сэмплы, энергии которых намного больше, чем у обучающих данных (Du and Mordatch, 2019, приложение A.12).
Средства, примерно от самых дешёвых:
- штраф L2 и спектральная нормализация, которые ограничивают энергии и их градиенты;
- меньший шаг обучения или больше шагов Ланжевена на обновление. По наблюдениям Grathwohl et al., только эти два изменения надёжно стабилизировали расходящуюся модель. В их масштабе цепочкам, перезапускаемым из шума, требовалось 80 шагов на обновление для устойчивого обучения, и даже такие модели расходились на поздних этапах обучения; персистентные цепочки с 20 шагами были в четыре раза быстрее, но менее устойчивы (приложения H.2 и H.3);
- перезапуск с более ранней контрольной точки, которая ещё не разошлась, возможно, с другим начальным значением генератора (seed) (приложение H.3).
Самые чувствительные гиперпараметры — параметры сэмплера: размер шага, число шагов и уровень шума, за ними следуют шаг обучения и ширина сети. Du и Mordatch нашли самым чувствительным размер шага, с пригодным диапазоном в два-три порядка величины (приложение A.12).
Оценка качества модели без нормировочной константы#
Без правдоподобие сообщить нельзя. Выборка по значимости с отжигом (annealed importance sampling; Neal, 2001) оценивает нормировочную константу, переходя от простого распределения к через промежуточные плотности, пропорциональные , для от 0 до 1, с шагами MCMC на каждом этапе и весами значимости (importance weights), которые перемножаются вдоль пути; средний вес — несмещённая оценка . Метод работает на небольших задачах. Du and Mordatch (2019) получили так нижнюю и верхнюю оценки правдоподобия непрерывного MNIST, но на CIFAR-10 более 300 000 цепочек, работавших два дня, всё ещё оставляли большой зазор между оценками (приложение A.3). Поэтому EBM изображений оценивают по их сэмплам, например с помощью FID, и по задачам из последних разделов.
Шумоконтрастное оценивание: Z через классификацию#
Двум оценкам из этого и следующего разделов не нужны сэмплы из модели во время обучения. Шумоконтрастное оценивание (noise-contrastive estimation, NCE; Gutmann and Hyvärinen, 2010) считает логарифм нормировочной константы ещё одним параметром. Модель —
где оценивает . Выберем шумовое распределение (noise distribution) , из которого легко сэмплировать и плотность которого можно вычислить, например гауссово. Возьмём столько же сэмплов шума, сколько сэмплов данных, и обучим логистическую регрессию их различать, зафиксировав логит равным логарифму отношения плотностей модели и шума:
— логарифм правдоподобия меток «данные» и «шум» (Gutmann and Hyvärinen, 2010, раздел 2.2). Почему классификатор выучивает плотность? При равном числе сэмплов данных и шума истинная вероятность того, что точка взята из данных, равна . У лучшего классификатора в точности, включая нормировку. Gutmann и Hyvärinen показывают, что как функция от имеет максимум в и других экстремумов не имеет, если всюду, где (теорема 1), и что оценка состоятельна при условиях, аналогичных условиям для метода максимального правдоподобия (теорема 2). Поэтому в популяционном оптимуме правильно специфицированной модели, то есть такой, семейство которой содержит плотность данных, подогнанная функция интегрируется в единицу без всяких ограничений, а равно . На конечной выборке — лишь оценка, и нормировка выполняется приближённо, а для неверно специфицированной энергии лучшая подгонка может и вовсе не интегрироваться в единицу: тогда — обучаемый параметр, а не численная гарантия.
Метод максимального правдоподобия так не может: при свободном правдоподобие неограниченно растёт при , поскольку ничто не заставляет интегрироваться в единицу (раздел 1). Целевая функция классификации заставляет. Слишком большое заставляет классификатор называть «данными» и шум, и за это он платит на сэмплах шума.
Разобранный пример. Данные — , шум — , энергия имеет правильную форму, , так что неизвестно только . Правильное значение — . В точке истинная вероятность «данных» равна , и с классификатор даёт . Ненормированная модель, , даёт : она слишком уверена, поэтому логистическая функция потерь уменьшает . Численная максимизация по точной целевой функции (по всей генеральной совокупности, а не по выборке) даёт .
Шумовое распределение определяет, сколько модель выучит. Из него должно быть легко сэмплировать, его плотность должна вычисляться, и оно должно быть близко к данным. Если шум совпадает с распределением данных, асимптотическая ковариация оценки вдвое больше границы Крамера–Рао (раздел 2.4). Далёкий шум делает задачу тривиальной: равномерный шум отличается от цифр по нескольким грубым признакам, таким как гладкость или насыщенные пиксели фона, и энергия не выучивает ничего тоньше. Лучший шум даёт предварительная модель данных, например поток (Song and Kingma, 2021, раздел 5). С точки зрения заметки о GAN NCE — это дискриминатор, обученный против фиксированного генератора , логит которого ограничен видом ; это ограничение и превращает дискриминатор в плотность.
Score matching: без сэмплов и без Z#
Score модели (градиент логарифма плотности по входу) у EBM не содержит : , как показано выше. Поэтому подгонка score модели к score данных минимизацией дивергенции Фишера (Fisher divergence) обучает энергию без нормировочной константы и без сэмплов (Hyvärinen, 2005); этот подход называют score matching (сопоставление градиентов логарифма плотности). Score данных неизвестен. Заметка о score matching убирает его интегрированием по частям и выводит более дешёвые срезанную и денойзинговую версии. Для энергии целевая функция Хюваринена — это с точностью до константы, где — лапласиан, след гессиана; денойзинговый score matching регрессирует на . В обоих случаях функция потерь содержит градиент энергии по входу, так что каждый шаг обучения дифференцирует дважды, а для генерации всё равно нужна динамика Ланжевена. Две оценки без сэмплирования связаны: NCE, шум которого — данные, сдвинутые на малый вектор, со слегка изменённым классификатором переходит в срезанный score matching, когда сдвиг стремится к нулю (Song and Kingma, 2021, раздел 5.1).
Обнаружение данных вне распределения#
Энергия, обученная с негативной фазой, низка на данных и поднята везде, куда приходили её собственные сэмплы. Поэтому — естественный детектор необычных входов: будем считать лежащим вне распределения (out of distribution), если его энергия превышает порог, выбранный на отложенных данных. Уверенность классификатора — слабая замена, поскольку современные классификаторы склонны к излишней уверенности (Grathwohl et al., 2019, раздел 5.2). Есть четыре оговорки.
- Высокая плотность — не типичность. Потоки, VAE и PixelCNN, обученные на CIFAR-10, приписывают изображениям номеров домов из SVHN более высокое правдоподобие, чем тестовым изображениям CIFAR-10 (Nalisnick et al., 2019). Модель правдоподобия не становится автоматически детектором выбросов.
- EBM справляются лучше, но не хорошо. По AUROC отделения тестовых изображений CIFAR-10 от других данных (0.5 — уровень случайного угадывания) EBM получает 0.63 против SVHN, где у PixelCNN++ 0.32, а у Glow 0.24; в среднем по пяти видам выбросов — 0.62 против 0.47 и 0.42. Та же EBM получает 0.30 на однотонных изображениях и 0.48 на текстурах — хуже случайного угадывания (Du and Mordatch, 2019, раздел 4.4 и рисунок 10).
- Поднято только то, что посетил сэмплер. Равномерный шум, с которого стартуют цепочки, получает высокую энергию. Изменения, которых сэмплер никогда не порождал, например повёрнутая или уменьшенная цифра, могут повысить энергию лишь немного.
- У энергий нет общей шкалы. Порог нужно калибровать для каждой модели; штраф L2 держит энергии данных около нуля, и это помогает его выбрать.
Grathwohl et al. (2019) предлагают для EBM другой показатель — норму градиента по входу , исходя из интуиции, что типичный вход лежит там, где плотность меняется медленно, так что большой градиент выдаёт точку с высокой плотностью, но малой массой (раздел 5.3.3). Эта интуиция — не общее свойство типичных множеств. Для score равен : на типичной оболочке его норма около , 28 при , а в центре — точке наибольшей плотности, причём нетипичной, — она равна 0. Поэтому норма градиента — эмпирический детектор, поведение которого зависит от модели и данных, и его порог и направление нужно калибровать на отложенных примерах из распределения и вне его, как и для самой энергии.
JEM: классификатор — скрытая EBM#
Классификатор с классами выдаёт логиты и вероятности классов . Grathwohl et al. (2019) читают те же логиты как отрицательную энергию пары :
Суммирование по даёт плотность одного только входа,
а деление совместного распределения на маргинальное сокращает и возвращает softmax: — тот же классификатор, что и раньше. Прибавление одной и той же константы ко всем логитам входа не меняет классификатор, но меняет . В этой степени свободы, которую обычное обучение не использует, и живёт плотность; такую модель называют совместной моделью, основанной на энергии (joint energy-based model, JEM).
Разобранный пример. Логиты дают вероятности классов , и . Логиты дают те же вероятности и . Классификатор не различает эти два входа; по второй в раза вероятнее.
JEM обучается на : кросс-энтропия для слагаемого классификатора, которое вычисляется точно, плюс градиент EBM для с энергией ; негативные сэмплы получаются шагами Ланжевена из буфера воспроизведения на 10 000 изображений, 20 шагов на обновление, 5% цепочек перезапускаются из равномерного шума, шум со стандартным отклонением 0.01 (раздел 4 и приложение A). WideResNet-28-10 без батч-нормализации, обученная так на CIFAR-10, достигает доли правильных ответов (accuracy) 92.9% при Inception Score 8.76 и FID 38.4 (таблица 1). Совместное обучение также улучшает калибровку, обнаружение данных вне распределения и устойчивость к состязательным примерам (adversarial robustness) по сравнению с тем же классификатором, обученным отдельно (раздел 5). Цена — та же, что у любой EBM: каждый шаг Ланжевена стоит примерно столько же, сколько шаг обучения классификатора, а модели регулярно расходились, и их приходилось перезапускать с меньшим шагом обучения или более сильной регуляризацией (разделы 6 и 7).
Композиция энергий#
Сложение энергий перемножает плотности:
— это произведение экспертов (product of experts; Hinton, 2002). Произведение велико только там, где велики оба множителя, поэтому сумма энергий действует как логическое И для ограничений, которые кодируют энергии. Score суммы равен сумме score, поэтому динамике Ланжевена на составной модели нужны только градиенты частей и никакого нового обучения.
Разобранный пример. — это , а — это . Их сумма равна , то есть энергии : произведение лежит между ними и уже каждого из них.
Du and Mordatch (2019) обучают отдельные условные энергии для масштаба, положения и поворота фигуры и генерируют изображения со всеми тремя атрибутами динамикой Ланжевена на сумме; суммы энергий, дообученные на обучающих выборках, порождают и сочетания размера и положения, которые при обучении вместе не встречались (раздел 7). Части должны иметь сравнимые масштабы. Отдельно обученные энергии измеряются в произвольных единицах (LeCun et al., 2006, раздел 1.3), и вес одного слагаемого — или, что то же самое, температура — меняет результат.
Что изменилось#
| Критик WGAN | EBM, обучение с MCMC | NCE | Score matching | |
|---|---|---|---|---|
| Выход сети | значение критика | энергия | энергия и константа | энергия; её градиент по входу — score |
| Негативные примеры | от сети-генератора | цепочки Ланжевена на , часто из буфера | сэмплы фиксированной шумовой плотности | нет |
| Градиент через сэмплер | да, генератор обучается | нет | нет | сэмплера нет |
| Нормировочная константа | не определена | никогда не вычисляется | выучивается как | сокращается |
| Что держит обучение под контролем | ограничение Липшица | L2 на энергиях, спектральная нормализация | шум, близкий к данным | вторые производные или уровень шума |
| Сэмплирование после обучения | один проход генератора | динамика Ланжевена | динамика Ланжевена | динамика Ланжевена |
| Типичный сбой | критик не липшицев | расходимость; плотность, сформированная сэмплером | тривиальная классификация против далёкого шума | стоимость следа гессиана; score зашумлённых данных |
Ограничения#
- Сэмплирование внутри обучения. Каждое обновление выполняет для сэмплера прямых и обратных проходов сети, 60 в конфигурации MNIST, так что обучение в десятки раз медленнее обучения классификатора того же размера (Grathwohl et al., 2019, раздел 7).
- Смещённые градиенты. Короткие цепочки, как и ослабленный сэмплер с температурой около , не сэмплируют . Выученная плотность сформирована сэмплером, как показывает гауссовский пример, и не является калиброванным правдоподобием.
- Неустойчивость. Обучение расходится без штрафа, спектральной нормализации и тщательной настройки сэмплера, а иногда и несмотря на них.
- Правдоподобия бесплатно нет. Чтобы сообщить , нужна , а выборка по значимости с отжигом слишком медленна для изображений размера CIFAR-10.
- Медленная генерация. Сотни шагов Ланжевена на сэмпл, а длинные цепочки медленно исследуют моды; по словам Du и Mordatch, исследование мод динамикой Ланжевена для безусловного CIFAR-10 «заняло очень много времени» (took a very long time; раздел 4.1).
- У оценок без сэмплирования свои издержки. NCE зависит от шумового распределения, близкого к данным, а для изображений такое трудно найти; score matching требует вторых производных или уровня шума, а для сэмплирования всё равно нужна динамика Ланжевена.
Итоги#
- Сеть энергии задаёт . Значение имеют только разности энергий; — вычислительно неразрешимый (intractable) интеграл.
- Градиент правдоподобия равен : понизить энергию на данных, повысить на сэмплах модели. Негативной фазе нужны сэмплы из модели, и их даёт динамика Ланжевена по .
- Контрастивная дивергенция останавливает цепочки через шагов. Короткие цепочки смещают модель: она выучивает энергию, -шаговый сэмплер которой воспроизводит данные, а не плотность данных. Персистентные цепочки и буфер воспроизведения (95% старых сэмплов, 5% свежего шума) удлиняют цепочки без дополнительных затрат.
- Функция потерь видит только разности энергий, поэтому уровень и масштаб энергий дрейфуют; штраф L2 прижимает уровень к нулю и ограничивает разрыв величиной порядка .
- Обучение неустойчиво; помогают гладкие активации, отказ от слоёв нормализации, Adam без импульса, малые шаги обучения и больше шагов сэмплирования.
- NCE выучивает и , классифицируя данные против шума; score matching подгоняет к score данных. Ни один из этих методов не сэмплирует во время обучения.
- Энергии обнаруживают выбросы (с оговорками), любой классификатор — это EBM с (JEM), а сложение энергий перемножает плотности.
Ноутбук#
Ноутбук об EBM из репозитория HSE-LAMBDA Deep Generative Models обучает конфигурацию MNIST из этой заметки (ячейки нумеруются с 1, считая все ячейки подряд, включая текстовые). Он следует Tutorial 8, Deep Energy-Based Generative Models, из курса глубокого обучения Амстердамского университета, автор которого — Phillip Lippe, и использует PyTorch Lightning. В ноутбуке плотность модели обозначена , а в этой заметке — .
- Ячейки 1–3: теория. Энергия и статистическая сумма; score и score matching, с упоминанием денойзингового и срезанного score matching; NCE с отношением для шумовой плотности ; вывод градиента правдоподобия, как в этой заметке; сэмплирование Ланжевена с от 10 до 60. Ячейка 2 также упоминает SGLD и выборку по значимости с отжигом, которые ноутбук не реализует.
- Ячейки 4–6: подготовка. Импорты, начальное значение генератора 42, устройство (CUDA, Apple MPS или CPU) и загрузка предобученной контрольной точки MNIST из исходного руководства вместе с журналом TensorBoard. Если контрольная точка есть, ячейка 27 загружает её и пропускает обучение.
- Ячейка 7: применения помимо генерации. Классификация и шумоподавление как минимизация по ответу , со встроенным рисунком.
- Ячейки 8–9: данные. MNIST, 60 000 обучающих и 10 000 тестовых изображений , отмасштабированных в , чтобы сэмплер мог ограничивать значения фиксированным диапазоном. Загрузчик обучающих данных использует размер батча 128, перемешивание и
drop_last=True(468 батчей за эпоху); тестовый загрузчик с размером батча 256 служит валидационной выборкой. - Ячейки 10–12: модель.
CNNModel: свёртки (ядро 5, шаг 2, дополнение 4: ), , и (ядро 3, шаг 2: , , ), Swish после каждой, затем со Swish между ними; 76 993 параметра, слоёв нормализации нет. Ячейка 12 указывает, что сеть выдаёт , так что «score» в ноутбуке — это отрицательная энергия. - Ячейки 13–14: сэмплер и буфер.
Samplerначинает с буфера из 128 равномерных изображений. Каждый вызов берёт свежих равномерных изображений, а остальные выбирает из буфера с возвращением (random.choices), затем запускаетgenerate_samples: параметры заморожены, модель в режиме оценки, 60 шагов, каждый из которых — шум (стандартное отклонение 0.005), ограничение диапазона, градиентный шаг размера 10 по с обрезкой каждой компоненты до и снова ограничение диапазона. Новые сэмплы добавляются в начало, а буфер обрезается до 8192 изображений; этого размера он достигает после 63 шагов обучения. - Ячейки 15–19: обучение. Ячейка 16 объясняет проблему сдвига, штраф L2 с весом и даёт практические советы (баланс размера шага и шума, , равное 0.1 или 0.01, короткие и длинные цепочки, большой буфер).
DeepEnergyModel(ячейка 18) использует Adam с шагом обучения и betas и ступенчатое уменьшение шага обучения: умножение на 0.97 после каждой эпохи. Каждый шаг обучения добавляет к данным шум со стандартным отклонением 0.005, берёт 128 сэмплов и вычисляетcdiv_loss = mean f(x⁻) − mean f(x⁺), то есть , иreg_lossсо значением по умолчанию . Валидация сравнивает тестовые изображения с равномерным шумом и записывает в журнал . Тестового шага нет (ячейка 19). - Ячейки 20–25: колбэки.
GenerateCallbackкаждые 5 эпох делает 256 шагов размера 10 из равномерного шума для 8 изображений и записывает 8 промежуточных стадий;SamplerCallbackкаждые 5 эпох записывает 32 случайных изображения из буфера;OutlierCallbackкаждую эпоху записывает среднее по 1024 равномерным изображениям. - Ячейки 26–28: запуск. Trainer из Lightning на 60 эпох с обрезкой нормы градиента на уровне 0.1, контрольной точкой, выбираемой по наименьшему значению на валидации (это эпоха, которая лучше всего отделяет тестовые цифры от равномерного шума, а не эпоха с лучшими сэмплами), тремя колбэками и монитором шага обучения. Одна эпоха — это 468 шагов обучения по 60 проходов сэмплера, то есть 28 080 проходов сети на батчах из 128 изображений.
- Ячейки 29–34: TensorBoard. Загружается скачанный журнал. Ячейка 33 встраивает снимок экрана; ячейка 34 отмечает, что слагаемое CD и штраф быстро сходятся примерно к нулю, а прогресс виден в сэмплах и в падающем «score» случайных изображений.
- Ячейки 35–39: генерация. С начальным значением генератора 43 четыре цепочки из равномерного шума делают по 256 шагов размера 10; график показывает старт и каждый 32-й шаг. Ячейка 39 описывает графики исходного руководства (восьмёрку и двойку), а не графики, сохранённые здесь.
- Ячейки 40–54: обнаружение данных вне распределения. Ячейка 40 обосновывает задачу и ссылается на JEM. Ячейки 41 и 43 печатают среднее по 128 равномерным изображениям и по обучающему батчу; ячейка 44 говорит, что второе близко к 0 из-за штрафа. Ячейки 45–53 сравнивают первое тестовое изображение с тремя изменёнными версиями: с гауссовым шумом со стандартным отклонением 0.3 и ограничением диапазона (ячейка 49); с
flip(dims=(1, 2))(ячейка 51); с цифрой, прореженной в 2 раза и помещённой в правый нижний квадрант чёрного изображения (ячейка 53). Текст сообщает о большом падении «score» для шума и о небольших — для двух других версий. - Ячейка 55: неустойчивость. Расхождение, как описано в этой заметке; перезагрузка устойчивой контрольной точки как крайняя мера; чувствительные гиперпараметры (размер шага, число шагов, шум, шаг обучения, ширина).
- Ячейки 56–57: заключение; ячейка 57 пустая.
Ни у одной ячейки с кодом нет сохранённых выходов, так что ноутбук документирует только процедуру. Отрисованная страница исходного руководства показывает запуск предобученной контрольной точки: среднее значение «score» −17.88 для равномерного шума и −0.00 для обучающих изображений, а для тестового изображения 0.03 против −0.07 (шум), −0.00 (отражение) и −0.02 (уменьшение) (Lippe, 2025).
Проблемы ноутбука.
- Сэмплер — не динамика Ланжевена. Текстовые ячейки 3 и 13 записывают обновление как , , не связывая с , и утверждают, что малое и большое дают сэмплы из модели. Это верно, только когда дисперсия шума равна , то есть для . С шагом 10 и шумом 0.005 это обновление формально связано с , , но с обрезкой, ограничением диапазона и 60 шагами его сэмплы не следуют никакой такой плотности, как объяснено во врезке выше.
- Контрастивная дивергенция или нет. Ячейка 3 называет метод контрастивной дивергенцией. CD у Hinton запускает цепочки из данных; ноутбук запускает их из буфера и шума, а это персистентная CD с буфером воспроизведения (Du and Mordatch, 2019).
- Шум для NCE. Ячейка 3 предлагает буферы воспроизведения как источник шума для NCE. NCE нужен логарифм плотности шума, а у буфера сэмплов MCMC его нет.
- Денойзинговый score matching (ячейка 3) описан как предсказание чистого изображения по зашумлённому; целевая функция регрессирует score модели на , что эквивалентно предсказанию шума или чистого изображения с точностью до известного аффинного отображения.
- Формула L2 в ячейке 16 ставит сумму по только перед первым квадратом; она должна охватывать оба, , что и вычисляет код.
- Колбэки не запускаются в текущей версии Lightning. Три колбэка переопределяют
on_epoch_end— хук, которого в PyTorch Lightning 2.x больше нет, поэтому во время обучения ничего не генерируется и не записывается; нужный хук —on_train_epoch_end. make_grid(..., range=(-1, 1))в ячейках 21, 23, 38 и 45 использует аргумент, который в текущей версии torchvision заменён наvalue_range; вызов выбрасываетTypeError, так что графики ячейки 38 и сравнения ячеек 49, 51 и 53 не работают, пока аргумент не переименован.- «Отражение» — это поворот.
flip(dims=(1, 2))на изображении переворачивает и высоту, и ширину, то есть поворачивает изображение на 180°; зеркальное отражение — этоflip(dims=(2,)). - Комментарии, не соответствующие коду. Ячейка 9 обещает разбить обучающую выборку на обучающую и валидационную части и использовать для обучения батчи меньшего размера; разбиения нет, валидационной выборкой служит тестовая, а обучение использует тот же загрузчик. Ячейка 13 упоминает равномерные или гауссовы старты; код использует только равномерный шум. Ячейка 7 повторяет номер раздела 2.5.
Дальше#
Обучение модели, основанной на энергии, запускает смещённые короткие цепочки MCMC внутри каждого обновления параметров, и получаемая модель сформирована сэмплером не меньше, чем данными. Диффузионные модели обходят этот цикл. Они фиксируют процесс зашумления, превращающий данные в гауссов шум, и учатся обращать его маленькими шагами, один за другим, а это регрессия без сэмплирования во время обучения. Следующая заметка строит этот прямой процесс. Заметка о score matching позже показывает, что сеть, которую обучает диффузионная модель, с точностью до известного множителя и есть score зашумлённых данных — отрицательный градиент энергии.
Литература#
- Y. LeCun, S. Chopra, R. Hadsell, M. Ranzato, F. J. Huang. A Tutorial on Energy-Based Learning. In G. Bakır, T. Hofmann, B. Schölkopf, A. Smola, B. Taskar (eds.), Predicting Structured Data, MIT Press, 2006. Раздел 1.1: инференс минимизацией энергии; раздел 1.3: распределение Гиббса и некалиброванные энергии; раздел 2.2.4: отрицательный логарифм правдоподобия как функция потерь.
- G. E. Hinton. Training Products of Experts by Minimizing Contrastive Divergence. Neural Computation, 14(8), 1771–1800, 2002. Раздел 3: контрастивная дивергенция.
- T. Tieleman. Training Restricted Boltzmann Machines using Approximations to the Likelihood Gradient. ICML, 2008. Персистентная контрастивная дивергенция.
- M. Gutmann, A. Hyvärinen. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models. AISTATS, PMLR 9, 297–304, 2010. Теоремы 1 и 2; раздел 2.4: выбор шума.
- A. Hyvärinen. Estimation of Non-Normalized Statistical Models by Score Matching. Journal of Machine Learning Research, 6, 2005.
- Y. Du, I. Mordatch. Implicit Generation and Modeling with Energy-Based Models. NeurIPS, 2019. Раздел 3: сэмплирование Ланжевена, буфер воспроизведения и штраф L2 (алгоритм 1); раздел 4.4: обнаружение данных вне распределения; раздел 7: композиция; приложения A.3, A.4, A.11 и A.12: оценки правдоподобия, чувствительность, гиперпараметры и советы по обучению.
- E. Nijkamp, M. Hill, S.-C. Zhu, Y. N. Wu. Learning Non-Convergent Non-Persistent Short-Run MCMC Toward Energy-Based Model. NeurIPS, 2019.
- Y. Song, D. P. Kingma. How to Train Your Energy-Based Models. arXiv:2101.03288, 2021. Раздел 3: метод максимального правдоподобия с MCMC; раздел 5: шумоконтрастное оценивание и его связь со score matching.
- W. Grathwohl, K.-C. Wang, J.-H. Jacobsen, D. Duvenaud, M. Norouzi, K. Swersky. Your Classifier is Secretly an Energy Based Model and You Should Treat it Like One. ICLR, 2020. Таблица 1, раздел 5.3 и приложения A и H.
- M. Welling, Y. W. Teh. Bayesian Learning via Stochastic Gradient Langevin Dynamics. ICML, 2011.
- R. M. Neal. Annealed Importance Sampling. Statistics and Computing, 11(2), 125–139, 2001.
- E. Nalisnick, A. Matsukawa, Y. W. Teh, D. Gorur, B. Lakshminarayanan. Do Deep Generative Models Know What They Don’t Know? ICLR, 2019.
- P. Lippe. Tutorial 8: Deep Energy-Based Generative Models. In UvA Deep Learning Tutorials, University of Amsterdam, 2025 (год из рекомендуемой ссылки на серию).
- HSE-LAMBDA, репозиторий курса Deep Generative Models:
EBM.ipynb.