Автокодува́льник () — це один із типів штучних нейронних мереж, який використовують для навчання ефективних кодувань немічених даних (некерованого навчання). Це кодування перевіряється та вдосконалюється шляхом намагання відтворювати вхід із цього кодування. Автокодувальник навчається подання (кодування) для набору даних, зазвичай для зниження розмірності, шляхом тренування цієї мережі ігнорувати незначущі дані («шум»).
Існують варіанти, спрямовані на змушування навчених подань набувати корисних властивостей. Прикладами є регуляризовані автокодувальники (розріджені, знешумлювальні та стягувальні, відповідно), що є дієвими в навчанні подань для пізніших задач класифікування, та варіаційні () автокодувальники, із застосуванням як породжувальних моделей. Автокодувальники застосовують у багатьох задачах, від розпізнавання обличHinton GE, Krizhevsky A, Wang SD. Transforming auto-encoders. In International Conference on Artificial Neural Networks 2011 Jun 14 (pp. 44-51). Springer, Berlin, Heidelberg. до оволодівання семантичним значенням слів.
Базова архітектура
Автокодувальник має дві основні частини: кодувальник (), що відображує вхід до коду, та декодувальник (), що відображує код до відбудови входу.
Найпростішим способом виконувати задачу копіювання ідеальним чином було б просто дублювати сигнал. Натомість автокодувальники зазвичай змушені відбудовувати вхід приблизно, залишаючи в копії лише найдоречніші аспекти даних.
Ідея автокодувальників була популярною протягом десятиріч. Перші застосування сходять до 1980-х років. Hinton, G. E., & Zemel, R. S. (1994). Autoencoders, minimum description length and Helmholtz free energy. In Advances in neural information processing systems 6 (pp. 3-10). Їхніми найтрадиційнішими застосуваннями були знижування розмірності та навчання ознак, але цю концепцію стали застосовувати ширше, для навчання породжувальних моделей даних. Generating Faces with Torch, Boesen A., Larsen L. and Sonderby S.K., 2015 Деякі з найпотужніших ШІ у 2010-ті роки містили автокодувальники, вкладені всередині глибоких нейронних мереж.
Найпростішою формою автокодувальника є нерекурентна нейронна мережа прямого поширення, подібна до одношарових перцептронів, що беруть участь у багатошарових перцептронах (БШП), з використанням шару входу та шару виходу, з'єднаних одним або декількома прихованими шарами. Шар виходу має таке саме число вузлів (нейронів), що й шар входу. Її метою є відбудовувати свої входи (мінімізуючи різницю між входом та виходом) замість передбачувати цільову змінну за заданих входів . Таким чином, автокодувальники навчаються некеровано.
Автокодувальник складається з двох частин, кодувальника та декодувальника, які може бути визначено як переходи та , такі, що
У найпростішому випадку, якщо взяти один прихований шар, кодувальна стадія автокодувальника бере вхід та відображує його до :
Це зображення зазвичай називають кодом, латентними змінними, або латентним поданням. Тут є поелементною передавальною функцією, такою як сигмоїда або зрізаний лінійний вузол. є матрицею ваг, а є вектором зсуву. Ваги та зсуви зазвичай ініціалізують випадковим чином, а потім ітеративно уточнюють протягом тренування шляхом зворотного поширення. Після цього декодувальна стадія автокодувальника відображує у відбудову такої ж форми, що й :
де , та для декодувальника можуть бути непов'язаними з відповідними , та для кодувальника.
Автокодувальники тренують мінімізувати похибки відбудови (такі як середньоквадратичні похибки), що часто називають «втратами» ():
де зазвичай усереднюють над тренувальним набором даних.
Як було зазначено вище, автокодувальне тренування виконується шляхом зворотного поширення цієї похибки, як і в інших нейронних мережах прямого поширення.
Якщо простір ознак має меншу розмірність, ніж простір входів , то вектор ознак можливо розглядати як стиснене подання входу . Це у випадку понижувальних () автокодувальників. Якщо приховані шари є більшими (підвищувальними, ), або такими ж, як і шар входу, або якщо прихованим вузлам надано достатньої ємності, то автокодувальник потенційно може навчитися тотожної функції, й стати марним. Проте експериментальні результати виявили, що підвищувальні автокодувальники все ж можуть навчатися корисних подань. В ідеальній постановці розмірність коду та ємність моделі можливо встановлювати на основі складності модельованого розподілу даних. Одним зі способів робити це є використання різновидів цієї моделі, відомих як регуляризовані автокодувальники ().
Різновиди
Регуляризовані автокодувальники
Існують різні методики запобігання навчанню автокодувальниками тотожної функції та покращення їхньої здатності вловлювати важливу інформацію та навчатися цінніших подань.
Розріджений автокодувальник (РАК)
Навчання подань у спосіб, який заохочує розрідженість, покращує продуктивність на задачах класифікування. Розріджені автокодувальники () можуть містити більше (а не менше) прихованих вузлів, аніж входів, але лише невеликому числу цих прихованих вузлів дозволено бути збудженими одночасно (власне, розрідженість). Це обмеження змушує модель реагувати на унікальні статистичні ознаки тренувальних даних.
Зокрема, розріджений автокодувальник є автокодувальником, чий тренувальний критерій містить розріджувальний штраф шару коду .
Якщо пригадати, що , то цей штраф заохочує модель збуджувати (тобто, значення виходу близько 1) на основі даних входу особливі області мережі, одночасно гальмуючи всі інші нейрони (тобто, щоби вони мали значення виходу близько 0).
Цієї розрідженості можливо досягати шляхом формулювання членів штрафу різними способами.
Одним зі способів є використовувати розходження Кульбака — Лейблера (КЛ, KL).Ng, A. (2011). Sparse autoencoder . CS294A Lecture notes, 72(2011), 1-19. Нехай
буде усередненим збудженням прихованого вузла (усередненим над тренувальних зразків). Запис вказує на значення входу, що ви́кликало це збудження. Щоби заохотити більшість нейронів бути не збудженими, потрібно бути близьким до 0. Тому цей метод накладає обмеження , де є параметром розрідженості, значенням, близьким до 0. Член штрафу набуває вигляду, який штрафує за значне відхиляння від , використовуючи розходження КЛ:
де є підсумовуванням над прихованих вузлів у прихованім шарі, а є КЛ-розходженням між випадковою змінною Бернуллі з середнім та випадковою змінною Бернуллі з середнім .
Іншим способом досягання розрідженості є застосування до збудження членів регуляризації L1 або L2, масштабованих певним параметром . Наприклад, у випадку L1 функція втрат набуває вигляду
Наступною пропонованою стратегією примушування до розрідженості є занулювати вручну всі крім найсильніших збуджень прихованих вузлів (k-розріджений автокодувальник, ). k-розріджений автокодувальник ґрунтується на лінійному автокодувальнику (тобто, з лінійною передавальною функцією) та ув'язаних вагах (). Визначення найсильніших збуджень можливо досягати впорядковуванням цих збуджень та залишанням лише перших k значень, або застосовуванням випрямляльних прихованих вузлів з порогами, які адаптивно підлаштовуються доти, поки не буде виявлено k найбільших збуджень. Це обирання діє як згадані раніше члени регуляризації, оскільки запобігає відбудовуванню моделлю входу із застосуванням занадто великого числа нейронів.
Знешумлювальний автокодувальник (ЗАК)
Знешумлювальні автокодувальники (ЗАК, ) намагаються досягати доброго подання шляхом зміни критерію відбудови.
Дійсно, ЗАКи беруть частково зіпсований вхід, і тренуються відновлювати первинний неспотворений вхід. На практиці метою знешумлювальних кодувальників є очищування зіпсованого входу, або знешумлювання. Цьому підходові притаманні два припущення:
Подання вищого рівня є відносно стабільними й стійкими до псування входу; Щоби виконувати знешумлювання добре, моделі потрібно виділяти ознаки, які вловлюють корисну структуру в розподілі входу.
Іншими словами, знешумлювання пропагується як тренувальний критерій для навчання виділяння корисних ознак, що утворюватимуть кращі подання входу вищого рівня.
Процес тренування ЗАК працює наступним чином:
Початковий вхід спотворюється в шляхом стохастичного відображення . Цей пошкоджений вхід відтак відображується до прихованого подання таким же процесом, як і в стандартного автокодувальника, . Із цього прихованого подання модель відбудовує .
Параметри моделі та тренуються мінімізувати усереднену над усіма тренувальними даними похибку відбудовування, зокрема, мінімізуючи різницю між та первинним непошкодженим входом . Зауважте, що кожного разу, як моделі подається випадковий зразок , на основі стохастично породжується нова пошкоджена версія.
Вищезгаданий тренувальний процес можливо застосовувати із будь-яким видом процесу пошкоджування. Деякими прикладами можуть бути адитивний ізотропний гауссів шум, маскувальний шум (випадково обрана частка входу кожного зразка примусово встановлюється в 0) або сольовий-та-перцевий шум (випадково обрана частка входу кожного зразка примусово встановлюється у своє мінімальне або максимальне значення з рівномірною ймовірністю).
Пошкоджування входу виконується лише під час тренування. Після тренування пошкоджування не додається.
Стягувальний автокодувальник (САК)
Стягувальний автокодувальник () додає до своєї цільової функції явний регуляризатор, що змушує модель навчатися кодування стійко до незначних варіацій значень входу. Цей регуляризатор відповідає нормі Фробеніуса матриці Якобі збуджень кодувальника відносно входу. Оскільки цей штраф застосовується лише до тренувальних зразків, цей член змушує модель навчатися корисної інформації про тренувальний розподіл. Остаточна цільова функція має наступний вигляд:
Цей автокодувальник названо стягувальним, оскільки він заохочується відображувати окіл точок входу до меншого околу точок виходу.
ЗАК є пов'язаним із САК: на границі малого гауссового шуму входу ЗАКи роблять функцію відбудови стійкою до малих, але скінченного розміру, збурень входу, тоді як САКи роблять витягнуті ознаки стійкими до нескінченно малих збурень входу.
Конкретний автокодувальник
Конкретний автокодувальник () розроблено для обирання дискретних ознак. Конкретний автокодувальник примушує латентний простір складатися лише із вказаного користувачем числа ознак. Конкретний автокодувальник використовує неперервне категорійного розподілу, щоби дозволити градієнтам проходити крізь шар обирання ознак, що уможливлює застосування стандартного зворотного поширення для навчання оптимальної підмножини ознак входу, яка мінімізує втрати відбудови.
Варіаційний автокодувальник (ВАК)
Варіаційні автокодувальники (ВАКи, ) належать до сімейств . Попри архітектурні подібності з базовими автокодувальниками, ВАКи є архітектурою з відмінними цілями та з абсолютно іншим математичним формулюванням. Латентний простір у цьому випадку складається з суміші розподілів замість фіксованого вектора.
За заданого набору даних входу , описуваного невідомою функцією ймовірності , та багатовимірного вектора латентного кодування , метою є змоделювати ці дані як розподіл , де визначено як набір таких параметрів цієї мережі, що .
Переваги глибини
Автокодувальники часто тренують з одношаровим кодувальником та одношаровим декодувальником, але використання багатошарових (глибоких) кодувальників та декодувальників пропонує багато переваг.
Глибина може експоненційно скорочувати обчислювальну витратність подання деяких функцій. Глибина може експоненційно зменшувати кількість тренувальних даних, потрібних для навчання деяких функцій. Експериментально встановлено, що глибокі автокодувальники дають краще стиснення у порівнянні з поверхневими або лінійними автокодувальниками.
Тренування