Дуже хороше запитання, оскільки точної відповіді на це питання поки немає. Це активне поле досліджень.
Зрештою, архітектура вашої мережі пов'язана з розмірністю ваших даних. Оскільки нейронні мережі є універсальними апроксиматорами, якщо ваша мережа досить велика, вона має можливість підходити до ваших даних.
Єдиний спосіб по-справжньому дізнатися, яка архітектура працює найкраще - спробувати їх усі, а потім вибрати найкращу. Але, звичайно, з нейронними мережами це досить складно, оскільки для кожної моделі потрібен досить тривалий час для тренування. Що деякі люди роблять, це спочатку навчити модель, яка "занадто велика" за призначенням, а потім підрізати її, видаливши ваги, які не дуже сприяють мережі.
Що робити, якщо моя мережа "занадто велика"
Якщо ваша мережа занадто велика, вона може або перевантажуватись, або намагатися сходитись. Інтуїтивно зрозуміло, що ваша мережа намагається пояснити ваші дані більш складним способом, ніж слід. Це як спробувати відповісти на запитання, на яке можна було б відповісти одним реченням, на 10-сторінковому нарисі. Це може бути складно скласти таку довгу відповідь, і може бути багато непотрібних фактів. ( Див. Це питання )
Що робити, якщо моя мережа "занадто мала"
З іншого боку, якщо ваша мережа занадто мала, вона буде корисною для ваших даних і, отже,. Було б як відповісти одним реченням, коли ви мали б написати есе на 10 сторінок. Як би добре не було вашої відповіді, ви пропустите деякі відповідні факти.
Оцінка розміру мережі
Якщо ви знаєте розмірність своїх даних, ви можете сказати, чи ваша мережа досить велика. Щоб оцінити розмірність даних, ви можете спробувати обчислити її ранг. Це основна ідея того, як люди намагаються оцінити розмір мереж.
Однак це не так просто. Дійсно, якщо ваша мережа має бути 64-мірною, ви будуєте один прихований шар розміром 64 або два шари розміром 8? Тут я збираюся дати вам інтуїцію щодо того, що буде в будь-якому випадку.
Заглиблюючись
Заглиблюватися в глибину означає додавати більше прихованих шарів. Це означає, що вона дозволяє мережі обчислювати більш складні функції. Наприклад, у конволюційних нейронних мережах часто було показано, що перші кілька шарів представляють "низькорівневі" функції, такі як краї, а останні шари - "високого рівня", такі як грані, частини тіла тощо.
Зазвичай вам потрібно заглибитися, якщо ваші дані дуже неструктуровані (як зображення) і їх потрібно обробити трохи, перш ніж корисна інформація може бути вилучена з неї.
Ідемо ширше
Поглибити глибше означає створити більш складні функції, а "ширше" просто означає створити більше цих функцій. Можливо, вашу проблему можна пояснити дуже простими функціями, але їх має бути багато. Зазвичай шари стають вужчими до кінця мережі з тієї простої причини, що складні функції несуть більше інформації, ніж прості, і тому вам не потрібно стільки.