скільки прихованих шарів ?
модель з нульовими прихованими шарами дозволить вирішувати лінійно відокремлювані дані. Тож якщо ви вже знаєте, що ваші дані не є лінійно відокремленими, це не завадить перевірити це - навіщо використовувати складнішу модель, ніж вимагає завдання? Якщо це лінійно відокремлюється, то спрацює простіша техніка, але також зробить роботу і Perceptron.
Припускаючи, що ваші дані вимагають розділення нелінійною технікою, тоді завжди починайте з одного прихованого шару . Майже напевно, це все, що вам знадобиться. Якщо ваші дані можна розділити за допомогою MLP, то для цього MLP, ймовірно, потрібен лише один прихований шар. Існує теоретичне обгрунтування цього, але моя причина є суто емпіричною: багато складних проблем класифікації / регресії вирішуються за допомогою одношарових MLP, але я не пам'ятаю, щоб зустріти будь-які багатоприховані шари MLP, використовувані для успішного моделювання даних, -інше на дошках оголошень МЛ, підручниках з МС, наукових працях тощо. Вони, безумовно, існують, але обставини, які виправдовують їх використання, є емпірично досить рідкісними.
Скільки вузлів у прихованому шарі?
З навчальної літератури MLP. мій власний досвід і т. д. я збирав і часто покладаюся на кілька правил ( RoT ), і які я також вважав надійними керівниками (тобто, вказівки були точними, і навіть тоді, коли цього не було, це було зазвичай було зрозуміло, що робити далі):
RoT на основі поліпшення конвергенції:
Коли ви починаєте побудову моделі, помиліться на стороні більшої кількості вузлів у прихованому шарі.
Чому? По-перше, кілька зайвих вузлів у прихованому шарі, швидше за все, не принесуть ніякої шкоди - ваш MLP все одно зблизиться. З іншого боку, занадто мало вузлів у прихованому шарі може запобігти конвергенції. Подумайте про це таким чином, додаткові вузли забезпечують деяку надлишкову ємність - додаткові ваги для зберігання / вивільнення сигналу в мережу під час ітерації (навчання або побудова моделі). По-друге, якщо ви починаєте з додаткових вузлів у вашому прихованому шарі, то їх легко обрізати пізніше (під час проходження ітерації). Це звичайне явище, і для діагностики, що допомагають вам, є діагностичні методи (наприклад, діаграма Хінтона, яка є лише візуальним зображенням вагових матриць, «теплова карта» вагових значень).
RoT на основі розміру вхідного шару та розміру вихідного шару:
Велике правило полягає в тому, щоб розмір цього [прихованого] шару знаходився десь між розміром вхідного шару ... і розміром вихідного шару ....
Для обчислення кількості прихованих вузлів використовуємо загальне правило: (Кількість входів + виходів) x 2/3
RoT на основі основних компонентів:
Як правило, ми визначаємо стільки прихованих вузлів, скільки розмірів [основних компонентів], необхідних для збору 70-90% дисперсії набору вхідних даних .
І все ж автор NN FAQ називає ці Правила "нісенітницею" (буквально), оскільки вони: ігнорують кількість навчальних екземплярів, шум у цілях (значення змінних відповідей) та складність простору функцій.
На його думку (і мені завжди здавалося, що він знає, про що йдеться), вибирайте кількість нейронів у прихованому шарі, виходячи з того, чи включає ваш MLP якусь форму регуляризації чи ранню зупинку .
Єдина дієва методика оптимізації кількості нейронів у прихованому шарі:
Під час побудови моделі тестуйте нав’язливо; тестування виявить підписи "неправильної" мережевої архітектури. Наприклад, якщо ви почнете з MLP, який має прихований шар, що складається з невеликої кількості вузлів (які ви поступово збільшуватимете за потребою, виходячи з результатів тестів), ваша помилка навчання та узагальнення буде сильною причиною упередженості та недоотримання.
Потім збільшуйте кількість вузлів у прихованому шарі, по одному, поки похибка узагальнення не почне збільшуватися, на цей раз через перевитрату та велику дисперсію.
На практиці я роблю це так:
вхідний рівень : розмір мого вактора даних (кількість функцій у моїй моделі) + 1 для вузла зміщення, не враховуючи змінну відповіді, звичайно
вихідний шар : soley визначається моєю моделлю: регресія (один вузол) та класифікація (кількість вузлів, еквівалентна кількості класів, якщо припустити softmax)
прихований шар : для початку , один прихований шарз кількістю вузлів, рівних розміру вхідного шару. "Ідеальний" розмір швидше буде меншим (тобто деяка кількість вузлів між числом у вхідному шарі та кількістю у вихідному шарі), а не більшим - знову ж, це просто емпіричне спостереження, і основна маса цього спостереження - мій власний досвід. Якщо проект виправдовував необхідний додатковий час, тоді я починаю з одного прихованого шару, що складається з невеликої кількості вузлів, тоді (як я пояснив трохи вище) я додаю вузли до прихованого шару, по одному, обчислюючи узагальнення. помилка, помилка навчання, упередженість та відхилення. Коли помилка узагальнення зменшилась і перед тим, як вона знову почне збільшуватися, кількість вузлів у цій точці - це мій вибір. Дивіться малюнок нижче.