Чому нейронні мережі стають все глибшими, але не ширшими?


73

Останніми роками конволюційні нейронні мережі (або, можливо, глибокі нейронні мережі взагалі) стають все глибшими і глибшими: сучасні мережі переходять від 7 шарів ( AlexNet ) до 1000 шарів ( Залишкові мережі) в просторі 4 років. Причина підвищення продуктивності з більш глибокої мережі полягає в тому, що можна вивчити більш складну нелінійну функцію. Враховуючи достатню кількість навчальних даних, це дозволяє мережам легше розрізняти різні класи.

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

Отже, поки мережі стали "глибшими", вони не стали "ширшими". Чому це?


1
+1, але якщо бути справедливим, це не те, що ці 1000 шаруватих мереж є "найсучаснішим" у сенсі перевершити інші. Архівний документ, який ви пов’язали з повідомленнями про залишкову мережу із 152 шарами як поточний переможець у ImageNet.
амеба

3
Ви читали широкі залишкові мережі arxiv.org/abs/1605.07146 .... можливо, немає причин. Оптимізація невипуклої функції з градієнтним спуском не має теоретичного підґрунтя ... є просто проба і багато помилок :-)
seanv507

@ seanv507 Дуже цікаво, дякую за це посилання. До речі, ось дуже пов’язана тема: stats.stackexchange.com/questions/214360, і там є посилання на цю нитку reddit .
амеба


Дуже дуже пов'язані: stats.stackexchange.com/questions/182734 .
амеба

Відповіді:


87

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

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

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

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

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


+1. Будь-який коментар на arxiv.org/abs/1605.07146 ?
амеба

2
Я лише прокинув це, тому не можу сказати нічого авторитетного, але, схоже, автори виявили, що принаймні у випадку залишкової мережі широка (але все ж глибина 16 шарів!) Сітка перевершує вузьку, надзвичайно глибоку (1000 шарів ) чистий. Я не знаю багато про залишкові мережі, але згідно із вступом, здається, що складнощі в їх навчанні полягають у тому, що шари взагалі нічого не можуть навчитися і тим самим не дуже сприяти результату. Здається, що менше, але потужніші шари цього уникають. Чи стосується це інших видів мереж, я не знаю.
J. O'Brien Antognini

Чітка і лаконічна відповідь, молодець. @J
ctwardy

21

Я не думаю, що на ваші запитання є однозначна відповідь. Але я думаю, що звичайна мудрість полягає в наступному:

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

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

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

Це може частково пояснити успіх більш глибоких моделей із меншою кількістю параметрів: VGGNet (з 2014 р.) Має 16 шарів із параметрами ~ 140М, тоді як ResNet (з 2015 р.) Обіграв її 152 шарами, але лише ~ 2М параметри

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

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

Кожен "нейрон" у згортковому шарі має "сприйнятливе поле", яке є розміром і формою входів, що впливають на кожен вихід. Інтуїтивно кожне ядро ​​фіксує якесь співвідношення між вхідними даними. А маленькі ядра (які є загальними і бажанішими) мають невелике сприйнятливе поле, тому вони можуть надавати інформацію лише щодо місцевих відносин.

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

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


Частина глибинних мереж, що обмежується машиною Больцмана, є великим множником часу зближення. (afaict)
EngrStudent

4
КВМ не властиві глибокому навчанню. Багато (на сьогоднішній день більшість?) Успішних глибоких мереж не використовують УЗМ.
Борбей

3
Дякую за посилання на цей документ, я його раніше не бачив, і це виглядає дуже актуально.
J. O'Brien Antognini

@Borbei - Як вони забезпечують розділення функцій без RBM?
EngrStudent

1
+1. Будь-який коментар на arxiv.org/abs/1605.07146 ?
амеба

10

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

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

fCρAv2/2
Aρv

fiβixi

Однак, зробивши мережу більш глибокою, ви легко змусите вас до рівняння вище лише з двома шарами. Складніші функції потребують більше шару, тому поглиблення кількості шарів може стати способом вирішити багато проблем.


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

2
Мій приклад був лінійним, але він стосується більш широкого набору випадків. Ви припустили, що "приємна" функція, але багато хто не така приємна. Наприклад, коли я вибираю машину для придбання, чому мій алгоритм рішення буде приємною функцією?
Аксакал

2

dwO(dw2)

Чому ви можете намагатися обмежити кількість параметрів? З ряду причин:

  • Ви намагаєтесь уникнути перевитрати. (Хоча обмеження кількості параметрів є дуже тупим інструментом для досягнення цього.)
  • Ваше дослідження є більш вражаючим, якщо ви можете перевершити чужу модель, використовуючи однакову кількість параметрів.
  • Навчити свою модель набагато простіше, якщо модель (плюс параметри моменту, якщо ви використовуєте Адама) може вміститись у пам'ять одного GPU.
  • У реальних програмах життя оперативна пам’ять часто дорога при обслуговуванні моделей. Особливо це стосується запущених моделей, наприклад мобільного телефону, але іноді може застосовуватися навіть для обслуговування моделей із хмари.

O(dw2)w1,w2w1×w2(d2)w

(d2)w2+w(input layer width)+w(output layer width)=O(dw2).
1/wO(dw)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.