Відповідь 1:

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

GAN схожий на зовнішній автокодер - замість стискання даних високих розмірів, він має низькі розмірні вектори як входи, високовимірні дані посередині.

Замість того, щоб вводити трохи даних у якості вхідних даних, йому надається невеликий вектор випадкових чисел. Мережа генераторів намагається перетворити цей маленький вектор у реалістичну вибірку з навчальних даних. Потім дискрімінаторна мережа бере цей згенерований зразок (та деякі реальні вибірки з набору даних) та вчиться відгадувати, чи є зразки справжніми чи фальшивими. Ну, точніше, це навчено мінімізувати перехресну ентропію між вірогідністю виведення та вектором * 0s * для підроблених зображень та "1" s для реальних зображень. Генератор вчиться робити більш переконливі зразки (або мінімізувати перехресну ентропію між дискримінаторами, здогадуючись про його творіння та "1")

Ще одна відмінність: хоча вони обидва потрапляють під парасольку непідконтрольного навчання, вони мають різні підходи до проблеми. GAN - це генеративна модель - вона повинна навчитися генерувати реалістичні * нові * зразки набору даних. Варіаційні автокодери - це генеративні моделі, але звичайні «ванільні» автокодери просто реконструюють свої входи та не можуть генерувати нові реалістичні зразки.


Відповідь 2:

І GAN, і Autoencoder - це генеративні моделі, що означає, що вони засвоюють заданий розподіл даних, а не його щільність. Ключова відмінність - як вони це роблять.

Автокодери вивчають даний розподіл, порівнюючи його вхід і вихід, це добре для вивчення прихованих уявлень даних, але досить погано для генерування нових даних. Головним чином, тому, що ми дізнаємось усереднене представлення даних, таким чином вихід стає досить розмитим.

Генеративні змагальні мережі застосовують зовсім інший підхід. Вони використовують іншу мережу (так званий дискримінатор) для вимірювання відстані між згенерованими та реальними даними. В основному те, що він робить, - це відрізняти реальні дані від створених. Він отримує деякі дані як вхідні дані і повертає число від 0 до 1. 0 означає, що дані підроблені, а 1 означає, що це реально. Мета генераторів тоді - навчитися переконувати Дискримінанта в тому, що він генерує реальні дані.

Основна перевага GAN над Autoencoder при генеруванні даних полягає в тому, що вони можуть бути обумовлені різними входами. Наприклад, ви можете дізнатися відображення між двома доменами: супутникові зображення на google Maps [1]. Або ви можете навчити генератор відтворювати кілька класів даних: генерування набору даних MNIST [2].

Через ці відмінності їх можна використовувати для різних завдань. Автоекодери більше підходять для стиснення даних до менших розмірів або генерування з них семантичних векторів. Де GAN більше підходять для генерування даних.

Сподіваюся, я відповів на ваше запитання, у випадку, якщо ні, сміливо запитайте мене :)

Виноски

[1] [1611.07004] Переклад зображень на зображення із умовними змагальними мережами

[2] [1411.1784] Умовні генеративні змагальні мережі


Відповідь 3:

Попередня відповідь підсумовує різницю досить добре. Обидва - це генеративні моделі. AE намагається знайти низькомірне представлення даних, що зумовлене конкретним входом (більш високого розміру), де, як GAN намагаються створити уявлення, достатні для узагальнення істинного розподілу даних, обумовленого дискримінатором.