Як вирішити архітектуру нейронної мережі?


20

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

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


Зазвичай ми експериментуємо, використовуючи свою інтуїцію; вважайте це гіперпараметром . Є способи вивчення архітектури, але я не знаю, наскільки вони практичні: blog.acolyer.org/2017/05/10/…
Emre

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


Це дуже цікаве запитання для відповіді (Дослідник почав працювати над вашим запитанням). Яка оптимальна архітектура для набору даних A та набору даних B. Будь ласка, прочитайте нижче документ, який намагався відповісти на ваше запитання. Ласкаво просимо у світ пошуку нейронної архітектури (NAS). arxiv.org/abs/1611.01578
iDeepVision

Відповіді:


17

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

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

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

Ви іноді можете прочитати про "великі правила", якими користуються дослідники, починаючи дизайн нейронної мережі з нуля. Ці речі можуть спрацювати з вашими проблемами чи ні, але вони принаймні мають перевагу в тому, щоб почати проблему. Я бачив варіанти:

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

  • Почніть просто і нарощуйте складність, щоб побачити, що покращує просту мережу.

  • Спробуйте різну глибину мережі, якщо ви очікуєте, що вихід буде добре пояснений вхідними даними, але зі складним співвідношенням (на відміну від просто притаманного шуму).

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

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


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


Це чудове пояснення. Дякую. Мені також цікаво, чи є хороший спосіб вирішити, який підхід МЛ використовувати? Ви згадали, що може бути кращий спосіб, ніж нейронна мережа, але як це легко визначити?
user7677413

@ user7677413: те саме стосується. Ви повинні спробувати і побачити, хоча досвід може дати вам посібник із знайомих проблем.
Ніл Слейтер

1
коли тоді потрібна нейромережа?
user7677413

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

1
@ user7677413 Я думаю, ви робите припущення, що не існує 40 років глибоких і глибоких досліджень машинного навчання. Це здається, що ти просто дряпаєш поверхню. Я рекомендую знайти підручник і побачити, як це все пов'язано разом, що допоможе побудувати вашу інтуїцію для багатьох алгоритмів машинного навчання.
Алекс Л
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.