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