Чому нам доводиться нормалізувати вхід для штучної нейронної мережі?


151

Це головне питання щодо теорії нейронних мереж:

Чому ми повинні нормалізувати вхід для нейронної мережі?

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

Що буде, якщо дані не нормалізуються?


1
Я голосую, щоб закрити це питання поза темою, оскільки воно належить до статистики SE або AI SE.
nbro

Відповіді:


101

Це добре пояснюється тут .

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


2
Привіт, В MLP, чи не можуть стандартизувати функції при використанні постійної швидкості навчання, викликати перевищення / недокомпенсацію в корекціях зворотного розповсюдження для різних розмірів? Мені цікаво з наступного допису, чи це виключно для CNN чи чи MLP можуть поділитися цією проблемою: stats.stackexchange.com/questions/185853/…
Остін

Проблема: Градієнтний спуск опт. процес може зайняти набагато більше часу. Чому? Якщо функції мають різний масштаб (x1 = 0-1 і x2 = 0..1000), поверхня функції помилок може стати витягнутою. Значення: різні масштаби для різних димів (w1, w2). Але швидкість навчання є однаковою для всіх димів -> кроки в подовженому dim (w2) дуже малі, поки не досягне локальної хв. Проблема: Неможливо включити LR, оскільки він буде пропускати локальну хв в іншому затемненні (w1). Дивіться демо на youtube.com/watch?reload=9&v=UIp2CMI0748
Dekel

Ось лінійний приклад, де без масштабування все дуже погано: stackoverflow.com/q/59319643 . Будь-яка ідея чому?
Завжди слухання

61

У нейронних мережах добре не просто нормалізувати дані, а й масштабувати їх. Це призначено для швидшого наближення до глобальних мінімумів при появі помилок. Дивіться наступні фотографії: поверхня помилок до і після нормалізації

поверхня помилок до і після масштабування

Фотографії зроблені з курсу курсу про нейронні мережі. Автор курсу Джеффрі Хінтон.


14
Було б приємно, щоб ви вдячні автору написаної вами графіки. Графіка чітко взята з курсу курсу Джеффрі Хінтона .
Рікардо Крус

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

21

Деякі входи до NN можуть не мати "природного" значення діапазону значень. Наприклад, середнє значення може повільно, але постійно зростати з часом (наприклад, кількість записів у базі даних).

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

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


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

11

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

Точна поведінка нейронної мережі щодо аргументів поза доменом залежить від реалізації нейронної мережі. Але в цілому результат є марним, якщо аргументи не входять у домен.


16
Якщо ви скористаєтеся звичайною функцією активації (ReLu або Sigmoid), домен - це завжди весь простір R ^ n. Тому це не може бути причиною нормалізації даних.
Джокер123

1
Це також не пояснює, чому зображення нормалізуються, оскільки вони вже мають домен 0-255
DollarAkshay

4

Є 2 причини, чому нам доведеться нормалізувати функції введення, перш ніж подавати їх в нейронну мережу:

Причина 1 : Якщо a Featureу Datasetвеликому масштабі порівняно з іншими, то ця велика масштабована особливість стає домінуючою, і внаслідок цього прогнози нейронної мережі не будуть точними.

Приклад : Якщо ми враховуємо вік і зарплату, то вік буде двоцифровим, а зарплата може становити 7 або 8 цифр (1 мільйон тощо). У такому випадку заробітна плата буде домінувати в прогнозуванні нейронної мережі. Але якщо ми нормалізуємо ці функції, значення обох функцій будуть лежати в діапазоні від (0 до 1).

Причина 2 : Фронтальне розповсюдження нейронних мереж передбачає крапковий добуток ваг з особливостями введення. Отже, якщо значення дуже високі (для даних зображення та зображень, що не є зображеннями), обчислення результатів вимагає багато часу на обчислення, а також пам'яті. Те саме відбувається під час зворотного розповсюдження. Отже, модель перетворюється повільно, якщо входи не нормалізовані.

Приклад : Якщо ми виконуємо Класифікацію зображень, розмір зображення буде дуже величезним, оскільки значення кожного пікселя коливається від 0 до 255. Нормалізація в цьому випадку дуже важлива.

Нижче згадуються випадки, коли нормалізація дуже важлива:

  1. K-засоби
  2. K-Найближчі-Сусіди
  3. Аналіз основних компонентів (PCA)
  4. Спуск градієнта

2

Я вважаю, що відповідь залежить від сценарію.

Розглянемо NN (нейронна мережа) як оператор F, так що F (вхід) = вихід . У випадку, коли це відношення є лінійним, так що F (A * input) = A * вихід , то ви можете вибрати або залишити вхід / вихід ненормалізованим у їх необроблених формах, або нормалізувати обидва для усунення A. Очевидно, це припущення про лінійність є порушені в завданнях класифікації або майже будь-якій задачі, яка видає ймовірність, де F (A * input) = 1 * вихід

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

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

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


2

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

Розглянемо особливості x1 та x2, де від 0 до 1 та 0 до 1 мільйона відповідно. Виявляється, співвідношення для відповідних параметрів (скажімо, w1 і w2) також будуть великими.

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


1

Причина нормалізації необхідна в тому, що якщо ви подивитеся на те, як відбувається адаптаційний крок в одному місці в області функції, і ви просто перенесіть проблему в еквівалент того ж кроку, переведеного деяким великим значенням в деякому напрямку в домену, то ви отримаєте різні результати. Це зводиться до питання про адаптацію лінійного фрагмента до точки даних. Скільки повинен рухатися шматок, не обертаючись, і скільки він повинен повернутись у відповідь на той самий навчальний пункт? Немає сенсу змінювати процедуру адаптації в різних частинах домену! Тож необхідна нормалізація, щоб зменшити різницю в тренувальному результаті. У мене цього не було записано, але ви можете просто подивитися на математику для простої лінійної функції та того, як вона тренується однією навчальною точкою в двох різних місцях. Ця проблема, можливо, була виправлена ​​в деяких місцях, але я з ними не знайомий. У ALNs проблема була виправлена, і я можу надіслати вам папір, якщо ви пишете на wwarmstrong AT shaw.ca


-9

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

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