Почнемо з тривілля: Глибока нейронна мережа - це просто підсилювальна мережа з багатьма прихованими шарами.
Це більш-менш все, що можна сказати про визначення. Нейронні мережі можуть бути періодичними або подаватись далі; Вихідні не мають циклів у своєму графіку і можуть бути організовані по шарах. Якщо є "багато" шарів, то ми говоримо, що мережа глибока .
Як багато шарів робить мережу повинна мати для того , щоб кваліфікувати в якості глибоко? На це немає однозначної відповіді (це трохи схоже на запитання, скільки зерен утворюють купу ), але зазвичай, що має два або більше прихованих шарів, вважається глибоким. На відміну від цього, мережу із лише одним прихованим шаром умовно називають "дрібним". Я підозрюю, що тут відбуватиметься якась інфляція, і через десять років люди можуть подумати, що все, що має менше, ніж, скажімо, десять шарів, неглибоке і підходить лише для занять у дитячому садку. Неофіційно "глибокий" говорить про те, що в мережі важко впоратися.
Ось ілюстрація, адаптована звідси :
Але справжнє питання, яке ви задаєте, це, звичайно, чому б користь мати багато шарів?
Я думаю, що дещо дивовижна відповідь полягає в тому, що насправді ніхто не знає. Є деякі загальні пояснення , які я коротко розгляну нижче, але жоден з них не було переконливо продемонстровано , щоб бути правдою, і ніхто не може навіть бути впевнений , що наявність багатьох шарів є дійсно корисним.
Я кажу, що це дивно, тому що глибоке навчання користується масовою популярністю, щорічно побиває всі рекорди (від розпізнавання зображень, відтворення Go, автоматичного перекладу тощо), звикає галузь тощо тощо. І ми все ще не зовсім впевнені, чому це так добре працює.
Я засновую своє обговорення на Deep Learning книги Гудфельего, Bengio і Courville , який вийшов в 2017 році і широко вважається книгою по глибокому навчанню. (Це вільно доступне в Інтернеті.) Відповідний розділ - 6.4.1 Властивості універсального наближення та глибина .
Ви це написали
10 років тому на уроці я дізнався, що наявність декількох шарів або одного шару (не рахуючи вхідних і вихідних шарів) було еквівалентним з точки зору функцій, які нейронна мережа здатна представляти [...]
Ви повинні мати на увазі так звану теорему універсального наближення , доведену Цибенком у 1989 році та узагальнену різними людьми у 1990-х. Це в основному говорить про те, що неглибока нейронна мережа (з 1 прихованим шаром) може наближати будь-яку функцію, тобто в принципі може навчитися чому-небудь . Це справедливо для різних функцій нелінійної активації, включаючи випрямлені лінійні одиниці, якими користується сьогодні більшість нейронних мереж (у цьому підручнику посилаються Leshno et al. 1993 ).
Якщо так, то чому всі користуються глибокими сітками?
Ну, наївна відповідь - це тому, що вони працюють краще. Ось малюнок із книги « Глибоке навчання», який показує, що це допомагає мати більше шарів в одному конкретному завданні, але одне і те ж явище часто спостерігається в різних завданнях і областях:
Ми знаємо, що неглибока мережа може працювати так само добре, як і глибші. Але це не так; а вони зазвичай цього не роблять. Питання --- чому? Можливі відповіді:
- Може, неглибока мережа потребує більше нейронів, ніж глибока?
- Можливо, дрібну мережу складніше тренувати за нашими поточними алгоритмами (наприклад, у неї більш противні локальні мінімуми, або швидкість конвергенції повільніша, чи що завгодно)?
- Можливо, неглибока архітектура не підходить до тих проблем, які ми зазвичай намагаємося вирішити (наприклад, розпізнавання об'єктів є складовим "глибоким", ієрархічним процесом)?
- Щось ще?
У книзі « Глибоке навчання» розмірковують за пунктами №1 та №3. По-перше, він стверджує, що кількість одиниць у неглибокій мережі зростає експоненціально зі складністю завдання. Тож для того, щоб бути корисною, неглибока мережа може знадобитися дуже великою; можливо набагато більше, ніж глибока мережа. Це ґрунтується на ряді робіт, що підтверджують, що мілководним мережам у деяких випадках знадобиться експоненціально багато нейронів; але чи є наприклад класифікація MNIST або Go play - такі випадки не зовсім зрозуміло. По-друге, книга говорить про це:
Вибір глибокої моделі кодує дуже загальну думку про те, що функція, яку ми хочемо вивчити, повинна включати в себе склад декількох простіших функцій. Це можна трактувати з точки зору представницького навчання як таке, що ми вважаємо, що проблема навчання складається з виявлення набору основних факторів варіації, які в свою чергу можуть бути описані з точки зору інших, більш простих базових факторів варіації.
Думаю, що "консенсус" полягає в тому, що це поєднання пунктів №1 і №3: для реальних завдань глибока архітектура часто вигідна, а неглибока архітектура була б неефективною і вимагає набагато більше нейронів для тієї ж продуктивності.
Але це далеко не доведено. Розглянемо, наприклад, Загоруйко та Комодакіс, 2016, Широкі залишкові мережі . Залишкові мережі із 150+ шарами з’явились у 2015 році та виграли різні конкурси на розпізнавання зображень. Це було великим успіхом і виглядало як переконливий аргумент на користь глибини; ось одна цифра з презентації першого автора про залишковий мережевий папір (зауважте, що час тут заплутано йде зліва):
Але документ, зв'язаний вище, показує, що "широка" залишкова мережа з "лише" 16 шарами може перевершити "глибокі" з 150+ шарами. Якщо це правда, то вся точка наведеної фігури розпадається.
Або розгляньте Ба та Каруана, 2014, чи дійсно потрібно глибоким мережам бути глибоким? :
У цій роботі ми наводимо емпіричні докази того, що неглибокі сітки здатні вивчати ту саму функцію, що і глибокі сітки, а в деяких випадках з такою ж кількістю параметрів, що і глибокі сітки. Ми робимо це, спочатку підготуючи найсучаснішу глибоку модель, а потім навчимо неглибоку модель для імітації глибокої моделі. Мімічна модель навчається за допомогою схеми стиснення моделі, описаної в наступному розділі. Примітно, що за допомогою стиснення моделі ми можемо навчити неглибокі сітки настільки ж точними, як і деякі глибокі моделі, навіть якщо ми не в змозі навчити ці мілководні мережі бути настільки точними, як глибокі сітки, коли дрібні сітки навчаються безпосередньо на оригіналі мічені дані тренувань. Якщо неглибока сітка з такою ж кількістю параметрів, як і глибока сітка, може навчитися імітувати глибоку сітку з високою точністю,
Якщо це правда, це означатиме, що правильне пояснення - це швидше моя куля №2, а не №1 або №3.
Як я сказав --- ще ніхто насправді точно не знає.
Заключні зауваження
Обсяг прогресу, досягнутий у глибокому навчанні за останні ~ 10 років, справді дивовижний, але більшість цього прогресу була досягнута шляхом спроб та помилок, і нам все ще бракує дуже елементарного розуміння того , що саме змушує глибокі мережі працювати так добре. Навіть перелік речей, які люди вважають вирішальними для створення ефективної глибокої мережі, здається, змінюється кожні пару років.
Ренесанс глибокого навчання розпочався в 2006 році, коли Джеффрі Хінтон (який працював над нейронними мережами 20+ років без особливого інтересу з боку кого-небудь) опублікував декілька проривних робіт, що пропонують ефективний спосіб навчання глибоких мереж ( Науковий документ , Нейронний обчислювальний документ ) . Хитрість полягала в тому, щоб використовувати непідконтрольну попередню підготовку перед початком спуску по градієнту. Ці документи революціонізували поле, і кілька років люди думали, що ключовим є непідконтрольна попередня підготовка.
Тоді в 2010 році Мартенс показав, що глибокі нейронні мережі можуть бути навчені методами другого порядку (так звані методи, не містять гессіанців) і можуть перевершити мережі, навчені попередньою підготовкою: Глибоке навчання за допомогою оптимізації, не вимагає гессіанців . Потім у 2013 році Sutskever та ін. показав, що стохастичний градієнтний спуск за допомогою дуже розумних хитрощів може перевершити методи, що не містять гессіан: Про важливість ініціалізації та імпульсу в глибокому навчанні . Крім того, близько 2010 року люди зрозуміли, що використання випрямлених лінійних одиниць замість сигмоподібних одиниць робить величезну різницю для градієнтного спуску. Випадання з'явилося в 2014 році. Залишкові мережі з’явились у 2015 році. Люди продовжують розробляти все більш ефективні способи навчання глибоких мереж іте, що здавалося ключовим оглядом 10 років тому, сьогодні часто вважається неприємністю. Все це значною мірою залежить від спроб та помилок, і мало розуміння того, що змушує деякі речі так добре працювати, а інші - ні. Навчання глибоких мереж - це як велика сумка хитрощів. Успішні трюки зазвичай раціоналізуються постфактум.
Ми навіть не знаємо, чому глибокі мережі досягають плато продуктивності; Лише 10 років люди звинувачували місцеві мінімуми, але теперішня думка полягає в тому, що це не сенс (коли платоспроможність, градієнти, як правило, залишаються великими). Це такий основне питання про глибокі мережах, і ми навіть не знаємо цього .
Оновлення: це більш-менш тема розмови NIPS 2017 Алі Рахімі про машинне навчання як алхімія: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Ця відповідь була повністю переписана у квітні 2017 року, тому деякі коментарі нижче не стосуються більше.]