Connect with us

ШІ 101

Що таке Generative Adversarial Network (GAN)?

mm

Generative Adversarial Networks (GANs) — це тип архітектури нейронних мереж, здатний генерувати нові дані, що відповідають вивченим шаблонам. GAN можна використовувати для генерації зображень людських облич або інших об’єктів, для перетворення тексту в зображення, для конвертації одного типу зображень в інший та для підвищення роздільної здатності зображень (суперроздільність) серед інших застосувань. Оскільки GAN можуть генерувати абсолютно нові дані, вони знаходяться на чолі багатьох передових систем, додатків та досліджень у галузі штучного інтелекту. Але як саме працюють GAN? Давайте дослідимо, як функціонують GAN, та розглянемо деякі з їх основних застосувань.

Визначення генеративних моделей та GAN

GAN є прикладом генеративної моделі. Більшість моделей ШІ можна розділити на одну з двох категорій: моделі з учителем та моделі без учителя. Моделі навчання з учителем зазвичай використовуються для розрізнення різних категорій вхідних даних, для класифікації. Навпаки, моделі без учителя зазвичай використовуються для узагальнення розподілу даних, часто вивчаючи гаусівський (нормальний) розподіл даних. Оскільки вони вивчають розподіл набору даних, вони можуть брати вибірки з цього вивченого розподілу та генерувати нові дані. Різні генеративні моделі мають різні методи генерації даних та обчислення розподілів ймовірностей. Наприклад, модель Naive Bayes працює шляхом обчислення розподілу ймовірностей для різних вхідних ознак та генеративного класу. Коли модель Naive Bayes формує прогноз, вона обчислює найбільш ймовірний клас, беручи ймовірність різних змінних та поєднуючи їх разом. Інші генеративні моделі, що не ґрунтуються на глибокому навчанні, включають Gaussian Mixture Models та Latent Dirichlet Allocation (LDA). Генеративні моделі на основі глибокого навчання включають Restricted Boltzmann Machines (RBMs), Variational Autoencoders (VAEs) і, звичайно, GAN. Generative Adversarial Networks були вперше запропоновані Яном Гудфеллоу у 2014 році, а в 2015 році Алекс Редфорд та інші дослідники вдосконалили їх, що призвело до стандартизованої архітектури для GAN. GAN насправді є двома різними мережами, об’єднаними разом. GAN складаються з двох частин: моделі генерації та моделі дискримінації, також відомих як генератор і дискримінатор.

Архітектура GAN

Generative Adversarial Networks побудовані з моделі генератора та моделі дискримінатора, з’єднаних разом. Завданням моделі генератора є створення нових прикладів даних на основі шаблонів, які модель вивчила з навчальних даних. Завданням моделі дискримінатора є аналіз зображень (припускаючи, що вона навчена на зображеннях) та визначення, чи є зображення згенерованими/фейковими чи справжніми. Дві моделі протистоять одна одній, навчаючись у теоретико-ігровій манері. Мета моделі генератора — створювати зображення, які обманюють його суперника — модель дискримінатора. Тим часом завдання моделі дискримінатора — перемогти свого суперника, модель генератора, та виявити фейкові зображення, які генерує генератор. Той факт, що моделі протистоять одна одній, призводить до гонки озброєнь, де обидві моделі вдосконалюються. Дискримінатор отримує зворотний зв’язок про те, які зображення були справжніми, а які були створені генератором, тоді як генератор отримує інформацію про те, які з його зображень були позначені дискримінатором як фальшиві. Обидві моделі покращуються під час навчання, з метою навчити генеративну модель, яка може створювати фейкові дані, які в принципі не відрізнити від реальних, справжніх даних. Після того, як під час навчання було створено гаусівський розподіл даних, генеративну модель можна використовувати. Модель генератора спочатку отримує випадковий вектор, який вона перетворює на основі гаусівського розподілу. Іншими словами, вектор є затравкою для генерації. Коли модель навчена, векторний простір буде стиснутою версією або представленням гаусівського розподілу даних. Стиснута версія розподілу даних називається латентним простором або латентними змінними. Пізніше модель GAN може взяти представлення латентного простору та вибирати з нього точки, які можна передати моделі генерації та використати для створення нових даних, дуже схожих на навчальні дані. Модель дискримінатора отримує приклади з усієї навчальної області, яка складається як зі справжніх, так і зі згенерованих прикладів даних. Справжні приклади містяться в навчальному наборі даних, тоді як фейкові дані створюються генеративною моделлю. Процес навчання моделі дискримінатора точно такий самий, як базове навчання моделі бінарної класифікації.

Процес навчання GAN

Давайте розглянемо весь процес навчання для гіпотетичного завдання генерації зображень. Спочатку GAN навчається з використанням справжніх, реальних зображень як частини навчального набору даних. Це налаштовує модель дискримінатора на розрізнення між згенерованими та реальними зображеннями. Це також створює розподіл даних, який генератор використовуватиме для створення нових даних. Генератор приймає вектор випадкових числових даних і перетворює їх на основі гаусівського розподілу, повертаючи зображення. Це згенероване зображення разом із деякими справжніми зображеннями з навчального набору даних подається в модель дискримінатора. Дискримінатор сформує ймовірнісний прогноз щодо природи отриманих зображень, видаючи значення між 0 і 1, де 1 зазвичай позначає автентичні зображення, а 0 — фейкове зображення. Тут задіяний подвійний зворотний зв’язок, оскільки дискримінатор отримує достовірну інформацію про зображення (ground truth), тоді як генератор отримує зворотний зв’язок про свою роботу від дискримінатора. Генеративна та дискримінаційна моделі грають між собою в гру з нульовою сумою. Гра з нульовою сумою — це така гра, де виграш однієї сторони здійснюється за рахунок іншої сторони (сума обох дій дорівнює нулю). Коли модель дискримінатора успішно розрізняє справжні та фейкові приклади, параметри дискримінатора не змінюються. Однак великі оновлення вносяться до параметрів моделі, коли вона не може розрізнити справжні та фейкові зображення. Для генеративної моделі справа обернена: вона карається (та її параметри оновлюються), коли їй не вдається обдурити дискримінаційну модель, але в іншому випадку її параметри залишаються незмінними (або вона винагороджується). В ідеалі генератор здатний покращити свою роботу до такого рівня, коли дискримінатор не може відрізнити фейкові та реальні зображення. Це означає, що дискримінатор завжди буде видавати ймовірності у 50% для справжніх та фейкових зображень, тобто згенеровані зображення мають бути невідмінними від справжніх. На практиці GAN зазвичай не досягають цієї точки. Однак генеративній моделі не потрібно створювати ідеально схожі зображення, щоб бути корисною для багатьох завдань, для яких використовуються GAN.

Застосування GAN

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

Жінки на цьому фото не існує. Зображення згенеровано StyleGAN. Фото: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

При достатньому навчанні GAN можуть генерувати надзвичайно реалістичні зображення людських облич. Ці згенеровані зображення можна використовувати для навчання систем розпізнавання облич. Перетворення зображення в зображення GAN чудово справляються з перетворенням зображень. GAN можна використовувати для розфарбовування чорно-білих зображень, перетворення ескізів або малюнків у фотографічні зображення або конвертації зображень з дня в ніч. Перетворення тексту в зображення Перетворення тексту в зображення можливе за допомогою GAN. Коли надається текст, що описує зображення, та супровідне зображення, GAN можна навчити створювати нове зображення при отриманні опису бажаного зображення. Редагування та відновлення зображень GAN можна використовувати для редагування існуючих фотографій. GAN можуть видаляти елементи, такі як дощ або сніг зі зображення, але їх також можна використовувати для відновлення старих, пошкоджених або зіпсованих зображень. Суперроздільність Суперроздільність — це процес взяття зображення низької роздільної здатності та вставлення в нього більшої кількості пікселів, покращуючи роздільну здатність цього зображен

Blogger and programmer with specialties in Machine Learning and Deep Learning topics. Daniel hopes to help others use the power of AI for social good.