ГоловнаСтаттіПотоки Нормалізації: Точне Моделювання Щільності За Допомогою Зворотних Перетворень

Потоки Нормалізації: Точне Моделювання Щільності За Допомогою Зворотних Перетворень

Більшість генеративних моделей можуть надати вам реалістичний зразок, але відмовляються відповідати на питання про те, наскільки ймовірно було це саме значення — потоки нормалізації не відмовляються відповідати, перетворюючи просту форму bell-curve на складну розподіл даних крок за кроком, одночасно точно відстежуючи математику.

mysimulator teamОновлено — червень 2026≈ 8 хв читання▶ Відкрити симуляцію

Чому це важливо

Генеративні моделі, такі як GAN та VAE, мають обмеження у тому, що вони можуть виразити щодо ймовірності даних. Вони не розраховують точну ймовірність розподілу p(x) для даних, таких як зображення, молекули або звукові хвилі. GAN використовує генератор, який перетворює випадковий шум на зразки, а дискримінатор намагається відрізнити реальні та синтезовані зразки, але ніде в цьому процесі не обчислюється p(x). VAE наближається до цього, визначаючи ймовірнісний декодер, але через незворотність та багато-до-одного відображення між латентною змінною z і даними x, точна ймовірність вимагає інтегрування по всіх можливих z, що призводить до обчислювальної складності. VAE використовують нижню межу, ELBO, щоб наблизити log p(x) замість того, щоб обчислювати її точно. Нормальні потоки йдуть іншим шляхом: вони вимагають, щоб відображення між простором латентних змінних і простором даних було бієкцією – одно-до-одного та зворотним. Це дозволяє отримати точну, обчислювально ефективну ймовірність без обмежень або наближень.

Змінні та диференційовані: Два непереможних

Потік будується з трансформації f, яка відображає приховану змінну z, взяту зі простого базового розподілу, такого як стандартний Гаусів p_Z(z), у дані x = f(z). Для того, щоб це працювало як генеративна модель із точними ймовірностями, f має задовольняти дві властивості. По-перше, вона повинна бути зворотньо визначена: за будь-яким x повинен існувати єдиний унікальний z = f^-1(x), який його створив, без двох різних z значень, які коли-небудь відображаються на один і той же x. По-друге, як f, так і її обернена повинні бути диференційовані, щоб можна було плавно вимірювати локальне розтягування або стиснення простору трансформацією в кожній точці. Разом ці властивості означають, що потік ніколи не втрачає інформації — завжди можна повернути трансформацію назад і точно відновити приховану змінну, яка згенерувала даний зразок, що саме дозволяє нам логічно міркувати про те, як маса ймовірності переміщується між двома просторами.

Зміна змінних та корекція якобіана

Уявіть, що ви знаєте щільність прихованої змінної p_Z(z) і застосовуєте до неї обернену трансформацію x = f(z). Отримане розподілення ймовірностей над x не є просто p_Z, оціненим у відповідному z — вам також потрібно врахувати, наскільки трансформація локально розширює або стискає об’єм навколо цієї точки. Це формула зміни змінних: p_X(x) = p_Z(f⁻¹(x)) · |det(∂f⁻¹/∂x)|. Термін |det(∂f⁻¹/∂x)| є абсолютним значенням детермінанту якобіана оберненої трансформації, і він діє як коефіцієнт корекції об’єму. Якщо f розширює невеликий район навколо z, ймовірнісна маса розподіляється на більшу область у просторі x, тому щільність там повинна впасти, і якобіан захоплює точно це розширення або стиснення. У практиці навчання працює в логічному просторі для числової стабільності, що дає еквівалентну форму log p_X(x) = log p_Z(z) - log|det(∂f/∂z)|, де z = f⁻¹(x). Ця логарифмічна ймовірність є точною — нічого не обмежується або апроксимується — і це саме те, що ми максимізуємо під час навчання за допомогою градієнтного спуску.

Зробіть Якобіан дешевшим: з'єднання шарів і трикутна структура

Обчислення визначника загального n×n Якобіана коштує O(n^3) операцій, що є неймовірно дорого для високорозмірних даних, таких як зображення з тисячами пікселів. Архітектури потоків обходять це розумним трюком: проєктуйте кожен шар таким чином, щоб його Якобіан був трикутним, оскільки визначник трикутної матриці дорівнює просто добутку її діагональних елементів, обчисленням O(n). Класичний механізм для цього – з’єднувальний шар, який використовується в моделях, таких як RealNVP і Glow. Він розділяє вхід на дві половини, x1 та x2, не змінює x1 і перетворює x2 за допомогою функції, параметри якої (якщо це масштаб і зміщення) обчислюються лише від x1: y2 = x2 · exp(s(x1)) + t(x1), y1 = x1. Оскільки y1 залежить тільки від x1, а залежність y2 від x1 повністю знаходиться всередині s та t, тоді як її залежність від x2 є простим елементним лінійним відображенням, отриманий Якобіан є трикутним, з діагоналі якого складаються 1 (від y1) і терміни exp(s(x1)) (від y2). Це забезпечує легкість інверсії та дешевину диференціювання кожного шару, навіть якщо s і t самі по собі можуть бути будь-якими складними нейронними мережами.

Надкладання Стужок та Використання Потоків

Одинокий шар зв’язку є відносно слабкою трансформацією — він залишає половину свого вхідного сигналу повністю незмінною. Реальну виразну силу нормалізуючих потоків визначає композиція: ланцюження багатьох таких шарів разом, зазвичай чергуючи, яка частина змінних оновлюється, щоб кожен вимір врешті-решт був оновлений. Оскільки композиція інвертованих та диференційованих функцій є сама по собі інвертованою та диференційованою, а логарифмічна визначена матриці складеної Якобіана дорівнює сумі логарифмічних визначених матриць кожного шару (log|det(∂f/∂z)| = Σ_k log|det(∂f_k/∂z_k)|), ви можете зібрати десятки простих, дешевих шарів і все ще отримувати точні ймовірнісні значення та повну інверсивність, тоді як загальна трансформація стає достатньо гнучкою, щоб моделювати складні, багатомодальні розподіли даних. Ця комбінація точної оцінки щільності та точного зразкування робить потоки цінними для завдань, де вам дійсно потрібно ймовірність, таких як виявлення аномалій та відхилень від норми, наукова оцінка щільності густини та використання як будівельних блоків у варіаційному висновку, поряд з їхньою роллю як самостійних генеративних моделей для зображень і аудіо.

Часті запитання

Чому GAN-и або VAE-и не можуть просто обчислювати точну ймовірність, як потоки?

GAN-и ніколи не визначають явну щільність — генератор є чорною скринькою, навченою супротивницьким методом, без будь-якої ймовірнісної формули для p(x). VAE-и визначають ймовірнісну модель, але енкодер-декодерне відображення не є оберненим, тому обчислення справжньої ймовірності вимагало б інтегрування по всіх можливих латентних кодах, що є нерозв’язною задачею. VAE-и наближують це з нижньою межею (ELBO) замість точного значення. Потоки відрізняються за конструкцією: оскільки f є бієкцією, існує унікальний z для кожного x, і формула змінної під змінювання дає log p(x) точно, у замкнутому вигляді.

Що саме виправляє термін Якобіана?

Він виправляє локальну деформацію об’єму, спричинену трансформацією. Якщо область латентного простору розтягується при відображенні в простір даних, одна й та сама кількість ймовірнісної маси покриває більший об’єм, тому щільність там повинна зменшитися; якщо область стискається, щільність повинна збільшитись. Абсолютний Якобіан, |det(∂f^-1/∂x)| або, відповідно, його зворотний в прямому напрямку, є точно локальним коефіцієнтом масштабування об’єму, тому множення на нього правильно нормалізує загальну ймовірність до 1.

Чому архітектори використовують трикутні Якобіани замість просто обчислення визначника?

Обчислення щільного n×n Якобіана коштує O(n^3), що набагато занадто повільно для високорозмірних даних, таких як зображення. Розробляючи шари, найчастіше з’єднувальні шари, щоб Якобіан був трикутним, визначник скорочується до простого добутку діагональних елементів, обчислення O(n). Це дозволяє потокам масштабуватися на великі вхідні дані без втрати властивості точної ймовірності, яка робить їх корисними з першого погляду.

Якщо кожен з’єднувальний шар трансформує лише половину змінних, як потоки стають виразними?

Збираючи багато з’єднувальних шарів і чергуючи, яка половина утримується незмінною, а яка трансформується на кожному кроці, будь-який окремий шар сам по собі слабкий, але складання десятків з них, з перестановками або чергуванням розбиття між ними, дозволяє кожній вимірюваній величині повторно трансформуватися в залежності від інших. Оскільки складені обернені функції залишаються оберненими, а їх логарифмічні визначники просто додаються, це складання будує гнучкі трансформації, зберігаючи при цьому навчання та зращування точними та розв’язними.

Для чого насправді використовуються нормалізуючі потоки на практиці?

Їх використовують там, де потрібна точна, розв'язна щільність: оцінка ймовірнісної щільності для наукових або табличних даних, виявлення аномалій та відхилень від розподілу (маркування вхідних даних, які модель призначає надзвичайно низькій ймовірності), точна ймовірнісна генерація зображень та аудіо (як у Glow) та як гнучкі будівельні блоки всередині варіаційного висновування для роблення приблизних апостеріорів більш виразними.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Normalizing Flows: Exact Density Modeling via Invertible Transforms і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Normalizing Flows: Exact Density Modeling via Invertible Transforms

Що ви знайшли?

Додати кроки відтворення (опційно)