Ви маєте рацію в тому, що основна концепція глибокої НН не змінилася з 2012 року. Але було вдосконалено способи навчання глибоких мереж, які зробили їх якісно більш потужними. Сьогодні також доступна більш широка різноманітність архітектур. Я перерахував деякі напрацювання з 2012 року, згруповані за покращенням навчання та покращенням архітектури:
Апаратне забезпечення : Найбільш очевидною зміною є лише невблаганне просування закону Мура. Сьогодні доступно більше обчислювальної потужності. Хмарні обчислення також дозволяють людям легко навчати великі мережі, не купуючи величезну платформу.
Програмне забезпечення : Програмне забезпечення з відкритим кодом для глибокого навчання дійсно надзвичайно покращене з 2012 року. Ще в 2012 році був Теано, можливо, і Кафе. Я впевнений, що є і деякі інші. Але сьогодні ми також маємо TensorFlow, Torch, Paddle та CNTK, які підтримуються великими технологічними компаніями. Це тісно пов'язане з технічним пунктом кулі, оскільки багато з цих платформ полегшують навчання на графічних процесорах, що різко прискорює час навчання.
Функції активації : використання функцій активації ReLU, напевно, є більш розповсюдженим в наші дні, що полегшує навчання дуже глибоких мереж. Що стосується дослідження, існує більш широкий спектр функцій активації, що вивчаються, включаючи герметичну ReLU , параметричну ReLU та maxout одиниці .
Алгоритми оптимізації : сьогодні існує більше алгоритмів оптимізації. Адаград та Ададельта щойно були представлені відповідно у 2011 та 2012 роках. Але зараз у нас є оптимізатор Адама, і це стало дуже популярним вибором.
Випадання : За останні кілька років відміни стали стандартним інструментом регуляризації при навчанні нейронних мереж. Випадання - це комп’ютерно недорога форма збирання для NN. Загалом, набір моделей, що навчаються на випадкових вибірках набору даних, буде перевершувати одну модель, підготовлену за всім набором даних. Це явно зробити явно для мереж, оскільки вони так дорого навчаються. Але подібний ефект можна наблизити, лише випадковим чином "вимикаючи" нейрони на кожному кроці. Різні підграграфи в NN в кінцевому підсумку навчаються на різних наборах даних і тим самим вивчають різні речі. Подібно до складання, це, як правило, робить загальну мережу NN більш надійною для накладання. Випадання - це проста техніка, яка, здається, покращує продуктивність майже в кожному випадку, тому
Нормальна пакетна норма : Нещодавно було відомо, що NN найкраще тренується за нормалізованими даними - тобто є нульова середня та одинична дисперсія. У дуже глибокій мережі, коли дані проходять через кожен шар, вхідні дані будуть перетворені і, як правило, переходять до розподілу, якому не вистачає цього приємного, нормалізованого властивості. Це ускладнює навчання в цих глибших шарах, оскільки, з точки зору, вхідні дані не мають нульової середньої та одиничної дисперсії. Середнє значення може бути дуже великим, а дисперсія може бути дуже малою. Пакетна нормалізація вирішує це шляхом перетворення входів у шар, щоб мати нульову середню та одиничну дисперсію. Це здається надзвичайно ефективним у навчанні дуже глибоких ЗН.
Теорія : До недавнього часу вважалося, що причину глибоких НН важко піддавати тому, що алгоритми оптимізації застрягають у локальних мінімумах та мають проблеми з виходом та пошуку глобальних мінімумів. За останні чотири роки було проведено ряд досліджень, які, схоже, свідчать про те, що ця інтуїція була неправильною (наприклад, Goodfellow et al. 2014). У просторі високих розмірних параметрів глибокого NN локальні мінімуми, як правило, не такі вже й гірші, ніж глобальні мінімуми. Проблема полягає фактично в тому, що під час тренувань НН може опинитися на довгому широкому плато. Крім того, ці плато можуть різко закінчитися на крутій скелі. Якщо НН робить невеликі кроки, то вчитися потрібно дуже багато часу. Але якщо кроки занадто великі, він стикається з величезним градієнтом, коли він натикається на скелю, що скасовує всі попередні роботи. (Цього можна уникнути за допомогою градієнтного обрізання, ще однієї інновації після 2012 року.)
Залишкові мережі : Дослідники змогли навчити неймовірно глибокі мережі (понад 1000 шарів!), Використовуючи залишкові мережі . Ідея тут полягає в тому, що кожен шар отримує не тільки вихід з попереднього шару, але й оригінальний вхід. Якщо правильно навчатись, це спонукає кожен шар дізнатися щось інше, ніж попередні шари, так що кожен додатковий шар додає інформацію.
Широкі та глибокі мережі : Широкі неглибокі мережі мають тенденцію просто запам’ятовувати відображення між своїми входами та результатами. Глибокі мережі узагальнюють набагато краще. Зазвичай ви хочете хорошого узагальнення, але є такі ситуації, як системи рекомендацій, в яких важливе також просто запам'ятовування без узагальнення. У цих випадках ви хочете надати хороші, предметні рішення, коли користувач робить загальний запит, але дуже точні рішення, коли користувач робить дуже конкретний запит. Широкі та глибокі мережі здатні чудово виконати це завдання.
Нейронна машина твердження : Недолік традиційних повторюваних мереж (будь то стандартна RNN або щось більш складне, як LSTM) полягає в тому, що їх пам'ять дещо "інтуїтивно зрозуміла". Їм вдається запам'ятати минулі введення, зберігаючи активацію прихованого шару, яку вони виробляють у майбутньому. Однак іноді має сенс явніше зберігати деякі дані. (Це може бути різниця між записом номера телефону на аркуші паперу і пам’ятати, що число було близько 7 цифр, а там було пару 3-х і, можливо, дефіс десь посередині.) Нейронна машина Тьюрінгаце спосіб спробувати вирішити це питання. Ідея полягає в тому, що мережа може навчитися чітко вчиняти певні факти в банку пам'яті. Це зробити непросто, тому що алгоритми зворотного підключення вимагають диференційованих функцій, але введення даних до адреси пам'яті - це властива дискретна операція. Отже, нейронні машини Тюрінга обходять це шляхом внесення трохи даних для розподілу різних адрес пам'яті. Ці архітектури, здається, ще не працюють надто добре, але ідея дуже важлива. Деякий варіант із них, мабуть, набуде широкого поширення в майбутньому.
Генеральні змагальні мережі : GAN - це дуже захоплююча ідея, яка, здається, вже бачить багато практичного використання. Ідея тут полягає у підготовці двох НН одночасно: той, який намагається генерувати вибірки з базового розподілу ймовірностей (генератор), і той, який намагається розрізнити між реальними точками даних і фальшивими точками даних, згенерованими генератором (дискримінатором). Так, наприклад, якщо ваш набір даних - це набір зображень спалень, генератор спробує зробити власні фотографії спалень, а дискримінатор спробує розібратися, чи дивиться на реальні фотографії спалень чи підроблені фотографії спалень. Зрештою, у вас є дві дуже корисні мережеві мережі: одна, яка дійсно добре класифікує зображення як спальні чи не спальні, та одна, яка справді гарна в створенні реалістичних зображень спалень.