Скільки даних вам потрібно для звивистої нейронної мережі?


15

Якщо у мене є конволюційна нейронна мережа (CNN), яка має близько 1 000 000 параметрів, скільки тренувальних даних потрібно (припустимо, я роблю стохастичний градієнтний спуск)? Чи є якесь правило?

Додаткові зауваження: Коли я виконував стохастичний градієнтний спуск (наприклад, 64 патчів за 1 ітерацію), після ~ 10000 ітерацій точність класифікатора може доходити до приблизного постійного значення). Це означає, що не потрібно багато даних? Як і 100k-1000k даних.

Відповіді:


12

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

Хорошою справою було б помилку (або точність) кожного набору як функції ітераційного номера. Є два можливості для цього:

1) Помилка тренінгу сходить до значення, значно нижчого, ніж помилка тестування. Якщо це так, продуктивність вашого алгоритму майже напевно покращиться із збільшенням кількості даних.

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

Для більш ретельного та корисного ознайомлення з тим, як приймати ці рішення, я настійно рекомендую курс курсу Ендрю Нґ , зокрема уроки "Оцінювання алгоритму навчання" та "Упередження проти варіації".


3

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

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

Використовуючи весь набір даних та тренінг для 10 ітерацій, я отримав 93% точності на моєму еталоні, і це постійно покращується. Натомість, коли я повторював 10% набору даних за 100 ітерацій, я отримав 85%.

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


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

це означає, що якщо у мене невеликий набір даних, моя модель не збіжиться?
samsamara

3

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

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

Якщо ви шукали більш кількісну міру, я нещодавно знайшов це питання на кворі. Йдеться про автокодер, але, мабуть, він повинен бути застосовний і до вашого прикладу. Я не маю поняття, чи правильно це (будь ласка, повідомте мене), але я можу пояснити, що, наприклад, для MNIST, можна стверджувати, що ви намагаєтеся зменшити зображення максимум 28 * 28 * 8 * 10 000 = 62 720 000 біт ентропії до десяти класів в гарячому кодуванні з 10 * 10 * 10 000 = 1 000 000 біт ентропії. Оскільки нас цікавлять лише 1 000 000 біт ентропії на виході, ми можемо сказати, що з 1 000 000 параметрів кожен параметр являє собою один біт, який становить 1е-4 біт на зразок. Це означає, що вам знадобиться більше даних. Або у вас занадто багато параметрів, тому що, наприклад, зі 100 параметрами у вас є 10 000 біт на параметр і, отже, 1 біт на зразок. Однак,


Дякуємо за вашу пропозицію. Я думаю, що сьогодні люди придумують різну стратегію зменшення кількості даних для конкретного завдання.
RockTheStar

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.