заглушки Що таке автокодер? - Об'єднуйтесь.AI
Зв'язатися з нами
Майстер-клас ШІ:

AI 101

Що таке автокодер?

mm
оновлений on

Якщо ви раніше читали про методи навчання без нагляду, можливо, ви зустріли термін «автокодер”. Автокодери є одним із основних способів розробки моделей навчання без нагляду. Але що таке автокодер?

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

Що таке автокодер?

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

Дані, які переміщуються через автокодер, не просто відображаються безпосередньо від входу до виходу, тобто мережа не просто копіює вхідні дані. Є три компоненти автокодувальника: частина кодування (введення), яка стискає дані, компонент, який обробляє стислі дані (або вузьке місце), і частина декодера (виведення). Коли дані подаються в автокодер, вони кодуються, а потім стискаються до меншого розміру. Потім мережа навчається на закодованих/стиснутих даних і виводить відтворені ці дані.

То чому ви хочете навчити мережу просто реконструювати дані, які їй надаються? Причина полягає в тому, що мережа вивчає «сутність» або найважливіші особливості вхідних даних. Після того, як ви навчили мережу, можна створити модель, яка може синтезувати подібні дані з додаванням або відніманням певних цільових функцій. Наприклад, ви можете навчити автокодер на зернистих зображеннях, а потім використовувати навчену модель для видалення зернистості/шуму із зображення.

Архітектура автокодувальника

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

Фото: Мікела Массі через Wikimedia Commons, (https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Як згадувалося раніше, автокодер по суті можна розділити на три різні компоненти: кодер, вузьке місце та декодер.

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

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

Рівень декодера — це те, що відповідає за отримання стислих даних і перетворення їх назад у представлення з тими ж розмірами, що й оригінальні, незмінені дані. Перетворення виконується за допомогою представлення прихованого простору, створеного кодувальником.

Найпростіша архітектура автокодувальника — це архітектура прямого зв’язку зі структурою, схожою на одношаровий персептрон, який використовується в багатошарових перцептронах. Подібно до звичайних нейронних мереж прямого зв’язку, автоматичний кодер навчається за допомогою зворотного поширення.

Атрибути автокодувальника

Існують різні види автокодерів, але всі вони мають певні властивості, які їх об'єднують.

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

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

При проектуванні автокодувальника інженерам машинного навчання необхідно звернути увагу на чотири різні гіперпараметри моделі: розмір коду, номер шару, вузли на шар і функцію втрат.

Розмір коду визначає, скільки вузлів починають середню частину мережі, і менша кількість вузлів більше стискає дані. У глибокому автокодері, хоча кількість шарів може бути будь-якою, яку інженер вважає за потрібне, кількість вузлів у шарі має зменшуватися в міру того, як кодер працює. Тим часом у декодері вірно протилежне, тобто кількість вузлів на шар повинна збільшуватися, коли шари декодера наближаються до останнього рівня. Нарешті, функція втрат автокодера зазвичай є або двійковою крос-ентропією, або середньоквадратичною помилкою. Двійкова перехресна ентропія підходить для випадків, коли вхідні значення даних знаходяться в діапазоні 0–1.

Типи автокодерів

Як згадувалося вище, існують варіанти класичної архітектури автокодувальника. Давайте розглянемо різні архітектури автокодерів.

Розріджений

Фото: Мікела Массі через Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

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

Підрядний

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

Згортальне

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

Шумить

Фото: MAL через Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Знешумні автокодери вводити шум у кодування, в результаті чого кодування є пошкодженою версією вихідних вхідних даних. Ця пошкоджена версія даних використовується для навчання моделі, але функція втрат порівнює вихідні значення з вихідним входом, а не з пошкодженим входом. Мета полягає в тому, щоб мережа могла відтворити оригінальну, непошкоджену версію зображення. Порівнюючи пошкоджені дані з вихідними даними, мережа дізнається, які характеристики даних є найважливішими, а які – неважливими/пошкодженими. Іншими словами, для того, щоб модель знешумлювала пошкоджені зображення, вона повинна витягнути важливі характеристики даних зображення.

Варіаційний

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

 

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

Під час навчання мережі закодовані дані аналізуються, а модель розпізнавання виводить два вектори, вимальовуючи середнє значення та стандартне відхилення зображень. На основі цих значень створюється розподіл. Це робиться для різних латентних станів. Потім декодер бере випадкові вибірки з відповідного розподілу та використовує їх для реконструкції початкових вхідних даних до мережі.

Програми для автокодерів

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

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

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

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

Блогер і програміст зі спеціальностями в машинне навчання та Глибоке навчання теми. Деніел сподівається допомогти іншим використовувати силу ШІ для суспільного блага.